@sailfish-ai/sf-veritas 0.3.2 → 0.4.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/dist/{contextManager-CZy0w11U.js → contextManager-C2ONL8XY.js} +43 -37
- package/dist/contextManager-CL0Qs7uI.cjs +1 -0
- package/dist/plugins/funcspanEsbuildPlugin.cjs +1 -1
- package/dist/plugins/funcspanEsbuildPlugin.mjs +1 -1
- package/dist/plugins/funcspanRollupPlugin.cjs +1 -1
- package/dist/plugins/funcspanRollupPlugin.mjs +1 -1
- package/dist/plugins/funcspanTscPlugin.cjs +1 -1
- package/dist/plugins/funcspanTscPlugin.mjs +1 -1
- package/dist/plugins/funcspanVitePlugin.cjs +1 -1
- package/dist/plugins/funcspanVitePlugin.mjs +1 -1
- package/dist/plugins/funcspanWebpackPlugin.cjs +1 -1
- package/dist/plugins/funcspanWebpackPlugin.mjs +1 -1
- package/dist/{runtimeConfig-ButdW4zP.js → runtimeConfig-BUJ13zxm.js} +1 -1
- package/dist/{runtimeConfig-C4_zc4Zg.cjs → runtimeConfig-xahsyRmN.cjs} +1 -1
- package/dist/sf-veritas.cjs +13 -13
- package/dist/sf-veritas.mjs +1643 -606
- package/dist/types/constants.d.ts +6 -0
- package/dist/types/contextManager.d.ts +15 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/patches/asyncQueues/_stubs/bee-queue.d.ts +10 -0
- package/dist/types/patches/asyncQueues/_stubs/rabbitmq.d.ts +11 -0
- package/dist/types/patches/asyncQueues/_stubs/sqs.d.ts +9 -0
- package/dist/types/patches/asyncQueues/asyncQueueTracer.d.ts +127 -0
- package/dist/types/patches/asyncQueues/asyncQueues.bench.d.ts +1 -0
- package/dist/types/patches/asyncQueues/bullmq.d.ts +27 -0
- package/dist/types/patches/asyncQueues/bullmqPro.d.ts +3 -0
- package/dist/types/patches/asyncQueues/confluentKafkaJs.d.ts +3 -0
- package/dist/types/patches/asyncQueues/index.d.ts +15 -0
- package/dist/types/patches/asyncQueues/kafkajs.d.ts +7 -0
- package/dist/types/setupConfig.d.ts +1 -0
- package/dist/worker-pool-capture.cjs +1 -1
- package/dist/worker-pool-capture.mjs +1 -1
- package/dist/{workerPoolSpanCapture-BUFN_RMW.cjs → workerPoolSpanCapture-C3T98kWy.cjs} +1 -1
- package/dist/{workerPoolSpanCapture-BomWTMM2.js → workerPoolSpanCapture-DL8wfDIr.js} +1 -1
- package/package.json +2 -1
- package/dist/contextManager-qXvO_a5y.cjs +0 -1
package/dist/sf-veritas.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./contextManager-CL0Qs7uI.cjs"),v=require("./workerPoolSpanCapture-C3T98kWy.cjs"),P=require("./runtimeConfig-xahsyRmN.cjs"),dt=require("node:module"),$e=require("fs"),x=require("http"),V=require("https"),ft=require("./source-map-rHHEdpre.cjs"),pt=require("fs/promises"),gt=require("path"),ht=require("glob"),yt=require("async_hooks"),X=require("worker_threads"),re=require("./funcSpanTransformer-D0W2t41q.cjs");function _e(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const mt=_e($e),we=_e(pt),B=_e(gt);class z extends v.BaseTransmitter{constructor(){super(),this.setOperationName("IdentifyServiceDetails")}async doSend(t){if(!p.getConfig().serviceIdentificationReceived)try{this.send()}catch(e){p.getConfig().sfDebug&&console.error(" Error during service identification:",e)}}async send(){const t=`
|
|
2
2
|
${this.queryType} ${this.operationName}(
|
|
3
3
|
$apiKey: String!,
|
|
4
4
|
$timestampMs: String!,
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
serviceRole: $serviceRole,
|
|
37
37
|
)
|
|
38
38
|
}
|
|
39
|
-
`,
|
|
39
|
+
`,e=p.getConfig(),o=this.getVariables({serviceIdentifier:e.serviceIdentifier,serviceVersion:e.serviceVersion,library:e.packageLibraryType,version:e.version,serviceAdditionalMetadata:e.serviceAdditionalMetadata,gitSha:e.gitSha||"",gitOrg:e.gitOrg||void 0,gitRepo:e.gitRepo||void 0,gitProvider:e.gitProvider||void 0,serviceDisplayName:e.serviceDisplayName||void 0,framework:e.framework||void 0,additionalFrameworks:e.additionalFrameworks.length>0?e.additionalFrameworks:void 0,serviceRole:e.serviceRole||void 0});v.nonBlockingPost(this.endpoint,this.operationName,t,o)}}class St extends v.BaseTransmitter{serviceIdentifier=new z;constructor(){super(),this.setOperationName("CollectMetadata")}identifyStarted=!1;startBackgroundIdentify(){if(this.identifyStarted)return;this.identifyStarted=!0,this.serviceIdentifier.doSend({});const t=setInterval(()=>{p.getConfig().serviceIdentificationReceived?clearInterval(t):this.serviceIdentifier.doSend({})},5e3);t&&typeof t=="object"&&"unref"in t&&t.unref()}async doSend(t,e,o,r){this.startBackgroundIdentify(),this.send(t,e,o,r)}async send(t,e,o,r){if(!e&&!r)throw new Error('Must pass in either traits or traits_json to "add_or_update_traits"');let s=[];if(!r){const l=P.serializeJsonWithExclusions(e);r=l.traitsJson,s=l.excludedFields}const d=this.getVariables({userId:t,traitsJson:r,excludedFields:s,override:o,library:p.getConfig().packageLibraryType,version:p.getConfig().version});v.nonBlockingPost(this.endpoint,this.operationName,this.getQuery(),d)}getQuery(){return`
|
|
40
40
|
mutation ${this.operationName}($apiKey: String!, $serviceUuid: String!, $sessionId: String!, $userId: String!, $traitsJson: String!, $excludedFields: [String!]!, $library: String!, $timestampMs: String!, $version: String!, $override: Boolean!) {
|
|
41
41
|
${this.queryName}(apiKey: $apiKey, serviceUuid: $serviceUuid, sessionId: $sessionId, userId: $userId, traitsJson: $traitsJson, excludedFields: $excludedFields, library: $library, timestampMs: $timestampMs, version: $version, override: $override)
|
|
42
42
|
}
|
|
43
|
-
`}}class
|
|
43
|
+
`}}class ke{constructor(t){this.apiKey=t,this.metadataTransmitter=new St}metadataTransmitter;identify(t,e,o,r=!1){e||o?this.addOrUpdateMetadata(t,e,o,r):this.addOrUpdateMetadata(t,{},void 0,r)}addOrUpdateMetadata(t,e={},o,r=!1){if(!e&&!o)throw new Error('Must pass in either traits or traitsJson to "addOrUpdateMetadata"');p.getConfig().sfDebug&&console.log(" [[DEBUG - addOrUpdateMetadata]] Starting operation"),p.getConfig().sfDebug&&console.log(" addOrUpdateMetadata...SENDING DATA...",t,e,o),this.metadataTransmitter.doSend(t,e,r,o)}}class Ce extends v.BaseTransmitter{serviceIdentifier=new z;constructor(){super()}identifyStarted=!1;startBackgroundIdentify(){if(this.identifyStarted)return;this.identifyStarted=!0,this.serviceIdentifier.doSend({});const t=setInterval(()=>{p.getConfig().serviceIdentificationReceived?clearInterval(t):this.serviceIdentifier.doSend({})},5e3);t&&typeof t=="object"&&"unref"in t&&t.unref()}async doSend(t){this.startBackgroundIdentify(),this.send(t)}async send(t){try{const e=Array.isArray(t)?t:[t,"default",null,null],o=this.getVariables({contents:e[0],level:e[1],sourceFile:e[2]||void 0,sourceLine:e[3]||void 0});v.nonBlockingPost(this.endpoint,this.operationName,this.getQuery(),o)}catch(e){p.getConfig().sfDebug&&console.error("🚨 Error in send():",e)}}getQuery(){return`
|
|
44
44
|
${this.queryType} ${this.operationName}(
|
|
45
45
|
$apiKey: String!,
|
|
46
46
|
$serviceUuid: String!,
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
sourceLine: $sourceLine
|
|
65
65
|
)
|
|
66
66
|
}
|
|
67
|
-
`}}class
|
|
67
|
+
`}}class bt extends v.BaseTransmitter{serviceIdentifier=new z;supplementalFields={};setSupplementalFields(t){this.supplementalFields={...this.supplementalFields,...t}}normalizedSupplementalForGraphQL(){const{isFromLocalService:t}=this.supplementalFields,e={};return t!==void 0&&(e.isFromLocalService=t),e}constructor(){super(),this.setOperationName("CollectExceptions")}identifyStarted=!1;startBackgroundIdentify(){if(this.identifyStarted)return;this.identifyStarted=!0,this.serviceIdentifier.doSend({});const t=setInterval(()=>{p.getConfig().serviceIdentificationReceived?clearInterval(t):this.serviceIdentifier.doSend({})},5e3);t&&typeof t=="object"&&"unref"in t&&t.unref()}async doSend(t,e){this.startBackgroundIdentify(),this.send(t,e)}async send(t,e){p.getConfig().sfDebug&&console.log(" SENDING EXCEPTION...");const o=JSON.stringify(P.CustomJSONEncoderForFrameInfo.encode(e)),r=this.normalizedSupplementalForGraphQL(),s=this.getVariables({exceptionMessage:t,traceJson:o,reentrancyGuardPreactive:!1,library:p.getConfig().packageLibraryType,version:p.getConfig().version,...r});v.nonBlockingPost(this.endpoint,this.operationName,this.getQuery(),s)}getQuery(){return`
|
|
68
68
|
mutation ${this.operationName}(
|
|
69
69
|
$apiKey: String!,
|
|
70
70
|
$serviceUuid: String!,
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
parentSpanId: $parentSpanId
|
|
93
93
|
)
|
|
94
94
|
}
|
|
95
|
-
`}}const
|
|
95
|
+
`}}const Q="X-Sf3-Rid",Ue="X-Sf4-Prid",Pe="getting request source code";var ee=(n=>(n.UNKNOWN="unknown",n.ANONYMOUS="anonymous",n.NOT_CAPTURED="not captured",n))(ee||{});const Fe="http:",It=dt.createRequire(require("node:url").pathToFileURL(__filename).href);let De=!1;function vt(){const n=p.getConfig().sfDebug;if(De)return void(n&&P.internalLog("[patchNodeHttpInbound] Already installed, skipping."));let t;De=!0;try{t=It("node:http"),n&&P.internalLog("[patchNodeHttpInbound] node:http required successfully.")}catch(r){return void P.internalError("Failed to require node:http:",r)}if(!t?.Server?.prototype)return void(n&&P.internalLog("[patchNodeHttpInbound] http.Server.prototype not found."));const e=t.Server.prototype,o=e.emit;o&&!e.__sf_inbound_patched__?(Object.defineProperty(e,"__sf_inbound_patched__",{value:!0,enumerable:!1,configurable:!1,writable:!1}),n&&P.internalLog("[patchNodeHttpInbound] Patching http.Server.prototype.emit."),e.emit=function(r,...s){if(r!=="request")return n&&P.internalLog(`[patchNodeHttpInbound] Passing through event: ${r}`),o.call(this,r,...s);const d=s[0],l=s[1],c=(function(m){const g={};if(!m)return g;for(const[y,S]of Object.entries(m))S!=null&&(Array.isArray(S)?g[y.toLowerCase()]=S.join(", "):g[y.toLowerCase()]=String(S));return g})(d?.headers),i=c["x-sf3-rid"],u=c["x-sf3-functionspancaptureoverride"];n&&(P.internalLog("[patchNodeHttpInbound] Intercepted request event."),P.internalLog("[patchNodeHttpInbound] Inbound headers:",c),P.internalLog("[patchNodeHttpInbound] Trace header:",i),P.internalLog("[patchNodeHttpInbound] FuncSpan override header:",u));const a=p.ContextManager.getInstance();a.setTraceId(i);const f=a.getTraceId();n&&P.internalLog("[patchNodeHttpInbound] Context traceId set:",f);const h=()=>a.runWith({inboundHeaders:c,...i?{traceId:i}:{}},()=>{i&&a.setTraceId(i),n&&P.internalLog("[patchNodeHttpInbound] Running request handler in context.");const m=()=>{n&&P.internalLog("[patchNodeHttpInbound] Response finished/closed for traceId:",a.getTraceId())};return l.on("finish",m),l.on("close",m),o.call(this,r,d,l)});if(!u)return h();try{return v.funcspanOverrideStorage.run(u,()=>h())}catch{return h()}}):n&&P.internalLog("[patchNodeHttpInbound] Already patched, skipping.")}const Ne=new Map;function oe(n,t){const e=`${n}|${t}`;let o=Ne.get(e);return o||(o=new RegExp(n,t),Ne.set(e,o)),o}function ie(n,t){let e,o;if(typeof n=="string"?e=n:typeof URL<"u"&&n instanceof URL?e=n.href:typeof Request<"u"&&n instanceof Request?e=n.url:n!=null&&typeof n.toString=="function"&&(e=n.toString()),!e)return!1;try{o=new URL(e,"http://localhost/")}catch{return!1}const{hostname:r,pathname:s,port:d,protocol:l}=o;if(!/^https?:$/.test(l))return!1;const c=r.startsWith("www.")?r.slice(4).toLowerCase():r.toLowerCase();return t.some(i=>{const u=String(i||"").replace(/^[a-zA-Z]+:\/\//,"");if(!u)return!1;let[a,f]=u.split("/",2),h="";a.includes(":")&&([a,h]=a.split(":"));const m=oe(`^${a.replace(/\./g,"\\.").replace(/\*/g,".*")}$`,"i"),g=c.startsWith("www.")?c.slice(4):c;if(h&&d!==h)return!1;if(a.startsWith("*.")){const y=a.slice(2).toLowerCase();return c===y||g===y||c.endsWith("."+y)?f?oe(`^/${f.replace(/\*/g,".*").replace(/\/$/,"")}`,"i").test(s):!0:!1}return!m.test(g)&&!m.test(c)?!1:f?oe(`^/${f.replace(/\*/g,".*").replace(/\/$/,"")}`,"i").test(s):!0})}class Et extends Ce{constructor(){super(),this.setOperationName("DomainsToNotPassHeaderTo")}async doSend(t){this.send(t)}async send(t){const e=`
|
|
96
96
|
${this.queryType} ${this.operationName}(
|
|
97
97
|
$apiKey: String!,
|
|
98
98
|
$serviceUuid: String!,
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
domains: $domains
|
|
105
105
|
)
|
|
106
106
|
}
|
|
107
|
-
`,
|
|
107
|
+
`,o={apiKey:this.apiKey,serviceUuid:this.serviceUUID,domains:t};v.nonBlockingPost(this.endpoint,this.operationName,e,o)}}class $t extends v.BaseTransmitter{serviceIdentifier=new z;constructor(){super(),this.setOperationName("CollectNetworkHops")}identifyStarted=!1;startBackgroundIdentify(){if(this.identifyStarted)return;this.identifyStarted=!0,this.serviceIdentifier.doSend({});const t=setInterval(()=>{p.getConfig().serviceIdentificationReceived?clearInterval(t):this.serviceIdentifier.doSend({})},5e3);t&&typeof t=="object"&&"unref"in t&&t.unref()}async doSend(t){this.startBackgroundIdentify(),this.send(t)}async send(t){const{name:e,column:o,line:r,entrypoint:s,retryWithoutTraceId:d}=t,l=this.getVariables({name:e,column:o,line:r,entrypoint:s,retryWithoutTraceId:d});v.nonBlockingPost(this.endpoint,this.operationName,this.getQuery(),l)}getQuery(){return`
|
|
108
108
|
mutation ${this.operationName}(
|
|
109
109
|
$apiKey: String!,
|
|
110
110
|
$sessionId: String!,
|
|
@@ -128,15 +128,15 @@
|
|
|
128
128
|
${this.operationName==="CollectNetworkHops"?", retryWithoutTraceId: $retryWithoutTraceId":""}
|
|
129
129
|
)
|
|
130
130
|
}
|
|
131
|
-
`}}class
|
|
131
|
+
`}}class Ze extends v.BaseTransmitter{serviceIdentifier=new z;constructor(){super(),this.setOperationName("CollectNetworkRequest")}identifyStarted=!1;startBackgroundIdentify(){if(this.identifyStarted)return;this.identifyStarted=!0,this.serviceIdentifier.doSend({});const t=setInterval(()=>{p.getConfig().serviceIdentificationReceived?clearInterval(t):this.serviceIdentifier.doSend({})},5e3);t&&typeof t=="object"&&"unref"in t&&t.unref()}async doSend(t){this.startBackgroundIdentify(),this.send(t)}getQuery(){return`
|
|
132
132
|
mutation ${this.operationName}(
|
|
133
133
|
$data: NetworkRequestInput!
|
|
134
134
|
) {
|
|
135
135
|
${this.queryName}(
|
|
136
136
|
data: $data)
|
|
137
137
|
}
|
|
138
|
-
`}async send(
|
|
139
|
-
`).slice(1),u=[];for(const l of s)if(!(l.includes("node:internal")||l.includes("internal/modules")||l.includes("internal/process")||l.includes("node_modules")||l.includes(".next/server/chunks")||l.includes("RequestInterceptor")||l.includes("contextManager")||l.includes("setupConfig"))&&(u.push(l.trim()),u.length>=t))break;for(const l of u){const c=this.parseStackFrame(l);c?(async()=>{const{originalPos:y}=await this.getOriginalPosition(c.filePath,c.line,c.column);if(y){o.getConfig().sfDebug&&console.log("[RequestInterceptor] First user code line:",y);const v={line:y.line?.toString()||L.UNKNOWN,column:y.column?.toString()||L.NOT_CAPTURED,name:y.name||L.NOT_CAPTURED,entrypoint:y.source,retryWithoutTraceId:i};e.doSend(v)}})():o.getConfig().sfDebug&&console.error("Could not parse stack line:",l)}}addReentrancyGuardHeaders(e){e.set(this.HEADER_LOG_GUARD,"true"),e.set(this.HEADER_PRINT_GUARD,"true"),e.set(this.HEADER_EXCEPTION_GUARD,"true")}shouldPropagateHeaders(e){const t=o.getConfig(),i=t.domainsToPropagateHeadersTo,n=t.domainsToNotPropagateHeadersTo||[],a=Array.from(o.DEFAULT_DOMAINS_TO_EXCLUDE);return!!M(e,i)&&!(n.length>0&&M(e,n))&&!M(e,a)}addTracingHeaders(e,t){const i=this.shouldPropagateHeaders(t);if(i)this.addTracingHeader(e,t);else if(o.getConfig().sfDebug){let n=t;try{n=new URL(t).hostname}catch{}console.error(`[RequestInterceptor] Excluded domain: ${n}`)}return i}deriveTraceBaseAndParent(e){const t=e.split("/").filter(Boolean);return t.length<2?{base:e,parent:e}:{base:`${t[0]}/${t[1]}`,parent:e}}addTracingHeader(e,t){const i=g.getFuncspanOverride();if(i){const s=g.parseHeaderOverride(i);if(s&&s.sample_rate===0)return void(o.getConfig().sfDebug&&console.log(`[RequestInterceptor] Function span tracking disabled (sample_rate=0), skipping tracing header for ${t}`))}const n=this.contextManager.getOrSetSfTraceId(),{base:a,parent:p}=this.deriveTraceBaseAndParent(n),d=o.v4();e.set(this.HEADER_TRACING,`${a}/${d}`),e.set(Y,p),o.getConfig().sfDebug&&console.log(`[RequestInterceptor] Added tracing header for ${t}`)}patchFetch(e,t){const i=globalThis.fetch;typeof i=="function"?globalThis.fetch=async(n,a)=>{const p=new Headers(a?.headers);if(p.get(this.HEADER_LOG_GUARD)==="true"||p.get(this.HEADER_PRINT_GUARD)==="true"||p.get(this.HEADER_EXCEPTION_GUARD)==="true")return i(n,a);this.captureFirstUserLines(e);const d=Date.now();let s,u="GET";if(typeof n=="string"||n instanceof URL)s=n.toString(),u=(a?.method||"GET").toUpperCase();else{if(!(n instanceof Request))return o.getConfig().sfDebug&&console.error("[Sailfish RequestInterceptor] Invalid fetch input."),i(n,a);s=n.url,u=n.method.toUpperCase(),n.headers.forEach((m,w)=>{p.set(w,m)})}o.getConfig().sfDebug&&console.log("[RequestInterceptor] Fetching request to:",s);let l="unknown";try{l=new URL(s).hostname}catch{return o.getConfig().sfDebug&&console.warn(`[RequestInterceptor] Could not parse URL '${s}' — passing through without tracing headers.`),i(n,a)}const c=new Headers(p),y=this.addTracingHeaders(p,s),v=m=>n instanceof Request?[new Request(n,{...a||{},headers:m}),void 0]:[s,{...a,headers:m}],I=o.getConfig().retryOnClientError;let h,f=!1;try{const[m,w]=v(p);if(h=await i(m,w),y&&x(u,I)&&B.includes(h.status)){const[b,_]=v(c);h=await i(b,_),f=!0;try{this.captureFirstUserLines(e,10,f)}catch(C){o.getConfig().sfDebug&&console.error("[RequestInterceptor] captureFirstUserLines (retry) failed:",C)}}else try{this.contextManager.addSupportedDomains(l)}catch(b){o.getConfig().sfDebug&&console.error("[RequestInterceptor] addSupportedDomains failed:",b)}}catch(m){const w=Date.now();o.getConfig().sfDebug&&console.error(`[RequestInterceptor] Fetch failed: ${s}, Error: ${m}, Duration: ${w-d}ms`);try{const{sessionId:b,pageVisitId:_,requestId:C}=this.extractIdsFromTraceHeader(p),T=o.getConfig();t.doSend({apiKey:T.apiKey,requestId:C,pageVisitId:_,recordingSessionId:b,serviceUuid:T.serviceUUID,timestampStart:d.toString(),timestampEnd:w.toString(),responseCode:0,success:!1,error:m instanceof Error?m.message:typeof m=="string"?m:JSON.stringify(m),url:s,method:u,retryWithoutTraceId:f,parentSpanId:o.getCurrentFunctionSpanId()})}catch(b){o.getConfig().sfDebug&&console.error("[RequestInterceptor] Error telemetry send failed:",b)}throw m}const $=Date.now();try{o.getConfig().sfDebug&&console.log(`[RequestInterceptor] Fetch completed: ${s}, Status: ${h.status}, Duration: ${$-d}ms`);const{sessionId:m,pageVisitId:w,requestId:b}=this.extractIdsFromTraceHeader(p),_=o.getConfig(),C={apiKey:_.apiKey,requestId:b,pageVisitId:w,recordingSessionId:m,serviceUuid:_.serviceUUID,timestampStart:d.toString(),timestampEnd:$.toString(),responseCode:h.status,success:!0,error:null,url:s,method:u,retryWithoutTraceId:f,parentSpanId:o.getCurrentFunctionSpanId()};if(_.captureRequestHeaders){const S={};p.forEach((N,D)=>{S[D]=N}),C.requestHeaders=S}if(_.captureResponseHeaders){const S={};h.headers.forEach((N,D)=>{S[D]=N}),C.responseHeaders=S}if(_.captureRequestBody&&a?.body){const S=a.body,N=_.requestBodyLimitBytes;try{if(typeof S=="string")C.requestBody=S.length>N?S.substring(0,N)+"...[truncated]":S;else if(S instanceof URLSearchParams){const D=S.toString();C.requestBody=D.length>N?D.substring(0,N)+"...[truncated]":D}else if(typeof ArrayBuffer<"u"&&(S instanceof ArrayBuffer||ArrayBuffer.isView(S))){const D=S.byteLength??S.byteLength;C.requestBody=`[binary body, ${D} bytes — not captured]`}else if(typeof Blob<"u"&&S instanceof Blob)C.requestBody=`[Blob, ${S.size} bytes, type=${S.type||"unknown"} — not captured]`;else if(typeof FormData<"u"&&S instanceof FormData)C.requestBody="[FormData — not captured]";else if(typeof ReadableStream<"u"&&S instanceof ReadableStream)C.requestBody="[ReadableStream — not captured]";else{const D=JSON.stringify(S);D&&D!=="{}"&&(C.requestBody=D.length>N?D.substring(0,N)+"...[truncated]":D)}}catch{}}let T;if(_.captureResponseBody){const S=(h.headers.get("content-type")||"").toLowerCase();if(!S||S.includes("json")||S.includes("xml")||S.includes("text/")||S.includes("javascript")||S.includes("ecmascript")||S.includes("x-www-form-urlencoded")||S.includes("application/graphql")){const N=h.clone(),D=_.responseBodyLimitBytes;T=(async()=>{try{const q=await N.text(),me=q.length>D?q.substring(0,D)+"...[truncated]":q;try{t.doSend({...C,responseBody:me})}catch{}}catch{}})(),T.catch(()=>{})}else C.responseBody=`[non-text body, content-type=${S} — not captured]`}T||t.doSend(C)}catch(m){o.getConfig().sfDebug&&console.error("[RequestInterceptor] Post-fetch telemetry failed (response still returned):",m)}return h}:o.getConfig().sfDebug&&console.error("[RequestInterceptor] Fetch not available.")}setHeader(e,t,i){e instanceof Headers?e.set(t,i):e[t]=i}addTracingHeadersToPlainObject(e,t){const i=this.shouldPropagateHeaders(t);if(i){const n=g.getFuncspanOverride();if(n){const u=g.parseHeaderOverride(n);if(u&&u.sample_rate===0)return o.getConfig().sfDebug&&console.log(`[RequestInterceptor] Function span tracking disabled (sample_rate=0), skipping tracing header for ${t}`),!1}const a=this.contextManager.getOrSetSfTraceId(),{base:p,parent:d}=this.deriveTraceBaseAndParent(a),s=o.v4();e[this.HEADER_TRACING]=`${p}/${s}`,e[Y]=d,o.getConfig().sfDebug&&console.log(`[RequestInterceptor] Added tracing header for ${t}`)}else if(o.getConfig().sfDebug){let n=t;try{n=new URL(t).hostname}catch{}console.error(`[RequestInterceptor] Excluded domain: ${n}`)}return i}patchHttp(e,t){if(o.getConfig().sfDebug&&console.log("[RequestInterceptor] Initializing HTTP/HTTPS request patch..."),!P||typeof P.request!="function")return void(o.getConfig().sfDebug&&console.log("[RequestInterceptor] HTTP/HTTPS not available."));const i=P.request.bind(P),n=k.request.bind(k),a=(s,u,l,c=ee)=>{let y,v;if(typeof s=="string"||s instanceof URL){const I=typeof s=="string"?new URL(s):s;y={...typeof u=="object"&&u!==null?u:{},protocol:I.protocol||c,hostname:I.hostname,port:I.port||void 0,path:I.pathname+I.search},v=typeof u=="function"?u:l}else y={...s},y.protocol||(y.protocol=c),v=typeof u=="function"?u:void 0;return y.headers||(y.headers={}),[y,v]},p=(s,u,l)=>{const[c,y]=a(s,u,l,ee);try{const f=`${c.protocol}//${c.hostname}`;this.addTracingHeadersToPlainObject(c.headers,f),this.captureFirstUserLines(e)}catch(f){o.getConfig().sfDebug&&console.error("[RequestInterceptor] Error while processing HTTP request options:",f)}const v=(c.method||"GET").toUpperCase(),I=o.getConfig().retryOnClientError,h=(f,$,m)=>{try{const{sessionId:w,pageVisitId:b,requestId:_}=this.extractIdsFromTraceHeader(c.headers);t.doSend({apiKey:o.getConfig().apiKey,requestId:_,pageVisitId:b,recordingSessionId:w,serviceUuid:o.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:f.statusCode||0,success:!!f.statusCode&&f.statusCode<400,error:null,url:$,method:v,retryWithoutTraceId:m,parentSpanId:o.getCurrentFunctionSpanId()})}catch{}y?.(f)};return i(c,f=>{const $=`${c.protocol}//${c.hostname}`;let m=!1;try{m=this.shouldPropagateHeaders($)}catch{m=!1}if(m&&x(v,I)&&B.includes(f.statusCode||0)){f.resume();try{const{sessionId:b,pageVisitId:_,requestId:C}=this.extractIdsFromTraceHeader(c.headers);t.doSend({apiKey:o.getConfig().apiKey,requestId:C,pageVisitId:_,recordingSessionId:b,serviceUuid:o.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:f.statusCode||0,success:!1,error:null,url:$,method:v,retryWithoutTraceId:!1,parentSpanId:o.getCurrentFunctionSpanId()})}catch{}try{this.captureFirstUserLines(e,10,!0)}catch{}const w={...c,headers:{...c.headers}};return delete w.headers[this.HEADER_TRACING],void i(w,b=>{h(b,$,!0)}).end()}h(f,$,!1)})},d=(s,u,l)=>{const[c,y]=a(s,u,l,"https:");try{const f=`${c.protocol}//${c.hostname}`;this.addTracingHeadersToPlainObject(c.headers,f),this.captureFirstUserLines(e)}catch(f){o.getConfig().sfDebug&&console.error("[RequestInterceptor] Error while processing HTTPS request options:",f)}const v=(c.method||"GET").toUpperCase(),I=o.getConfig().retryOnClientError,h=(f,$,m)=>{try{const{sessionId:w,pageVisitId:b,requestId:_}=this.extractIdsFromTraceHeader(c.headers);t.doSend({apiKey:o.getConfig().apiKey,requestId:_,pageVisitId:b,recordingSessionId:w,serviceUuid:o.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:f.statusCode||0,success:!!f.statusCode&&f.statusCode<400,error:null,url:$,method:v,retryWithoutTraceId:m,parentSpanId:o.getCurrentFunctionSpanId()})}catch{}y?.(f)};return n(c,f=>{const $=`${c.protocol}//${c.hostname}`;let m=!1;try{m=this.shouldPropagateHeaders($)}catch{m=!1}if(m&&x(v,I)&&B.includes(f.statusCode||0)){f.resume();try{const{sessionId:b,pageVisitId:_,requestId:C}=this.extractIdsFromTraceHeader(c.headers);t.doSend({apiKey:o.getConfig().apiKey,requestId:C,pageVisitId:_,recordingSessionId:b,serviceUuid:o.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:f.statusCode||0,success:!1,error:null,url:$,method:v,retryWithoutTraceId:!1,parentSpanId:o.getCurrentFunctionSpanId()})}catch{}try{this.captureFirstUserLines(e,10,!0)}catch{}const w={...c,headers:{...c.headers}};return delete w.headers[this.HEADER_TRACING],void n(w,b=>{h(b,$,!0)}).end()}h(f,$,!1)})};P.request=p,k.request=d,P.get=(s,u,l)=>{const c=p(s,u,l);return c.end(),c},k.get=(s,u,l)=>{const c=d(s,u,l);return c.end(),c},o.getConfig().sfDebug&&console.log("✅ HTTP and HTTPS request/get methods patched globally.")}tryPatch(e,t){try{require.resolve(t),e()}catch{}}getExcludedDomains(){return[...this.contextManager.getExcludedDomains()]}}class Pe extends J{constructor(){super(),this.setOperationName("UpdateServiceDetails")}async doSend(){this.send()}async send(){const e=`
|
|
138
|
+
`}async send(t){const e={data:{...t}};await v.nonBlockingPost(this.endpoint,this.operationName,this.getQuery(),e)}}const se=[400,403];function ae(n,t){return t!=="none"&&(t==="all"||n==="GET"||n==="HEAD"||n==="OPTIONS")}class _t{HEADER_TRACING="X-Sf3-Rid";HEADER_LOG_GUARD="reentrancy_guard_logging_preactive";HEADER_PRINT_GUARD="reentrancy_guard_print_preactive";HEADER_EXCEPTION_GUARD="reentrancy_guard_exception_preactive";contextManager;constructor(t=[]){this.contextManager=p.ContextManager.getInstance(),t?.forEach(e=>{typeof e=="string"&&e.trim()&&this.contextManager.getExcludedDomains().add(e)}),p.getConfig().sfDebug&&console.log("[RequestInterceptor] Initialized with static excluded domains.")}extractIdsFromTraceHeader(t,e=this.HEADER_TRACING){let o;if(t instanceof Headers)o=t.get(e)??void 0;else{const s=e.toLowerCase();for(const[d,l]of Object.entries(t))if(d.toLowerCase()===s){o=l;break}}if(!o)return{};const r=o.split("/").filter(Boolean);return r.length<3?{}:{sessionId:r[0],pageVisitId:r[1],requestId:r[r.length-1]}}parseStackFrame(t){const e=/\((.*):(\d+):(\d+)\)$/.exec(t.trim());if(!e)return null;const[,o,r,s]=e;return{filePath:o,line:parseInt(r,10),column:parseInt(s,10)}}async getOriginalPosition(t,e,o){let r={source:t,line:e,column:o,name:null};if(t.includes("://"))return{originalPos:r};const s=t+".map";try{const d=JSON.parse($e.readFileSync(s,"utf-8"));let l=(await new ft.sourceMapExports.SourceMapConsumer(d)).originalPositionFor({line:e,column:o});l.source&&(r=l)}catch(d){p.getConfig().sfDebug&&console.error(`Could not read/parse map file at ${s}:`,d)}return{originalPos:r}}captureFirstUserLines(t,e=10,o=!1){const r=p.getConfig().sfDebug?10:e,s=Error.stackTraceLimit;Error.stackTraceLimit=Math.max(s,r);const d=new Error(Pe);Pe in Error&&Error.captureStackTrace(d,this.captureFirstUserLines);const l=P.stackToString(d.stack);Error.stackTraceLimit=s;const c=l.split(`
|
|
139
|
+
`).slice(1),i=[];for(const u of c)if(!(u.includes("node:internal")||u.includes("internal/modules")||u.includes("internal/process")||u.includes("node_modules")||u.includes(".next/server/chunks")||u.includes("RequestInterceptor")||u.includes("contextManager")||u.includes("setupConfig"))&&(i.push(u.trim()),i.length>=e))break;for(const u of i){const a=this.parseStackFrame(u);a?(async()=>{const{originalPos:f}=await this.getOriginalPosition(a.filePath,a.line,a.column);if(f){p.getConfig().sfDebug&&console.log("[RequestInterceptor] First user code line:",f);const h={line:f.line?.toString()||ee.UNKNOWN,column:f.column?.toString()||ee.NOT_CAPTURED,name:f.name||ee.NOT_CAPTURED,entrypoint:f.source,retryWithoutTraceId:o};t.doSend(h)}})():p.getConfig().sfDebug&&console.error("Could not parse stack line:",u)}}addReentrancyGuardHeaders(t){t.set(this.HEADER_LOG_GUARD,"true"),t.set(this.HEADER_PRINT_GUARD,"true"),t.set(this.HEADER_EXCEPTION_GUARD,"true")}shouldPropagateHeaders(t){const e=p.getConfig(),o=e.domainsToPropagateHeadersTo,r=e.domainsToNotPropagateHeadersTo||[],s=Array.from(p.DEFAULT_DOMAINS_TO_EXCLUDE);return!!ie(t,o)&&!(r.length>0&&ie(t,r))&&!ie(t,s)}addTracingHeaders(t,e){const o=this.shouldPropagateHeaders(e);if(o)this.addTracingHeader(t,e);else if(p.getConfig().sfDebug){let r=e;try{r=new URL(e).hostname}catch{}console.error(`[RequestInterceptor] Excluded domain: ${r}`)}return o}deriveTraceBaseAndParent(t){const e=t.split("/").filter(Boolean);return e.length<2?{base:t,parent:t}:{base:`${e[0]}/${e[1]}`,parent:t}}addTracingHeader(t,e){const o=v.getFuncspanOverride();if(o){const c=v.parseHeaderOverride(o);if(c&&c.sample_rate===0)return void(p.getConfig().sfDebug&&console.log(`[RequestInterceptor] Function span tracking disabled (sample_rate=0), skipping tracing header for ${e}`))}const r=this.contextManager.getOrSetSfTraceId(),{base:s,parent:d}=this.deriveTraceBaseAndParent(r),l=p.v4();t.set(this.HEADER_TRACING,`${s}/${l}`),t.set(Ue,d),p.getConfig().sfDebug&&console.log(`[RequestInterceptor] Added tracing header for ${e}`)}patchFetch(t,e){const o=globalThis.fetch;typeof o=="function"?globalThis.fetch=async(r,s)=>{const d=new Headers(s?.headers);if(d.get(this.HEADER_LOG_GUARD)==="true"||d.get(this.HEADER_PRINT_GUARD)==="true"||d.get(this.HEADER_EXCEPTION_GUARD)==="true")return o(r,s);this.captureFirstUserLines(t);const l=Date.now();let c,i="GET";if(typeof r=="string"||r instanceof URL)c=r.toString(),i=(s?.method||"GET").toUpperCase();else{if(!(r instanceof Request))return p.getConfig().sfDebug&&console.error("[Sailfish RequestInterceptor] Invalid fetch input."),o(r,s);c=r.url,i=r.method.toUpperCase(),r.headers.forEach((I,E)=>{d.set(E,I)})}p.getConfig().sfDebug&&console.log("[RequestInterceptor] Fetching request to:",c);let u="unknown";try{u=new URL(c).hostname}catch{return p.getConfig().sfDebug&&console.warn(`[RequestInterceptor] Could not parse URL '${c}' — passing through without tracing headers.`),o(r,s)}const a=new Headers(d),f=this.addTracingHeaders(d,c),h=I=>r instanceof Request?[new Request(r,{...s||{},headers:I}),void 0]:[c,{...s,headers:I}],m=p.getConfig().retryOnClientError;let g,y=!1;try{const[I,E]=h(d);if(g=await o(I,E),f&&ae(i,m)&&se.includes(g.status)){const[C,$]=h(a);g=await o(C,$),y=!0;try{this.captureFirstUserLines(t,10,y)}catch(k){p.getConfig().sfDebug&&console.error("[RequestInterceptor] captureFirstUserLines (retry) failed:",k)}}else try{this.contextManager.addSupportedDomains(u)}catch(C){p.getConfig().sfDebug&&console.error("[RequestInterceptor] addSupportedDomains failed:",C)}}catch(I){const E=Date.now();p.getConfig().sfDebug&&console.error(`[RequestInterceptor] Fetch failed: ${c}, Error: ${I}, Duration: ${E-l}ms`);try{const{sessionId:C,pageVisitId:$,requestId:k}=this.extractIdsFromTraceHeader(d),T=p.getConfig();e.doSend({apiKey:T.apiKey,requestId:k,pageVisitId:$,recordingSessionId:C,serviceUuid:T.serviceUUID,timestampStart:l.toString(),timestampEnd:E.toString(),responseCode:0,success:!1,error:I instanceof Error?I.message:typeof I=="string"?I:JSON.stringify(I),url:c,method:i,retryWithoutTraceId:y,parentSpanId:p.getCurrentFunctionSpanId()})}catch(C){p.getConfig().sfDebug&&console.error("[RequestInterceptor] Error telemetry send failed:",C)}throw I}const S=Date.now();try{p.getConfig().sfDebug&&console.log(`[RequestInterceptor] Fetch completed: ${c}, Status: ${g.status}, Duration: ${S-l}ms`);const{sessionId:I,pageVisitId:E,requestId:C}=this.extractIdsFromTraceHeader(d),$=p.getConfig(),k={apiKey:$.apiKey,requestId:C,pageVisitId:E,recordingSessionId:I,serviceUuid:$.serviceUUID,timestampStart:l.toString(),timestampEnd:S.toString(),responseCode:g.status,success:!0,error:null,url:c,method:i,retryWithoutTraceId:y,parentSpanId:p.getCurrentFunctionSpanId()};if($.captureRequestHeaders){const _={};d.forEach((N,F)=>{_[F]=N}),k.requestHeaders=_}if($.captureResponseHeaders){const _={};g.headers.forEach((N,F)=>{_[F]=N}),k.responseHeaders=_}if($.captureRequestBody&&s?.body){const _=s.body,N=$.requestBodyLimitBytes;try{if(typeof _=="string")k.requestBody=_.length>N?_.substring(0,N)+"...[truncated]":_;else if(_ instanceof URLSearchParams){const F=_.toString();k.requestBody=F.length>N?F.substring(0,N)+"...[truncated]":F}else if(typeof ArrayBuffer<"u"&&(_ instanceof ArrayBuffer||ArrayBuffer.isView(_))){const F=_.byteLength??_.byteLength;k.requestBody=`[binary body, ${F} bytes — not captured]`}else if(typeof Blob<"u"&&_ instanceof Blob)k.requestBody=`[Blob, ${_.size} bytes, type=${_.type||"unknown"} — not captured]`;else if(typeof FormData<"u"&&_ instanceof FormData)k.requestBody="[FormData — not captured]";else if(typeof ReadableStream<"u"&&_ instanceof ReadableStream)k.requestBody="[ReadableStream — not captured]";else{const F=JSON.stringify(_);F&&F!=="{}"&&(k.requestBody=F.length>N?F.substring(0,N)+"...[truncated]":F)}}catch{}}let T;if($.captureResponseBody){const _=(g.headers.get("content-type")||"").toLowerCase();if(!_||_.includes("json")||_.includes("xml")||_.includes("text/")||_.includes("javascript")||_.includes("ecmascript")||_.includes("x-www-form-urlencoded")||_.includes("application/graphql")){const N=g.clone(),F=$.responseBodyLimitBytes;T=(async()=>{try{const M=await N.text(),H=M.length>F?M.substring(0,F)+"...[truncated]":M;try{e.doSend({...k,responseBody:H})}catch{}}catch{}})(),T.catch(()=>{})}else k.responseBody=`[non-text body, content-type=${_} — not captured]`}T||e.doSend(k)}catch(I){p.getConfig().sfDebug&&console.error("[RequestInterceptor] Post-fetch telemetry failed (response still returned):",I)}return g}:p.getConfig().sfDebug&&console.error("[RequestInterceptor] Fetch not available.")}setHeader(t,e,o){t instanceof Headers?t.set(e,o):t[e]=o}addTracingHeadersToPlainObject(t,e){const o=this.shouldPropagateHeaders(e);if(o){const r=v.getFuncspanOverride();if(r){const i=v.parseHeaderOverride(r);if(i&&i.sample_rate===0)return p.getConfig().sfDebug&&console.log(`[RequestInterceptor] Function span tracking disabled (sample_rate=0), skipping tracing header for ${e}`),!1}const s=this.contextManager.getOrSetSfTraceId(),{base:d,parent:l}=this.deriveTraceBaseAndParent(s),c=p.v4();t[this.HEADER_TRACING]=`${d}/${c}`,t[Ue]=l,p.getConfig().sfDebug&&console.log(`[RequestInterceptor] Added tracing header for ${e}`)}else if(p.getConfig().sfDebug){let r=e;try{r=new URL(e).hostname}catch{}console.error(`[RequestInterceptor] Excluded domain: ${r}`)}return o}patchHttp(t,e){if(p.getConfig().sfDebug&&console.log("[RequestInterceptor] Initializing HTTP/HTTPS request patch..."),!x||typeof x.request!="function")return void(p.getConfig().sfDebug&&console.log("[RequestInterceptor] HTTP/HTTPS not available."));const o=x.request.bind(x),r=V.request.bind(V),s=(c,i,u,a=Fe)=>{let f,h;if(typeof c=="string"||c instanceof URL){const m=typeof c=="string"?new URL(c):c;f={...typeof i=="object"&&i!==null?i:{},protocol:m.protocol||a,hostname:m.hostname,port:m.port||void 0,path:m.pathname+m.search},h=typeof i=="function"?i:u}else f={...c},f.protocol||(f.protocol=a),h=typeof i=="function"?i:void 0;return f.headers||(f.headers={}),[f,h]},d=(c,i,u)=>{const[a,f]=s(c,i,u,Fe);try{const y=`${a.protocol}//${a.hostname}`;this.addTracingHeadersToPlainObject(a.headers,y),this.captureFirstUserLines(t)}catch(y){p.getConfig().sfDebug&&console.error("[RequestInterceptor] Error while processing HTTP request options:",y)}const h=(a.method||"GET").toUpperCase(),m=p.getConfig().retryOnClientError,g=(y,S,I)=>{try{const{sessionId:E,pageVisitId:C,requestId:$}=this.extractIdsFromTraceHeader(a.headers);e.doSend({apiKey:p.getConfig().apiKey,requestId:$,pageVisitId:C,recordingSessionId:E,serviceUuid:p.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:y.statusCode||0,success:!!y.statusCode&&y.statusCode<400,error:null,url:S,method:h,retryWithoutTraceId:I,parentSpanId:p.getCurrentFunctionSpanId()})}catch{}f?.(y)};return o(a,y=>{const S=`${a.protocol}//${a.hostname}`;let I=!1;try{I=this.shouldPropagateHeaders(S)}catch{I=!1}if(I&&ae(h,m)&&se.includes(y.statusCode||0)){y.resume();try{const{sessionId:C,pageVisitId:$,requestId:k}=this.extractIdsFromTraceHeader(a.headers);e.doSend({apiKey:p.getConfig().apiKey,requestId:k,pageVisitId:$,recordingSessionId:C,serviceUuid:p.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:y.statusCode||0,success:!1,error:null,url:S,method:h,retryWithoutTraceId:!1,parentSpanId:p.getCurrentFunctionSpanId()})}catch{}try{this.captureFirstUserLines(t,10,!0)}catch{}const E={...a,headers:{...a.headers}};return delete E.headers[this.HEADER_TRACING],void o(E,C=>{g(C,S,!0)}).end()}g(y,S,!1)})},l=(c,i,u)=>{const[a,f]=s(c,i,u,"https:");try{const y=`${a.protocol}//${a.hostname}`;this.addTracingHeadersToPlainObject(a.headers,y),this.captureFirstUserLines(t)}catch(y){p.getConfig().sfDebug&&console.error("[RequestInterceptor] Error while processing HTTPS request options:",y)}const h=(a.method||"GET").toUpperCase(),m=p.getConfig().retryOnClientError,g=(y,S,I)=>{try{const{sessionId:E,pageVisitId:C,requestId:$}=this.extractIdsFromTraceHeader(a.headers);e.doSend({apiKey:p.getConfig().apiKey,requestId:$,pageVisitId:C,recordingSessionId:E,serviceUuid:p.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:y.statusCode||0,success:!!y.statusCode&&y.statusCode<400,error:null,url:S,method:h,retryWithoutTraceId:I,parentSpanId:p.getCurrentFunctionSpanId()})}catch{}f?.(y)};return r(a,y=>{const S=`${a.protocol}//${a.hostname}`;let I=!1;try{I=this.shouldPropagateHeaders(S)}catch{I=!1}if(I&&ae(h,m)&&se.includes(y.statusCode||0)){y.resume();try{const{sessionId:C,pageVisitId:$,requestId:k}=this.extractIdsFromTraceHeader(a.headers);e.doSend({apiKey:p.getConfig().apiKey,requestId:k,pageVisitId:$,recordingSessionId:C,serviceUuid:p.getConfig().serviceUUID,timestampStart:Date.now().toString(),timestampEnd:Date.now().toString(),responseCode:y.statusCode||0,success:!1,error:null,url:S,method:h,retryWithoutTraceId:!1,parentSpanId:p.getCurrentFunctionSpanId()})}catch{}try{this.captureFirstUserLines(t,10,!0)}catch{}const E={...a,headers:{...a.headers}};return delete E.headers[this.HEADER_TRACING],void r(E,C=>{g(C,S,!0)}).end()}g(y,S,!1)})};x.request=d,V.request=l,x.get=(c,i,u)=>{const a=d(c,i,u);return a.end(),a},V.get=(c,i,u)=>{const a=l(c,i,u);return a.end(),a},p.getConfig().sfDebug&&console.log("✅ HTTP and HTTPS request/get methods patched globally.")}tryPatch(t,e){try{require.resolve(e),t()}catch{}}getExcludedDomains(){return[...this.contextManager.getExcludedDomains()]}}class Ct extends Ce{constructor(){super(),this.setOperationName("UpdateServiceDetails")}async doSend(){this.send()}async send(){const t=`
|
|
140
140
|
${this.queryType} ${this.operationName}(
|
|
141
141
|
$apiKey: String!,
|
|
142
142
|
$serviceUuid: String!,
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
serviceRole: $serviceRole,
|
|
179
179
|
)
|
|
180
180
|
}
|
|
181
|
-
`,t=o.getConfig(),i=this.getVariables({serviceIdentifier:t.serviceIdentifier,serviceVersion:t.serviceVersion,serviceAdditionalMetadata:t.serviceAdditionalMetadata,gitSha:t.gitSha||"",gitOrg:t.gitOrg||void 0,gitRepo:t.gitRepo||void 0,gitProvider:t.gitProvider||void 0,serviceDisplayName:t.serviceDisplayName||void 0,infrastructureType:t.infrastructureType||void 0,infrastructureDetails:t.infrastructureDetails||void 0,setupInterceptorsFile:t.setupInterceptorsFile||void 0,setupInterceptorsLine:t.setupInterceptorsLine||void 0,framework:t.framework||void 0,additionalFrameworks:t.additionalFrameworks?.length>0?t.additionalFrameworks:void 0,serviceRole:t.serviceRole||void 0});g.nonBlockingPost(this.endpoint,this.operationName,e,i)}}class Re{rootPaths;fileConfigs=new Map;functionConfigs=new Map;directoryConfigs=new Map;hasSailfishFiles=!1;runtimeModeEnabled=!1;debug;constructor(e=[process.cwd()],t=!1){this.rootPaths=e,this.debug=t||process.env.SF_DEBUG==="true"}async loadAllConfigs(){this.debug&&console.log("[FuncSpan ConfigLoader] Scanning for .sailfish files in:",this.rootPaths);const e=[];for(const t of this.rootPaths)be.existsSync(t)?await this._walkDirectory(t,e):this.debug&&console.log(`[FuncSpan ConfigLoader] Root path does not exist: ${t}`);e.length>0?(this.hasSailfishFiles=!0,this.debug&&(console.log(`[FuncSpan ConfigLoader] Found ${e.length} .sailfish files:`),e.forEach(t=>console.log(`[FuncSpan ConfigLoader] - ${t}`)))):this.debug&&console.log("[FuncSpan ConfigLoader] No .sailfish files found - function spans disabled by default");for(const t of e)await this._loadConfigFile(t);await this._resolveInheritance(),this.debug&&console.log(`[FuncSpan ConfigLoader] Loaded ${this.fileConfigs.size} file configs, ${this.functionConfigs.size} function configs`)}getConfig(e,t){const i=this.hasSailfishFiles?g.getEnvConfig():g.getDefaultConfig(),n=this._getDirectoryConfig(e),a=E.normalize(e),p=this.fileConfigs.get(a)||{};let d={};if(t){const s=this.functionConfigs.get(a);s&&(d=s.get(t)||{})}return g.mergeConfigs(i,n,p,d)}hasRuntimeMode(){return this.runtimeModeEnabled}async _walkDirectory(e,t){try{const i=await Q.readdir(e,{withFileTypes:!0});for(const n of i){const a=E.join(e,n.name);n.isFile()&&n.name===".sailfish"?t.push(a):n.name==="node_modules"||n.isDirectory()&&n.name.startsWith(".")&&n.name!==".sailfish"||n.isDirectory()&&await this._walkDirectory(a,t)}}catch(i){this.debug&&console.error(`[FuncSpan ConfigLoader] Error walking directory ${e}:`,i)}}async _loadConfigFile(e){try{const t=await Q.readFile(e,"utf-8"),i=E.dirname(e);let n=null;try{n=JSON.parse(t)}catch{try{n=require("toml").parse(t)}catch{try{n=require("js-yaml").load(t)}catch(a){return void(this.debug&&console.error(`[FuncSpan ConfigLoader] Failed to parse ${e} as JSON, TOML, or YAML:`,a))}}}if(!n)return;n.runtime_mode===!0&&(this.runtimeModeEnabled=!0,this.debug&&console.log(`[FuncSpan ConfigLoader] Runtime mode ENABLED in ${e}`)),n.default&&this.directoryConfigs.set(i,n.default),n.files&&await this._expandFileGlobs(i,n.files,n.default||{}),n.functions&&this._storeFunctionConfigs(i,n.functions,n.default||{}),this.debug&&(console.log(`[FuncSpan ConfigLoader] Loaded config from ${e}`),console.log(`[FuncSpan ConfigLoader] Directory: ${i}`),console.log(`[FuncSpan ConfigLoader] Has default: ${!!n.default}`),console.log(`[FuncSpan ConfigLoader] File patterns: ${Object.keys(n.files||{}).length}`),console.log(`[FuncSpan ConfigLoader] Functions: ${Object.keys(n.functions||{}).length}`))}catch(t){this.debug&&console.error(`[FuncSpan ConfigLoader] Error loading ${e}:`,t)}}async _expandFileGlobs(e,t,i){for(const[n,a]of Object.entries(t))try{const p=E.join(e,n),d=await $e.glob(p,{absolute:!0,nodir:!0,ignore:["**/node_modules/**","**/.git/**"]});this.debug&&console.log(`[FuncSpan ConfigLoader] Pattern '${n}' matched ${d.length} files`);for(const s of d){const u=E.normalize(s),l=g.mergeConfigs(i,a);this.fileConfigs.set(u,l),this.debug&&d.length<=5&&console.log(`[FuncSpan ConfigLoader] - ${s}`)}}catch(p){this.debug&&console.error(`[FuncSpan ConfigLoader] Error expanding glob '${n}':`,p)}}_storeFunctionConfigs(e,t,i){for(const[n,a]of Object.entries(t)){const p=n.split("::");if(p.length!==2){this.debug&&console.warn(`[FuncSpan ConfigLoader] Invalid function pattern '${n}' (expected format: 'file.ts::functionName')`);continue}const[d,s]=p,u=E.normalize(E.join(e,d));this.functionConfigs.has(u)||this.functionConfigs.set(u,new Map);const l=this.functionConfigs.get(u),c=g.mergeConfigs(i,a);l.set(s,c),this.debug&&console.log(`[FuncSpan ConfigLoader] Function config: ${u}::${s}`)}}async _resolveInheritance(){}_getDirectoryConfig(e){let t=E.dirname(E.normalize(e));const i=[];for(;t&&t!==E.dirname(t);){const n=this.directoryConfigs.get(t);n&&i.unshift(n),t=E.dirname(t)}return i.reduce((n,a)=>g.mergeConfigs(n,a),{})}}const fe="__sf_globalConfigLoader";function he(){return globalThis[fe]??null}async function re(r,e){const t=new Re(r,e);(function(i){globalThis[fe]=i})(t),await t.loadAllConfigs()}function ie(r,e){const t=he();return t?t.getConfig(r,e):(process.env.SF_DEBUG==="true"&&console.log("[FuncSpan ConfigLoader] Config loader not initialized, using default config (disabled)"),g.getDefaultConfig())}function oe(){return he()!==null}const ke=["readFile","writeFile","appendFile","readdir","stat","lstat","fstat","access","open","close","read","write","chmod","mkdir","rmdir","unlink","rename"],se=["lookup","resolve","resolve4","resolve6","resolveAny","resolveMx","resolveNs","resolveTxt","reverse"],Oe=["pbkdf2","randomBytes","scrypt","generateKeyPair"],Ue=["gzip","gunzip","deflate","inflate","deflateRaw","inflateRaw","brotliCompress","brotliDecompress"];let ae=!1;function Le(r){if(typeof r!="string")return!1;const e=process.env.SF_FUNCSPAN_JSONL_FILE;if(e&&r.includes(e))return!0;const t=process.env.SF_WORKER_POOL_JSONL_FILE;return!(!t||!r.includes(t))}let ce=!1;function de(r){if(typeof r!="string")return!1;if(r==="localhost"||r==="127.0.0.1"||r==="::1")return!0;try{const e=process.env.API_GRAPHQL_ENDPOINT;if(e&&r===new URL(e).hostname)return!0}catch{}return!1}function qe(){if(!ce)try{let r;if(typeof require>"u")return void(process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] Skipping dns patching in pure ESM environment (require unavailable)"));try{r=require("node:dns")}catch(e){return void(process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] Failed to require dns module:",e))}if(r.__sf_worker_pool_patched__)return;Object.defineProperty(r,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const e of se)if(typeof r[e]=="function"){const t=r[e];r[e]=function(...i){return g.isSendingInternalTelemetry()?t.apply(this,i):de(i[0])?t.apply(this,i):typeof i[i.length-1]=="function"?g.captureWorkerPoolOperation("dns",e,t,i,this):t.apply(this,i)},Object.defineProperty(r[e],"name",{value:e,writable:!1})}(function(e){if(!e.promises)return void(process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] dns.promises not available, skipping"));if(!e.promises.__sf_worker_pool_patched__){Object.defineProperty(e.promises,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const t of se)if(typeof e.promises[t]=="function"){const i=e.promises[t];e.promises[t]=function(...n){return g.isSendingInternalTelemetry()?i.apply(this,n):de(n[0])?i.apply(this,n):g.captureWorkerPoolPromiseOperation("dns",t,i,n,this)},Object.defineProperty(e.promises[t],"name",{value:t,writable:!1})}process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] dns.promises module patched successfully")}})(r),ce=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] dns module patched successfully")}catch(r){console.error("[WorkerPool] Error patching dns module:",r)}}let ue=!1,le=!1,j=!1;function pe(){if(j)return;const r=process.env.SF_DEBUG==="true";r&&console.log("[WorkerPool] Initializing worker pool patching..."),g.isModuleTrackingEnabled("fs")&&(r&&console.log("[WorkerPool] Patching fs module..."),(function(){if(!ae)try{const e=require("node:fs");if(e.__sf_worker_pool_patched__)return;Object.defineProperty(e,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const t of ke)if(typeof e[t]=="function"){const i=e[t];e[t]=function(...n){return Le(n[0])?i.apply(this,n):typeof n[n.length-1]=="function"?g.captureWorkerPoolOperation("fs",t,i,n,this):i.apply(this,n)},Object.defineProperty(e[t],"name",{value:t,writable:!1})}ae=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] fs module patched successfully")}catch(e){console.error("[WorkerPool] Error patching fs module:",e)}})()),g.isModuleTrackingEnabled("dns")&&(r&&console.log("[WorkerPool] Patching dns module..."),qe()),g.isModuleTrackingEnabled("crypto")&&(r&&console.log("[WorkerPool] Patching crypto module..."),(function(){if(!ue)try{const e=require("node:crypto");if(e.__sf_worker_pool_patched__)return;Object.defineProperty(e,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const t of Oe)if(typeof e[t]=="function"){const i=e[t];e[t]=function(...n){return typeof n[n.length-1]=="function"?g.captureWorkerPoolOperation("crypto",t,i,n,this):i.apply(this,n)},Object.defineProperty(e[t],"name",{value:t,writable:!1})}ue=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] crypto module patched successfully")}catch(e){console.error("[WorkerPool] Error patching crypto module:",e)}})()),g.isModuleTrackingEnabled("zlib")&&(r&&console.log("[WorkerPool] Patching zlib module..."),(function(){if(!le)try{const e=require("node:zlib");if(e.__sf_worker_pool_patched__)return;Object.defineProperty(e,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const t of Ue)if(typeof e[t]=="function"){const i=e[t];e[t]=function(...n){return typeof n[n.length-1]=="function"?g.captureWorkerPoolOperation("zlib",t,i,n,this):i.apply(this,n)},Object.defineProperty(e[t],"name",{value:t,writable:!1})}le=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] zlib module patched successfully")}catch(e){console.error("[WorkerPool] Error patching zlib module:",e)}})()),j=!0,r&&console.log("[WorkerPool] Worker pool patching initialized")}function ge(){return j}let W=!1,G=!1,K=null;function U(r){const e=o.getGlobalConfigUnsafe(),t=e?.sfDebug||!1;t&&console.log("[FuncSpan] captureSpanData called for:",{function:r.functionName,file:r.filePath,duration:`${r.duration}ms`,async:r.async,error:r.error,spanId:r.spanId});const i={functionName:r.functionName,filePath:r.filePath,metadata:r.metadata,args:r.args,result:r.result,error:r.error,duration:r.duration,durationNs:r.durationNs,async:r.async,spanId:r.spanId,parentSpanId:r.parentSpanId};process.env.SF_FUNCSPAN_CONSOLE_OUTPUT==="true"&&console.log(`
|
|
182
|
-
📊 Function Span:`,{function:`${
|
|
183
|
-
|
|
184
|
-
`)[2]||"",
|
|
181
|
+
`,e=p.getConfig(),o=this.getVariables({serviceIdentifier:e.serviceIdentifier,serviceVersion:e.serviceVersion,serviceAdditionalMetadata:e.serviceAdditionalMetadata,gitSha:e.gitSha||"",gitOrg:e.gitOrg||void 0,gitRepo:e.gitRepo||void 0,gitProvider:e.gitProvider||void 0,serviceDisplayName:e.serviceDisplayName||void 0,infrastructureType:e.infrastructureType||void 0,infrastructureDetails:e.infrastructureDetails||void 0,setupInterceptorsFile:e.setupInterceptorsFile||void 0,setupInterceptorsLine:e.setupInterceptorsLine||void 0,framework:e.framework||void 0,additionalFrameworks:e.additionalFrameworks?.length>0?e.additionalFrameworks:void 0,serviceRole:e.serviceRole||void 0});v.nonBlockingPost(this.endpoint,this.operationName,t,o)}}class wt{rootPaths;fileConfigs=new Map;functionConfigs=new Map;directoryConfigs=new Map;hasSailfishFiles=!1;runtimeModeEnabled=!1;debug;constructor(t=[process.cwd()],e=!1){this.rootPaths=t,this.debug=e||process.env.SF_DEBUG==="true"}async loadAllConfigs(){this.debug&&console.log("[FuncSpan ConfigLoader] Scanning for .sailfish files in:",this.rootPaths);const t=[];for(const e of this.rootPaths)mt.existsSync(e)?await this._walkDirectory(e,t):this.debug&&console.log(`[FuncSpan ConfigLoader] Root path does not exist: ${e}`);t.length>0?(this.hasSailfishFiles=!0,this.debug&&(console.log(`[FuncSpan ConfigLoader] Found ${t.length} .sailfish files:`),t.forEach(e=>console.log(`[FuncSpan ConfigLoader] - ${e}`)))):this.debug&&console.log("[FuncSpan ConfigLoader] No .sailfish files found - function spans disabled by default");for(const e of t)await this._loadConfigFile(e);await this._resolveInheritance(),this.debug&&console.log(`[FuncSpan ConfigLoader] Loaded ${this.fileConfigs.size} file configs, ${this.functionConfigs.size} function configs`)}getConfig(t,e){const o=this.hasSailfishFiles?v.getEnvConfig():v.getDefaultConfig(),r=this._getDirectoryConfig(t),s=B.normalize(t),d=this.fileConfigs.get(s)||{};let l={};if(e){const c=this.functionConfigs.get(s);c&&(l=c.get(e)||{})}return v.mergeConfigs(o,r,d,l)}hasRuntimeMode(){return this.runtimeModeEnabled}async _walkDirectory(t,e){try{const o=await we.readdir(t,{withFileTypes:!0});for(const r of o){const s=B.join(t,r.name);r.isFile()&&r.name===".sailfish"?e.push(s):r.name==="node_modules"||r.isDirectory()&&r.name.startsWith(".")&&r.name!==".sailfish"||r.isDirectory()&&await this._walkDirectory(s,e)}}catch(o){this.debug&&console.error(`[FuncSpan ConfigLoader] Error walking directory ${t}:`,o)}}async _loadConfigFile(t){try{const e=await we.readFile(t,"utf-8"),o=B.dirname(t);let r=null;try{r=JSON.parse(e)}catch{try{r=require("toml").parse(e)}catch{try{r=require("js-yaml").load(e)}catch(s){return void(this.debug&&console.error(`[FuncSpan ConfigLoader] Failed to parse ${t} as JSON, TOML, or YAML:`,s))}}}if(!r)return;r.runtime_mode===!0&&(this.runtimeModeEnabled=!0,this.debug&&console.log(`[FuncSpan ConfigLoader] Runtime mode ENABLED in ${t}`)),r.default&&this.directoryConfigs.set(o,r.default),r.files&&await this._expandFileGlobs(o,r.files,r.default||{}),r.functions&&this._storeFunctionConfigs(o,r.functions,r.default||{}),this.debug&&(console.log(`[FuncSpan ConfigLoader] Loaded config from ${t}`),console.log(`[FuncSpan ConfigLoader] Directory: ${o}`),console.log(`[FuncSpan ConfigLoader] Has default: ${!!r.default}`),console.log(`[FuncSpan ConfigLoader] File patterns: ${Object.keys(r.files||{}).length}`),console.log(`[FuncSpan ConfigLoader] Functions: ${Object.keys(r.functions||{}).length}`))}catch(e){this.debug&&console.error(`[FuncSpan ConfigLoader] Error loading ${t}:`,e)}}async _expandFileGlobs(t,e,o){for(const[r,s]of Object.entries(e))try{const d=B.join(t,r),l=await ht.glob(d,{absolute:!0,nodir:!0,ignore:["**/node_modules/**","**/.git/**"]});this.debug&&console.log(`[FuncSpan ConfigLoader] Pattern '${r}' matched ${l.length} files`);for(const c of l){const i=B.normalize(c),u=v.mergeConfigs(o,s);this.fileConfigs.set(i,u),this.debug&&l.length<=5&&console.log(`[FuncSpan ConfigLoader] - ${c}`)}}catch(d){this.debug&&console.error(`[FuncSpan ConfigLoader] Error expanding glob '${r}':`,d)}}_storeFunctionConfigs(t,e,o){for(const[r,s]of Object.entries(e)){const d=r.split("::");if(d.length!==2){this.debug&&console.warn(`[FuncSpan ConfigLoader] Invalid function pattern '${r}' (expected format: 'file.ts::functionName')`);continue}const[l,c]=d,i=B.normalize(B.join(t,l));this.functionConfigs.has(i)||this.functionConfigs.set(i,new Map);const u=this.functionConfigs.get(i),a=v.mergeConfigs(o,s);u.set(c,a),this.debug&&console.log(`[FuncSpan ConfigLoader] Function config: ${i}::${c}`)}}async _resolveInheritance(){}_getDirectoryConfig(t){let e=B.dirname(B.normalize(t));const o=[];for(;e&&e!==B.dirname(e);){const r=this.directoryConfigs.get(e);r&&o.unshift(r),e=B.dirname(e)}return o.reduce((r,s)=>v.mergeConfigs(r,s),{})}}const et="__sf_globalConfigLoader";function tt(){return globalThis[et]??null}async function Te(n,t){const e=new wt(n,t);(function(o){globalThis[et]=o})(e),await e.loadAllConfigs()}function qe(n,t){const e=tt();return e?e.getConfig(n,t):(process.env.SF_DEBUG==="true"&&console.log("[FuncSpan ConfigLoader] Config loader not initialized, using default config (disabled)"),v.getDefaultConfig())}function Ae(){return tt()!==null}const kt=["readFile","writeFile","appendFile","readdir","stat","lstat","fstat","access","open","close","read","write","chmod","mkdir","rmdir","unlink","rename"],Be=["lookup","resolve","resolve4","resolve6","resolveAny","resolveMx","resolveNs","resolveTxt","reverse"],Ut=["pbkdf2","randomBytes","scrypt","generateKeyPair"],Pt=["gzip","gunzip","deflate","inflate","deflateRaw","inflateRaw","brotliCompress","brotliDecompress"];let Oe=!1;function Ft(n){if(typeof n!="string")return!1;const t=process.env.SF_FUNCSPAN_JSONL_FILE;if(t&&n.includes(t))return!0;const e=process.env.SF_WORKER_POOL_JSONL_FILE;return!(!e||!n.includes(e))}let Le=!1;function Re(n){if(typeof n!="string")return!1;if(n==="localhost"||n==="127.0.0.1"||n==="::1")return!0;try{const t=process.env.API_GRAPHQL_ENDPOINT;if(t&&n===new URL(t).hostname)return!0}catch{}return!1}function Dt(){if(!Le)try{let n;if(typeof require>"u")return void(process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] Skipping dns patching in pure ESM environment (require unavailable)"));try{n=require("node:dns")}catch(t){return void(process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] Failed to require dns module:",t))}if(n.__sf_worker_pool_patched__)return;Object.defineProperty(n,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const t of Be)if(typeof n[t]=="function"){const e=n[t];n[t]=function(...o){return v.isSendingInternalTelemetry()?e.apply(this,o):Re(o[0])?e.apply(this,o):typeof o[o.length-1]=="function"?v.captureWorkerPoolOperation("dns",t,e,o,this):e.apply(this,o)},Object.defineProperty(n[t],"name",{value:t,writable:!1})}(function(t){if(!t.promises)return void(process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] dns.promises not available, skipping"));if(!t.promises.__sf_worker_pool_patched__){Object.defineProperty(t.promises,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const e of Be)if(typeof t.promises[e]=="function"){const o=t.promises[e];t.promises[e]=function(...r){return v.isSendingInternalTelemetry()?o.apply(this,r):Re(r[0])?o.apply(this,r):v.captureWorkerPoolPromiseOperation("dns",e,o,r,this)},Object.defineProperty(t.promises[e],"name",{value:e,writable:!1})}process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] dns.promises module patched successfully")}})(n),Le=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] dns module patched successfully")}catch(n){console.error("[WorkerPool] Error patching dns module:",n)}}let Me=!1,He=!1,pe=!1;function xe(){if(pe)return;const n=process.env.SF_DEBUG==="true";n&&console.log("[WorkerPool] Initializing worker pool patching..."),v.isModuleTrackingEnabled("fs")&&(n&&console.log("[WorkerPool] Patching fs module..."),(function(){if(!Oe)try{const t=require("node:fs");if(t.__sf_worker_pool_patched__)return;Object.defineProperty(t,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const e of kt)if(typeof t[e]=="function"){const o=t[e];t[e]=function(...r){return Ft(r[0])?o.apply(this,r):typeof r[r.length-1]=="function"?v.captureWorkerPoolOperation("fs",e,o,r,this):o.apply(this,r)},Object.defineProperty(t[e],"name",{value:e,writable:!1})}Oe=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] fs module patched successfully")}catch(t){console.error("[WorkerPool] Error patching fs module:",t)}})()),v.isModuleTrackingEnabled("dns")&&(n&&console.log("[WorkerPool] Patching dns module..."),Dt()),v.isModuleTrackingEnabled("crypto")&&(n&&console.log("[WorkerPool] Patching crypto module..."),(function(){if(!Me)try{const t=require("node:crypto");if(t.__sf_worker_pool_patched__)return;Object.defineProperty(t,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const e of Ut)if(typeof t[e]=="function"){const o=t[e];t[e]=function(...r){return typeof r[r.length-1]=="function"?v.captureWorkerPoolOperation("crypto",e,o,r,this):o.apply(this,r)},Object.defineProperty(t[e],"name",{value:e,writable:!1})}Me=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] crypto module patched successfully")}catch(t){console.error("[WorkerPool] Error patching crypto module:",t)}})()),v.isModuleTrackingEnabled("zlib")&&(n&&console.log("[WorkerPool] Patching zlib module..."),(function(){if(!He)try{const t=require("node:zlib");if(t.__sf_worker_pool_patched__)return;Object.defineProperty(t,"__sf_worker_pool_patched__",{value:!0,enumerable:!1,writable:!1,configurable:!1});for(const e of Pt)if(typeof t[e]=="function"){const o=t[e];t[e]=function(...r){return typeof r[r.length-1]=="function"?v.captureWorkerPoolOperation("zlib",e,o,r,this):o.apply(this,r)},Object.defineProperty(t[e],"name",{value:e,writable:!1})}He=!0,process.env.SF_DEBUG==="true"&&console.log("[WorkerPool] zlib module patched successfully")}catch(t){console.error("[WorkerPool] Error patching zlib module:",t)}})()),pe=!0,n&&console.log("[WorkerPool] Worker pool patching initialized")}function je(){return pe}const Ke=Q.toLowerCase();function K(n){if(n!=null){if(Array.isArray(n)){for(const t of n)if(!(!t||typeof t!="object")&&We(t.key)===Ke)return t.value}else if(typeof n=="object"){for(const[t,e]of Object.entries(n))if(We(t)===Ke)return Array.isArray(e)?e.length===0?void 0:e[0]:e}}}function We(n){if(typeof n=="string")return n.toLowerCase();if(Buffer.isBuffer(n))try{return n.toString("utf8").toLowerCase()}catch{return null}if(n instanceof Uint8Array)try{return Buffer.from(n).toString("utf8").toLowerCase()}catch{return null}return null}let ce=null;function nt(){return ce||(ce=new Ze),ce}function rt(n){if(!n)return null;const t=n.split("/").filter(Boolean);return t.length<3?null:{sessionId:t[0],pageVisitId:t[1],requestId:t[t.length-1]}}const Nt=/^[A-Za-z0-9._:-]{1,128}$/;function W(n){if(typeof n!="string"||n.length===0||n.length>1024)return!1;const t=n.split("/").filter(Boolean);if(t.length<3||t.length>6)return!1;for(const e of t)if(!Nt.test(e))return!1;return!0}function J(n){const t=n.split("/");return t.length>=3?(t[t.length-1]=p.v4(),t.join("/")):`${n}/${p.v4()}`}function Tt(n){if(n==null)return null;if(typeof n=="string")return n;if(Buffer.isBuffer(n))try{return n.toString("utf8")}catch{return null}try{return JSON.stringify(ge(n))}catch{return null}}function ge(n,t=0){if(t>10)return"[truncated-depth]";if(n==null)return n;const e=typeof n;if(e==="string"||e==="number"||e==="boolean")return n;if(e==="bigint")return n.toString();if(e!=="object")return;if(Buffer.isBuffer(n))return`[Buffer ${n.length}b]`;if(ArrayBuffer.isView(n)){const r=n;return`[${r.constructor?.name??"TypedArray"} ${r.byteLength}b]`}if(n instanceof Date)try{return n.toISOString()}catch{return"[Date]"}if(n instanceof Map)return`[Map size=${n.size}]`;if(n instanceof Set)return`[Set size=${n.size}]`;if(Array.isArray(n))return n.map(r=>ge(r,t+1));const o={};for(const r of Object.getOwnPropertyNames(n)){const s=Object.getOwnPropertyDescriptor(n,r);s&&typeof s.get!="function"&&typeof s.set!="function"&&(o[r]=ge(s.value,t+1))}return o}function ot(n){if(!n)return null;try{const t=n.message;if(typeof t=="string"&&t.length>0)return t}catch{}try{const t=String(n);if(typeof t=="string"&&t.length>0)return t}catch{}try{const t=n.name;if(typeof t=="string"&&t.length>0)return t}catch{}return"[unstringifiable error]"}function D(n){const t=p.ContextManager.getInstance().getOrSetSfTraceId(),e=J(t),o=rt(e),r=Date.now(),s=p.getConfig(),d=n.queueUri,l=n.method??"ENQUEUE",c=it(n.messagePayload,s);return{traceId:e,hopEnd:i=>{try{if(!o)return;const u=Date.now();let a=null;try{a=p.getCurrentFunctionSpanId()??null}catch{}const f={apiKey:s.apiKey,requestId:o.requestId,pageVisitId:o.pageVisitId,recordingSessionId:o.sessionId,serviceUuid:s.serviceUUID??null,timestampStart:r.toString(),timestampEnd:u.toString(),responseCode:i?500:0,success:!i,error:ot(i),url:d,method:l,parentSpanId:a};c!==null&&(f.requestBody=c),st(f);try{nt().doSend(f)}catch(h){s.sfDebug&&console.warn("[asyncQueues] producer hop transmit failed:",h)}}catch{}}}}function it(n,t){if(!t.captureRequestBody||n===void 0)return null;const e=Tt(n);return e?(function(o,r){return!r||r<=0?o:o.length>r?o.substring(0,r)+"...[truncated]":o})(e,t.requestBodyLimitBytes):null}function L(n,t){if(Je.getStore()===!0)return Promise.resolve(t());const e=p.ContextManager.getInstance(),o=p.getConfig(),r=n.incomingTraceId!==void 0&&W(n.incomingTraceId)?n.incomingTraceId:`${p.NONSESSION_APPLOGS}-v3/${o.apiKey}/${p.v4()}`,s=n.queueUri,d=n.method,l=n.library,c=it(n.messagePayload,o);return Je.run(!0,()=>e.runScoped({traceId:r},async()=>{const i=Date.now();let u=null;try{const a=await Promise.resolve(t());return await(function(f){return f!==null&&typeof f=="object"&&typeof f.subscribe=="function"?new Promise((h,m)=>{let g,y=!1;try{f.subscribe({next:S=>{g=S,y=!0},error:S=>m(S),complete:()=>h(y?g:void 0)})}catch(S){m(S)}}):f})(a)}catch(a){throw u=a instanceof Error?a:new Error(String(a)),a}finally{(function(a,f,h,m,g,y){try{const S=rt(h);if(!S)return;const I=p.getConfig(),{graceful:E,tag:C}=(function(M){if(!M)return{graceful:!0,tag:null};let H;try{H=M.name}catch{return{graceful:!1,tag:null}}return H==="AbortError"?{graceful:!0,tag:"CONSUME_CANCELLED"}:H==="DelayedError"?{graceful:!0,tag:"CONSUME_RESCHEDULED"}:H==="WaitingChildrenError"?{graceful:!0,tag:"CONSUME_WAITING_CHILDREN"}:{graceful:!1,tag:null}})(y),$=!y&&a.method?a.method:C??a.method??"CONSUME",k=!y||E,T=y&&!E?500:0,_=y&&!E?ot(y):null;let N=null;try{N=p.getCurrentFunctionSpanId()??null}catch{}const F={apiKey:I.apiKey,requestId:S.requestId,pageVisitId:S.pageVisitId,recordingSessionId:S.sessionId,serviceUuid:I.serviceUUID??null,timestampStart:m.toString(),timestampEnd:g.toString(),responseCode:T,success:k,error:_,url:a.queueUri,method:$,parentSpanId:N};f!==null&&(F.requestBody=f),st(F);try{nt().doSend(F)}catch(M){I.sfDebug&&console.warn("[asyncQueues] consumer hop transmit failed:",M)}}catch{}})({library:l,queueUri:s,method:d},c,r,i,Date.now(),u)}}))}const Je=new yt.AsyncLocalStorage;let he=null;function st(n){if(he!==null)try{he(n)}catch{}}const b=Symbol.for("sailfish.async-queues.patched"),w=Symbol.for("sailfish.async-queues.instance-wrapped"),ye=[];function U(n,t,e){if(ye.some(r=>r.proto===n&&r.key===t))return!1;const o=typeof n?.[t]=="function"?n[t]:void 0;try{return n[t]=e,ye.push({proto:n,key:t,original:o}),!0}catch(r){if(p.getConfig().sfDebug){const s=n?.constructor?.name??"<unknown>";console.warn(`[asyncQueues] could not install patch on ${s}.prototype.${t} (frozen / non-writable?):`,r)}return!1}}function A(n,t){try{return n()}catch(e){return p.getConfig().sfDebug&&console.warn(`[asyncQueues] instrumentation rewrite threw in ${t} — falling back to original args, no hop emitted:`,e),null}}function q(n,t){let e=n||"unknown";if(typeof e=="string"){e.startsWith("bull:")&&(e=e.slice(5));const o=/^\{([^}]+)\}:(.+)$/.exec(e);o&&(e=`${o[1]}/${o[2]}`)}return`bullmq://redis/${e}/${t||"unknown"}`}function te(n){return n?.queueQualifiedName??n?.queueName??n?.queue?.name??void 0}function O(n,t){const e=n?{...n}:{},o=e.sf&&typeof e.sf=="object"?e.sf:{};return e.sf={...o,rid:t},e}function qt(n){let t=n;if(!t)try{t=require("bullmq")}catch{return"not-installed"}(function(c){try{const i=c?.version??c?.Queue?.version;if(typeof i!="string")return;parseInt(i.split(".")[0]??"0",10)<3&&p.getConfig().sfDebug&&console.warn(`[sf-veritas] BullMQ ${i} detected. Async-queue tracing is best-supported on BullMQ ≥ 3.0. Some APIs (FlowProducer, upsertJobScheduler, Job.promote) may be missing on older versions and will be skipped silently.`)}catch{}})(t);const e=t.Queue,o=t.Worker;if(!e?.prototype||!o?.prototype)return p.getConfig().sfDebug&&console.warn("[asyncQueues][bullmq] Expected Queue/Worker classes not found on module — skipping patch."),"failed";(function(c){const i=c.prototype.add;if(typeof i!="function"||i[b])return;const u=async function(a,f,h){if(h?.sf?.rid)return i.call(this,a,f,h);const m=A(()=>{const y=D({library:"bullmq",queueUri:q(this?.name,a),messagePayload:f});return{handle:y,nextOpts:O(h,y.traceId)}},"bullmq.Queue.add");if(m===null)return i.call(this,a,f,h);let g=null;try{return await i.call(this,a,f,m.nextOpts)}catch(y){throw g=y instanceof Error?y:new Error(String(y)),y}finally{m.handle.hopEnd(g)}};u[b]=!0,U(c.prototype,"add",u)})(e),(function(c){const i=c.prototype.addBulk;if(typeof i!="function"||i[b])return;const u=async function(a){if(!Array.isArray(a)||a.length===0)return i.call(this,a);if(a.every(g=>g?.opts?.sf?.rid))return i.call(this,a);const f=p.getConfig().bullmqBulkAggregateMode,h=A(()=>{if(f){const S=D({library:"bullmq",queueUri:q(this?.name,`__bulk_${a.length}`),method:"ENQUEUE_BULK",messagePayload:{batchSize:a.length}}),I=a.map(E=>({...E,opts:O(E?.opts,S.traceId)}));return{handles:[S],out:I}}const g=a.map(S=>D({library:"bullmq",queueUri:q(this?.name,S?.name),messagePayload:S?.data})),y=a.map((S,I)=>({...S,opts:O(S?.opts,g[I].traceId)}));return{handles:g,out:y}},"bullmq.Queue.addBulk");if(h===null)return i.call(this,a);let m=null;try{return await i.call(this,h.out)}catch(g){throw m=g instanceof Error?g:new Error(String(g)),g}finally{for(const g of h.handles)g.hopEnd(m)}};u[b]=!0,U(c.prototype,"addBulk",u)})(e),(function(c){const i=c.prototype.upsertJobScheduler;if(typeof i!="function"||i[b])return;const u=async function(a,f,h){const m=A(()=>{const y=D({library:"bullmq",queueUri:q(this?.name,h?.name??a),method:"ENQUEUE"});let S;if(h!==void 0){const I={...h,opts:O(h.opts,y.traceId)};S=[a,f,I]}else S=[a,f];return{handle:y,callArgs:S}},"bullmq.Queue.upsertJobScheduler");if(m===null){const y=h!==void 0?[a,f,h]:[a,f];return i.call(this,...y)}let g=null;try{return await i.call(this,...m.callArgs)}catch(y){throw g=y instanceof Error?y:new Error(String(y)),y}finally{m.handle.hopEnd(g)}};u[b]=!0,U(c.prototype,"upsertJobScheduler",u)})(e),(function(c){const i=c.prototype.getNextJob;if(typeof i!="function"||i[b])return;const u=async function(...a){const f=await i.apply(this,a);if(f&&W(f.opts?.sf?.rid))try{p.ContextManager.getInstance().setTraceId(f.opts.sf.rid)}catch{}return f};u[b]=!0,U(c.prototype,"getNextJob",u)})(e),(function(c){const i=c.prototype.getJob;if(typeof i!="function"||i[b])return;const u=async function(...a){const f=await i.apply(this,a);if(f&&W(f.opts?.sf?.rid))try{const m=p.ContextManager.getInstance();(!(h=m.getTraceId())||h.startsWith("nonsession-applogs-v3/"))&&m.setTraceId(f.opts.sf.rid)}catch{}var h;return f};u[b]=!0,U(c.prototype,"getJob",u)})(e),(function(c){const i=c.prototype.processJob;if(typeof i!="function"||i[b])return;const u=function(a,...f){const h=a?.opts?.sf?.rid,m=typeof a?.attemptsMade=="number"?a.attemptsMade:0,g=typeof a?.stalledCounter=="number"?a.stalledCounter:0,y=a?.repeatJobKey!=null||a?.opts?.repeat!=null,S=h&&(m>0||g>0||y)?J(h):h;let I;return g>0?I="CONSUME_STALLED":y&&m===0&&(I="CONSUME_SCHEDULED"),L({library:"bullmq",queueUri:q(te(a)??this?.name,a?.name),incomingTraceId:S,messagePayload:a?.data,method:I},()=>i.call(this,a,...f))};u[b]=!0,U(c.prototype,"processJob",u)})(o);const r=t.Job;r?.prototype&&(function(c){const i=["retry","moveToDelayed","promote"];for(const u of i){const a=c.prototype[u];if(typeof a!="function"||a[b])continue;const f=u==="promote"?"PROMOTE":u==="moveToDelayed"?"RESCHEDULE":"ENQUEUE_RETRY",h=async function(...m){const g=this?.opts?.sf?.rid;let y;if(g)y=J(g);else{const E=D({queueUri:q(te(this)??this?.name,this?.name),method:f});let C=null;try{return await a.apply(this,m)}catch($){throw C=$ instanceof Error?$:new Error(String($)),$}finally{E.hopEnd(C)}}this.opts&&(this.opts={...this.opts,sf:{...this.opts.sf||{},rid:y}});const S=D({queueUri:q(te(this)??this?.name,this?.name),method:f});let I=null;try{return await a.apply(this,m)}catch(E){throw I=E instanceof Error?E:new Error(String(E)),E}finally{S.hopEnd(I)}};h[b]=!0,U(c.prototype,u,h)}})(r);const s=t.QueueEvents;s?.prototype&&(s.prototype[b]=!1);const d=t.FlowProducer;return d?.prototype&&((function(c){const i=c.prototype.add;if(typeof i!="function"||i[b])return;const u=async function(a,...f){if(!a||typeof a!="object")return i.call(this,a,...f);if(a?.opts?.sf?.rid)return i.call(this,a,...f);const h=A(()=>{const g=[];return{hops:g,out:me(a,g)}},"bullmq.FlowProducer.add");if(h===null)return i.call(this,a,...f);let m=null;try{return await i.call(this,h.out,...f)}catch(g){throw m=g instanceof Error?g:new Error(String(g)),g}finally{for(const g of h.hops)g.hopEnd(m)}};u[b]=!0,U(c.prototype,"add",u)})(d),(function(c){const i=c.prototype.addBulk;if(typeof i!="function"||i[b])return;const u=async function(a){if(!Array.isArray(a)||a.length===0)return i.call(this,a);if(a.every(g=>g?.opts?.sf?.rid))return i.call(this,a);const f=p.getConfig().bullmqBulkAggregateMode,h=A(()=>{if(f){const S=$=>{let k=1;if(Array.isArray($?.children))for(const T of $.children)k+=S(T);return k},I=a.reduce(($,k)=>$+S(k),0),E=D({library:"bullmq-flow",queueUri:q(a[0]?.queueName,`__flow_bulk_${a.length}`),method:"ENQUEUE_BULK",messagePayload:{batchSize:a.length,totalNodes:I}}),C=a.map($=>at($,E.traceId));return{hops:[E],out:C}}const g=[],y=a.map(S=>me(S,g));return{hops:g,out:y}},"bullmq.FlowProducer.addBulk");if(h===null)return i.call(this,a);let m=null;try{return await i.call(this,h.out)}catch(g){throw m=g instanceof Error?g:new Error(String(g)),g}finally{for(const g of h.hops)g.hopEnd(m)}};u[b]=!0,U(c.prototype,"addBulk",u)})(d)),t.QueueScheduler?.prototype&&p.getConfig().sfDebug&&console.log("[sf-veritas] BullMQ QueueScheduler detected (v4 API). No direct instrumentation needed — delayed/repeatable jobs are traced when the Worker picks them up via the Worker.processJob wrap."),"installed"}function me(n,t){const e=D({queueUri:q(n?.queueName,n?.name),messagePayload:n?.data});t.push(e);const o={...n,opts:O(n?.opts,e.traceId)};return Array.isArray(n?.children)&&n.children.length>0&&(o.children=n.children.map(r=>me(r,t))),o}function at(n,t){const e={...n,opts:O(n?.opts,t)};return Array.isArray(n?.children)&&n.children.length>0&&(e.children=n.children.map(o=>at(o,t))),e}function At(n){let t=n;if(!t)try{t=require("@taskforcesh/bullmq-pro")}catch{return"not-installed"}const e=t.QueuePro,o=t.WorkerPro;t.JobPro;const r=t.FlowProducerPro;return e?.prototype||o?.prototype?(e?.prototype&&((function(s){const d=s.prototype.add;if(typeof d!="function"||d[b])return;const l=async function(c,i,u){if(u?.sf?.rid)return d.call(this,c,i,u);const a=A(()=>{const h=D({library:"bullmq-pro",queueUri:q(this?.name,c),messagePayload:i});return{handle:h,nextOpts:O(u,h.traceId)}},"bullmq-pro.QueuePro.add");if(a===null)return d.call(this,c,i,u);let f=null;try{return await d.call(this,c,i,a.nextOpts)}catch(h){throw f=h instanceof Error?h:new Error(String(h)),h}finally{a.handle.hopEnd(f)}};l[b]=!0,U(s.prototype,"add",l)})(e),(function(s){const d=s.prototype.addBulk;if(typeof d!="function"||d[b])return;const l=async function(c){if(!Array.isArray(c)||c.length===0)return d.call(this,c);if(c.every(f=>f?.opts?.sf?.rid))return d.call(this,c);const i=p.getConfig().bullmqBulkAggregateMode,u=A(()=>{if(i){const m=D({library:"bullmq-pro",queueUri:q(this?.name,`__bulk_${c.length}`),method:"ENQUEUE_BULK",messagePayload:{batchSize:c.length}}),g=c.map(y=>({...y,opts:O(y?.opts,m.traceId)}));return{handles:[m],out:g}}const f=c.map(m=>D({library:"bullmq-pro",queueUri:q(this?.name,m?.name),messagePayload:m?.data})),h=c.map((m,g)=>({...m,opts:O(m?.opts,f[g].traceId)}));return{handles:f,out:h}},"bullmq-pro.QueuePro.addBulk");if(u===null)return d.call(this,c);let a=null;try{return await d.call(this,u.out)}catch(f){throw a=f instanceof Error?f:new Error(String(f)),f}finally{for(const f of u.handles)f.hopEnd(a)}};l[b]=!0,U(s.prototype,"addBulk",l)})(e)),o?.prototype&&((function(s){const d=s.prototype.processJob;typeof d!="function"||d[b]||Qe(s,"processJob",d)})(o),(function(s){const d=s.prototype.getNextJob;if(typeof d!="function"||d[b])return;const l=async function(...c){const i=await d.apply(this,c);if(i&&W(i.opts?.sf?.rid))try{const a=p.ContextManager.getInstance();(!(u=a.getTraceId())||u.startsWith("nonsession-applogs-v3/"))&&a.setTraceId(i.opts.sf.rid)}catch{}var u;return i};l[b]=!0,U(s.prototype,"getNextJob",l)})(o),typeof o.prototype.callProcessJob=="function"&&(function(s){const d=s.prototype.callProcessJob;typeof d!="function"||d[b]||Qe(s,"callProcessJob",d)})(o)),r?.prototype&&(function(s){const d=s.prototype.add;if(typeof d!="function"||d[b])return;const l=async function(c,...i){if(!c||typeof c!="object")return d.call(this,c,...i);if(c?.opts?.sf?.rid)return d.call(this,c,...i);const u=A(()=>{const f=[];return{hops:f,out:ct(c,f)}},"bullmq-pro.FlowProducerPro.add");if(u===null)return d.call(this,c,...i);let a=null;try{return await d.call(this,u.out,...i)}catch(f){throw a=f instanceof Error?f:new Error(String(f)),f}finally{for(const f of u.hops)f.hopEnd(a)}};l[b]=!0,U(s.prototype,"add",l)})(r),"installed"):(p.getConfig().sfDebug&&console.warn("[asyncQueues][bullmq-pro] No QueuePro/WorkerPro found — patch no-op."),"failed")}function Qe(n,t,e){const o=function(r,...s){const d=r?.opts?.sf?.rid,l=typeof r?.attemptsMade=="number"?r.attemptsMade:0,c=typeof r?.stalledCounter=="number"?r.stalledCounter:0,i=r?.repeatJobKey!=null||r?.opts?.repeat!=null,u=W(d)&&(l>0||c>0||i)?J(d):W(d)?d:void 0;let a;return c>0?a="CONSUME_STALLED":i&&l===0&&(a="CONSUME_SCHEDULED"),L({library:"bullmq-pro",queueUri:q(te(r)??this?.name,r?.name),incomingTraceId:u,messagePayload:r?.data,method:a},()=>e.call(this,r,...s))};o[b]=!0,U(n.prototype,t,o)}function ct(n,t,e=0){if(e>100)return n;const o=D({queueUri:q(n?.queueName,n?.name),messagePayload:n?.data});t.push(o);const r={...n,opts:O(n?.opts,o.traceId)};return Array.isArray(n?.children)&&n.children.length>0&&(r.children=n.children.map(s=>ct(s,t,e+1))),r}const Se=Q.toLowerCase();function j(n){if(n!=null){if(typeof n=="string")return n;if(Buffer.isBuffer(n))try{return n.toString("utf8")}catch{return}if(n instanceof Uint8Array)try{return Buffer.from(n).toString("utf8")}catch{return}return String(n)}}function R(n,t="broker"){return`kafka://${t}/${n??"unknown"}`}function G(n){if(Array.isArray(n))for(const t of n){if(!t||typeof t!="object")continue;const e=t.key;if(typeof e=="string"&&e.toLowerCase()===Se)return j(t.value)}}function ut(n,t){const e=[];if(Array.isArray(n)){for(const o of n)if(o&&typeof o=="object"){const r=o.key,s=o.value;typeof r=="string"&&r.toLowerCase()===Se||e.push({key:String(r),value:Buffer.isBuffer(s)?s:Buffer.from(String(s??""))})}}else if(n&&typeof n=="object")for(const[o,r]of Object.entries(n))o.toLowerCase()!==Se&&e.push({key:o,value:Buffer.isBuffer(r)?r:Buffer.from(String(r??""))});return e.push({key:Q,value:Buffer.from(t)}),e}function Bt(n){let t=n;if(!t)try{t=require("@confluentinc/kafka-javascript")}catch{return"not-installed"}let e=!1;t.KafkaProducer?.prototype&&((function(r){const s=r.prototype.produce;if(typeof s!="function"||s[b])return;const d=function(...l){return l.length===1&&l[0]&&typeof l[0]=="object"&&Array.isArray(l[0].messages)?Ot.call(this,s,l[0]):Lt.call(this,s,l)};d[b]=!0,U(r.prototype,"produce",d)})(t.KafkaProducer),e=!0),t.KafkaConsumer?.prototype&&((function(r){const s=r.prototype.on;if(typeof s!="function"||s[b])return;const d=function(l,c){if(l!=="data"||typeof c!="function")return s.call(this,l,c);const i=function(u){const a=G(u?.headers),f=u?.topic,h=j(u?.value)??u?.value;return L({library:"confluent-kafka-js",queueUri:R(f),incomingTraceId:a,messagePayload:h},()=>c.call(this,u))};return s.call(this,l,i)};d[b]=!0,U(r.prototype,"on",d)})(t.KafkaConsumer),e=!0);const o=t.KafkaJS??t;return o?.Producer?.prototype?.send&&((function(r){const s=r.prototype.send;if(typeof s=="function"&&!s[b]){const c=be(s);c[b]=!0,U(r.prototype,"send",c)}const d=r.prototype.sendBatch;if(typeof d=="function"&&!d[b]){const c=Ie(d);c[b]=!0,U(r.prototype,"sendBatch",c)}const l=r.prototype.transaction;if(typeof l=="function"&&!l[b]){const c=ze(l);c[b]=!0,U(r.prototype,"transaction",c)}})(o.Producer),e=!0),o?.Consumer?.prototype?.run&&((function(r){const s=r.prototype.run;if(typeof s!="function"||s[b])return;const d=async function(l){if(!l||typeof l!="object")return s.call(this,l);const c={...l};if(typeof l.eachMessage=="function"){const i=l.eachMessage;c.eachMessage=u=>{const a=j(K(u?.message?.headers))??G(u?.message?.headers),f=typeof u?.attempt=="number"?u.attempt:0,h=a&&f>0?J(a):a;return L({library:"confluent-kafka-js",queueUri:R(u?.topic),incomingTraceId:h},()=>i(u))}}if(typeof l.eachBatch=="function"){const i=l.eachBatch;c.eachBatch=u=>{let a=!1;try{typeof u?.isStale=="function"&&(a=!!u.isStale())}catch{}if(a)return i(u);const f=Array.isArray(u?.batch?.messages)?u.batch.messages[0]:void 0,h=j(K(f?.headers))??G(f?.headers);return L({library:"confluent-kafka-js",queueUri:R(u?.batch?.topic),incomingTraceId:h},()=>i(u))}}return s.call(this,c)};d[b]=!0,U(r.prototype,"run",d)})(o.Consumer),e=!0),typeof o?.Kafka=="function"&&o.Kafka.prototype&&((function(r){const s=r.prototype.producer;if(typeof s=="function"&&!s[b]){const l=function(...c){const i=s.apply(this,c);return i&&typeof i.send=="function"&&!i.send[w]&&(i.send=be(i.send.bind(i)),i.send[w]=!0),i&&typeof i.sendBatch=="function"&&!i.sendBatch[w]&&(i.sendBatch=Ie(i.sendBatch.bind(i)),i.sendBatch[w]=!0),i&&typeof i.transaction=="function"&&!i.transaction[w]&&(i.transaction=ze(i.transaction.bind(i)),i.transaction[w]=!0),i};l[b]=!0,U(r.prototype,"producer",l)}const d=r.prototype.consumer;if(typeof d=="function"&&!d[b]){const l=function(...c){const i=d.apply(this,c);if(i&&typeof i.run=="function"&&!i.run[w]){const u=i.run.bind(i);i.run=async function(a){if(!a||typeof a!="object")return u(a);const f={...a};if(typeof a.eachMessage=="function"){const h=a.eachMessage;f.eachMessage=m=>{const g=j(K(m?.message?.headers))??G(m?.message?.headers);return L({library:"confluent-kafka-js",queueUri:R(m?.topic),incomingTraceId:g},()=>h(m))}}if(typeof a.eachBatch=="function"){const h=a.eachBatch;f.eachBatch=m=>{let g=!1;try{typeof m?.isStale=="function"&&(g=!!m.isStale())}catch{}if(g)return h(m);const y=Array.isArray(m?.batch?.messages)?m.batch.messages[0]:void 0,S=j(K(y?.headers))??G(y?.headers);return L({library:"confluent-kafka-js",queueUri:R(m?.batch?.topic),incomingTraceId:S},()=>h(m))}}return u(f)},i.run[w]=!0}return i};l[b]=!0,U(r.prototype,"consumer",l)}})(o.Kafka),e=!0),e?"installed":(p.getConfig().sfDebug&&console.warn("[asyncQueues][confluentKafkaJs] No recognizable Producer/Consumer/Kafka class — patch no-op."),"failed")}function Ot(n,t){const e=A(()=>{const r=t?.topic,s=t.messages.map(()=>D({library:"confluent-kafka-js",queueUri:R(r),method:"ENQUEUE_BUFFERED"})),d=t.messages.map((l,c)=>({...l,headers:ut(l?.headers,s[c].traceId)}));return{handles:s,outOptions:{...t,messages:d}}},"confluentKafkaJs.KafkaProducer.produce(object)");if(e===null)return n.call(this,t);let o=null;try{return n.call(this,e.outOptions)}catch(r){throw o=r instanceof Error?r:new Error(String(r)),r}finally{for(const r of e.handles)r.hopEnd(o)}}function Lt(n,t){const[e,o,r,s,d,l,c]=t,i=A(()=>{const a=D({library:"confluent-kafka-js",queueUri:R(typeof e=="string"?e:void 0),method:"ENQUEUE_BUFFERED"});return{handle:a,injectedHeaders:ut(c,a.traceId)}},"confluentKafkaJs.KafkaProducer.produce(positional)");if(i===null)return n.call(this,e,o,r,s,d,l,c);let u=null;try{return n.call(this,e,o,r,s,d,l,i.injectedHeaders)}catch(a){throw u=a instanceof Error?a:new Error(String(a)),a}finally{i.handle.hopEnd(u)}}function be(n,t={}){const e=t.method??"ENQUEUE",o=t.library??"confluent-kafka-js";return async function(r){if(!r||!Array.isArray(r.messages))return n.call(this,r);const s=A(()=>{const l=r.messages.map(()=>D({library:o,queueUri:R(r.topic),method:e})),c=r.messages.map((i,u)=>({...i,headers:{...i?.headers||{},[Q]:Buffer.from(l[u].traceId)}}));return{handles:l,outPayload:{...r,messages:c}}},`confluentKafkaJs.Producer.${e}`);if(s===null)return n.call(this,r);let d=null;try{return await n.call(this,s.outPayload)}catch(l){throw d=l instanceof Error?l:new Error(String(l)),l}finally{for(const l of s.handles)l.hopEnd(d)}}}function Ie(n,t={}){const e=t.method??"ENQUEUE",o=t.library??"confluent-kafka-js";return async function(r){if(!r||!Array.isArray(r.topicMessages))return n.call(this,r);const s=A(()=>{const l=[],c=r.topicMessages.map(i=>{const u=(Array.isArray(i?.messages)?i.messages:[]).map(a=>{const f=D({library:o,queueUri:R(i?.topic),method:e});return l.push(f),{...a,headers:{...a?.headers||{},[Q]:Buffer.from(f.traceId)}}});return{...i,messages:u}});return{handles:l,outPayload:{...r,topicMessages:c}}},`confluentKafkaJs.Producer.sendBatch[${e}]`);if(s===null)return n.call(this,r);let d=null;try{return await n.call(this,s.outPayload)}catch(l){throw d=l instanceof Error?l:new Error(String(l)),l}finally{for(const l of s.handles)l.hopEnd(d)}}}function Ge(n,t){return async function(...e){const o=D({queueUri:"kafka://broker/_tx",method:t});let r=null;try{return await n.apply(this,e)}catch(s){throw r=s instanceof Error?s:new Error(String(s)),s}finally{o.hopEnd(r)}}}function ze(n){return async function(...t){const e=await n.apply(this,t);return e&&typeof e.send=="function"&&!e.send[w]&&(e.send=be(e.send.bind(e),{method:"ENQUEUE_TX",library:"confluent-kafka-js-tx"}),e.send[w]=!0),e&&typeof e.sendBatch=="function"&&!e.sendBatch[w]&&(e.sendBatch=Ie(e.sendBatch.bind(e),{method:"ENQUEUE_TX",library:"confluent-kafka-js-tx"}),e.sendBatch[w]=!0),e&&typeof e.commit=="function"&&!e.commit[w]&&(e.commit=Ge(e.commit.bind(e),"COMMIT_TX"),e.commit[w]=!0),e&&typeof e.abort=="function"&&!e.abort[w]&&(e.abort=Ge(e.abort.bind(e),"ABORT_TX"),e.abort[w]=!0),e}}function ue(n){if(n!=null){if(typeof n=="string")return n;if(Buffer.isBuffer(n))try{return n.toString("utf8")}catch{return}if(n instanceof Uint8Array)try{return Buffer.from(n).toString("utf8")}catch{return}return String(n)}}function ne(n,t){return`kafka://broker/${n??"unknown"}`}function Rt(n){let t=n;if(!t)try{t=require("kafkajs")}catch{return"not-installed"}const e=t.Producer,o=t.Consumer;e?.prototype&&typeof e.prototype.send=="function"&&(function(s){const d=s.prototype.send;if(typeof d=="function"&&!d[b]){const i=ve(d);i[b]=!0,U(s.prototype,"send",i)}const l=s.prototype.sendBatch;if(typeof l=="function"&&!l[b]){const i=Ee(l);i[b]=!0,U(s.prototype,"sendBatch",i)}const c=s.prototype.transaction;if(typeof c=="function"&&!c[b]){const i=Xe(c);i[b]=!0,U(s.prototype,"transaction",i)}})(e),o?.prototype&&typeof o.prototype.run=="function"&&(function(s){const d=s.prototype.run;if(typeof d!="function"||d[b])return;const l=Ye(d);l[b]=!0,U(s.prototype,"run",l)})(o);const r=t.Kafka;if(typeof r=="function"&&r.prototype)(function(s){const d=s.prototype.producer;if(typeof d=="function"&&!d[b]){const c=function(...i){const u=d.apply(this,i);return u&&typeof u.send=="function"&&!u.send[w]&&(u.send=ve(u.send.bind(u)),u.send[w]=!0),u&&typeof u.sendBatch=="function"&&!u.sendBatch[w]&&(u.sendBatch=Ee(u.sendBatch.bind(u)),u.sendBatch[w]=!0),u&&typeof u.transaction=="function"&&!u.transaction[w]&&(u.transaction=Xe(u.transaction.bind(u)),u.transaction[w]=!0),u};c[b]=!0,U(s.prototype,"producer",c)}const l=s.prototype.consumer;if(typeof l=="function"&&!l[b]){const c=function(...i){const u=l.apply(this,i);return u&&typeof u.run=="function"&&!u.run[w]&&(u.run=Ye(u.run.bind(u)),u.run[w]=!0),u};c[b]=!0,U(s.prototype,"consumer",c)}})(r);else if(!e?.prototype&&!o?.prototype)return p.getConfig().sfDebug&&console.warn("[asyncQueues][kafkajs] No Kafka/Producer/Consumer class found — patch no-op."),"failed";return"installed"}function ve(n,t={}){const e=t.method??"ENQUEUE",o=t.library??"kafkajs";return async function(r){if(!r||!Array.isArray(r.messages))return n.call(this,r);const s=A(()=>{const l=r.topic,c=r.messages.map(()=>D({library:o,queueUri:ne(l),method:e})),i=r.messages.map((a,f)=>lt(a,c[f].traceId)),u={...r,messages:i};return{handles:c,outPayload:u}},`kafkajs.Producer.${e}`);if(s===null)return n.call(this,r);let d=null;try{return await n.call(this,s.outPayload)}catch(l){throw d=l instanceof Error?l:new Error(String(l)),l}finally{for(const l of s.handles)l.hopEnd(d)}}}function Ee(n,t={}){const e=t.method??"ENQUEUE",o=t.library??"kafkajs";return async function(r){if(!r||!Array.isArray(r.topicMessages))return n.call(this,r);const s=A(()=>{const l=[],c=r.topicMessages.map(u=>{const a=u?.topic,f=(Array.isArray(u?.messages)?u.messages:[]).map(h=>{const m=D({library:o,queueUri:ne(a),method:e});return l.push(m),lt(h,m.traceId)});return{...u,messages:f}}),i={...r,topicMessages:c};return{handles:l,outPayload:i}},`kafkajs.Producer.sendBatch[${e}]`);if(s===null)return n.call(this,r);let d=null;try{return await n.call(this,s.outPayload)}catch(l){throw d=l instanceof Error?l:new Error(String(l)),l}finally{for(const l of s.handles)l.hopEnd(d)}}}function Ve(n,t){return async function(...e){const o=D({queueUri:"kafka://broker/_tx",method:t});let r=null;try{return await n.apply(this,e)}catch(s){throw r=s instanceof Error?s:new Error(String(s)),s}finally{o.hopEnd(r)}}}function Xe(n){return async function(...t){const e=await n.apply(this,t);return e&&typeof e.send=="function"&&!e.send[w]&&(e.send=ve(e.send.bind(e),{method:"ENQUEUE_TX",library:"kafkajs-tx"}),e.send[w]=!0),e&&typeof e.sendBatch=="function"&&!e.sendBatch[w]&&(e.sendBatch=Ee(e.sendBatch.bind(e),{method:"ENQUEUE_TX",library:"kafkajs-tx"}),e.sendBatch[w]=!0),e&&typeof e.commit=="function"&&!e.commit[w]&&(e.commit=Ve(e.commit.bind(e),"COMMIT_TX"),e.commit[w]=!0),e&&typeof e.abort=="function"&&!e.abort[w]&&(e.abort=Ve(e.abort.bind(e),"ABORT_TX"),e.abort[w]=!0),e}}function lt(n,t){const e={...n?.headers||{}};return e[Q]=Buffer.from(t),{...n,headers:e}}function Ye(n){return async function(t){if(!t||typeof t!="object")return n.call(this,t);const e={...t};if(typeof t.eachMessage=="function"){const o=t.eachMessage;e.eachMessage=r=>(async function(s,d){const l=s?.topic,c=s?.message,i=ue(K(c?.headers)),u=typeof s?.attempt=="number"?s.attempt:0,a=i&&u>0?J(i):i,f=ue(c?.value)??c?.value;return L({library:"kafkajs",queueUri:ne(l),incomingTraceId:a,messagePayload:f},()=>d(s))})(r,o)}if(typeof t.eachBatch=="function"){const o=t.eachBatch;e.eachBatch=r=>(async function(s,d){let l=!1;try{typeof s?.isStale=="function"&&(l=!!s.isStale())}catch{}if(l)return d(s);const c=s?.batch?.topic,i=Array.isArray(s?.batch?.messages)?s.batch.messages[0]:void 0,u=ue(K(i?.headers));return L({library:"kafkajs",queueUri:ne(c),incomingTraceId:u},()=>d(s))})(r,o)}return n.call(this,e)}}function Mt(n){return process.env[n]==="true"}const Ht=[{name:"bullmq",envDisableKey:"SF_DISABLE_BULLMQ",install:()=>qt()},{name:"@taskforcesh/bullmq-pro",envDisableKey:"SF_DISABLE_BULLMQ_PRO",install:()=>At()},{name:"kafkajs",envDisableKey:"SF_DISABLE_KAFKAJS",install:()=>Rt()},{name:"@confluentinc/kafka-javascript",envDisableKey:"SF_DISABLE_CONFLUENT_KAFKA_JS",install:()=>Bt()}];let Y=!1,le=!1,de=!1,fe=null;function Z(n){const t=p.getGlobalConfigUnsafe(),e=t?.sfDebug||!1;e&&console.log("[FuncSpan] captureSpanData called for:",{function:n.functionName,file:n.filePath,duration:`${n.duration}ms`,async:n.async,error:n.error,spanId:n.spanId});const o={functionName:n.functionName,filePath:n.filePath,metadata:n.metadata,args:n.args,result:n.result,error:n.error,duration:n.duration,durationNs:n.durationNs,async:n.async,spanId:n.spanId,parentSpanId:n.parentSpanId};process.env.SF_FUNCSPAN_CONSOLE_OUTPUT==="true"&&console.log(`
|
|
182
|
+
📊 Function Span:`,{function:`${n.functionName} (${n.filePath}:${n.metadata.line}:${n.metadata.column})`,duration:`${n.duration.toFixed(2)}ms`,arguments:n.args,result:n.error?`Error: ${n.error}`:n.result,spanId:n.spanId,parentSpanId:n.parentSpanId||"none"});const r=process.env.SF_FUNCSPAN_JSONL_FILE;if(r)try{const s=r==="true"||r==="1"?"funcspans.jsonl":r,d=Date.now(),l=process.hrtime.bigint(),c=BigInt(n.startTimeNs),i=Number(l-c)/1e6,u=new Date(d-i).toISOString(),a=JSON.stringify({timestamp:u,functionName:n.functionName,filePath:n.filePath,line:n.metadata.line,column:n.metadata.column,duration:n.duration,durationNs:n.durationNs,startTimeNs:n.startTimeNs,arguments:n.args,returnValue:n.error?{error:String(n.error)}:n.result,spanId:n.spanId,parentSpanId:n.parentSpanId,async:n.async,pid:n.pid,threadId:n.threadId})+`
|
|
183
|
+
`;$e.appendFileSync(s,a,"utf-8")}catch(s){console.error("[FuncSpan] Error writing to JSONL file:",s)}if(e&&console.log("[FuncSpan] Sending function span to transmitter:",o),process.env.SF_FUNCSPAN_SKIP_BACKEND!=="true")try{(fe||(fe=new v.FunctionSpanTransmitter),fe).send([o]),e&&console.log("[FuncSpan] Function span sent successfully")}catch(s){e&&console.error("[FuncSpan] Error sending function span:",s)}}exports.ContextManager=p.ContextManager,exports.getCurrentFunctionSpanId=p.getCurrentFunctionSpanId,exports.runWithContext=p.runWithContext,exports.clearFuncspanOverride=v.clearFuncspanOverride,exports.getDefaultConfig=v.getDefaultConfig,exports.getEnvConfig=v.getEnvConfig,exports.getFuncspanOverride=v.getFuncspanOverride,exports.parseHeaderOverride=v.parseHeaderOverride,exports.setFuncspanOverride=v.setFuncspanOverride,exports.isProductionEnvironment=P.isProductionEnvironment,exports.isRuntimeModeEnabled=P.isRuntimeModeEnabled,exports.shouldEnableRuntimeHooks=P.shouldEnableRuntimeHooks,exports.setSkipTypeScriptPlugin=re.setSkipTypeScriptPlugin,exports.transformFunctionSpans=re.transformFunctionSpans,exports.transformFunctionSpansSync=re.transformFunctionSpansSync,exports._setAsyncQueueHopSpy=function(n){he=n},exports.addOrUpdateMetadata=function(n,t={},e,o=!1){const r=p.getConfig();new ke(r.apiKey).addOrUpdateMetadata(n,t,e,o)},exports.captureFunctionSpan=function(n,t,e,o){const r=function(...s){const d=p.getGlobalConfigUnsafe(),l=d?.sfDebug||!1;l&&console.log(`[FuncSpan] captureFunctionSpan wrapper called for ${e}::${t}`);const c=(function(g,y){const S=v.getFuncspanOverride();if(S){const I=v.parseHeaderOverride(S);if(I)return process.env.SF_DEBUG==="true"&&console.log(`[FuncSpan] Using HTTP header override for ${g}::${y}`),I}try{return qe(g,y)}catch{return{sample_rate:process.env.SF_FUNCSPAN_SAMPLE_RATE?parseFloat(process.env.SF_FUNCSPAN_SAMPLE_RATE):1,capture_arguments:!0,capture_return_value:!0,arg_limit_mb:1,return_limit_mb:1,enable_sampling:!1,autocapture_all_child_functions:!1,capture_sf_veritas:!1,parse_json_strings:!1}}})(e,t);if(l&&console.log(`[FuncSpan] Config for ${e}::${t}:`,c),c.enable_sampling&&c.sample_rate<1&&Math.random()>c.sample_rate)return l&&console.log(`[FuncSpan] Skipping ${t} due to sampling`),n.apply(this,s);if(c.sample_rate===0)return l&&console.log(`[FuncSpan] Skipping ${t} - sample_rate is 0.0`),n.apply(this,s);l&&console.log(`[FuncSpan] Capturing function span for ${t}`);const i=p.ContextManager.getInstance(),u=i.getCurrentFunctionSpanId(),a=p.v4();i.setCurrentFunctionSpanId(a);const f=process.hrtime.bigint(),h=Date.now();let m=null;c.capture_arguments&&(m={},o.paramNames.forEach((g,y)=>{y<s.length&&(m[g]=s[y])}),m&&c.arg_limit_mb>0&&(m=v.truncateToLimit(m,c.arg_limit_mb)));try{const g=n.apply(this,s);if(g&&typeof g.then=="function")return u?i.setCurrentFunctionSpanId(u):i.clearCurrentFunctionSpanId(),g.then(C=>{const $=process.hrtime.bigint(),k=Date.now(),T=Number($-f);let _=null;return c.capture_return_value&&c.return_limit_mb>0&&(_=v.truncateToLimit(C,c.return_limit_mb)),Z({functionName:t,filePath:e,metadata:o,args:m,result:_,error:null,duration:k-h,durationNs:T,startTimeNs:f.toString(),async:!0,spanId:a,parentSpanId:u,pid:process.pid,threadId:X.threadId}),C},C=>{const $=process.hrtime.bigint(),k=Date.now(),T=Number($-f);throw Z({functionName:t,filePath:e,metadata:o,args:m,result:null,error:C?.message||String(C),duration:k-h,durationNs:T,startTimeNs:f.toString(),async:!0,spanId:a,parentSpanId:u,pid:process.pid,threadId:X.threadId}),C});const y=process.hrtime.bigint(),S=Date.now(),I=Number(y-f);let E=null;return c.capture_return_value&&c.return_limit_mb>0&&(E=v.truncateToLimit(g,c.return_limit_mb)),Z({functionName:t,filePath:e,metadata:o,args:m,result:E,error:null,duration:S-h,durationNs:I,startTimeNs:f.toString(),async:!1,spanId:a,parentSpanId:u,pid:process.pid,threadId:X.threadId}),u?i.setCurrentFunctionSpanId(u):i.clearCurrentFunctionSpanId(),g}catch(g){const y=process.hrtime.bigint(),S=Date.now(),I=Number(y-f);throw Z({functionName:t,filePath:e,metadata:o,args:m,result:null,error:g?.message||String(g),duration:S-h,durationNs:I,startTimeNs:f.toString(),async:!1,spanId:a,parentSpanId:u,pid:process.pid,threadId:X.threadId}),u?i.setCurrentFunctionSpanId(u):i.clearCurrentFunctionSpanId(),g}};Object.defineProperty(r,"name",{value:t,writable:!1});for(const s in n)n.hasOwnProperty(s)&&(r[s]=n[s]);return r},exports.getGlobalConfig=qe,exports.identify=function(n,t,e,o=!1){const r=p.getConfig();new ke(r.apiKey).identify(n,t,e,o)},exports.initializeConfigLoader=Te,exports.initializeWorkerPoolPatching=xe,exports.isAlreadyInstrumented=function(n){return!!n.includes("captureFunctionSpan(")||!!n.includes("@sailfish-ai/sf-veritas")||!(!n.includes("/* @sailfish-instrumented */")&&!n.includes("// @sailfish-instrumented"))},exports.isAsyncQueuePatchesInstalled=function(){return Y},exports.isConfigLoaderInitialized=Ae,exports.isSetupInterceptorsInitialized=function(){return le},exports.isWorkerPoolInitialized=je,exports.setupInterceptors=function(n){if(de)console.warn("[setupInterceptors] ⚠️ Recursive call detected and blocked!");else if(!le){de=!0,v.registerShutdownHooks();try{let t,e;const o=P.stackToString(new Error().stack);if(o){const l=o.split(`
|
|
184
|
+
`)[2]||"",c=l.match(/\((.+):(\d+):\d+\)/)||l.match(/at (.+):(\d+):\d+/);c&&(t=c[1],e=parseInt(c[2],10))}if(!n||!n.apiKey){const l=`The required API Key is not provided: ${JSON.stringify(n)}`;console.error(l)}const{config:r}=p.getOrCreateConfig(n);if(p.backfillGitInfoAsync(r).catch(()=>{}),t&&(r.setupInterceptorsFile=t),e&&(r.setupInterceptorsLine=e),r.sfDebug&&console.log("Updated configuration after applying options:",r),!r.apiKey||!r.apiGraphqlEndpoint){const l=`The required config is not provided: ${JSON.stringify(r)}`;throw console.error(l),new Error(l)}Ae()||Te(void 0,r.sfDebug).catch(l=>{r.sfDebug&&console.error("[FuncSpan] Failed to initialize config loader:",l)}),process.env.SF_WORKER_POOL_DISABLED==="true"?r.sfDebug&&console.log("[setupInterceptors] Worker pool patching DISABLED (SF_WORKER_POOL_DISABLED=true)"):je()||(xe(),r.sfDebug&&console.log("[setupInterceptors] Worker pool patching initialized (DNS tracking enabled)"));const s=new Ce;s.setServiceUUID(r.serviceUUID),P.initializeLogInterceptor(s),(function(l=[]){const c=new _t(l);new Et().doSend(c.getExcludedDomains());const i=new $t,u=new Ze;c.patchFetch(i,u),c.patchHttp(i,u)})(r.domainsToNotPropagateHeadersTo);const d=new bt;d.setServiceUUID(r.serviceUUID),P.initializeExceptionInterceptor(d),vt(),new Ct().send(),(function(){if(Y)return;if(Y=!0,process.env.SF_DISABLE_QUEUE_PATCHES==="true")return void(p.getConfig().sfDebug&&console.log("[sf-veritas] Async queue tracing DISABLED via SF_DISABLE_QUEUE_PATCHES=true"));const l=p.getConfig(),c=[],i=[],u=[],a=[];for(const{name:h,envDisableKey:m,install:g}of Ht){if(Mt(m)){u.push(h);continue}let y="failed";try{y=g()}catch(S){l.sfDebug&&console.warn(`[asyncQueues] Failed to install ${h} patch:`,S),a.push(h);continue}y==="installed"?c.push(h):y==="not-installed"?i.push(h):a.push(h)}const f=[`active: ${c.length?c.join(", "):"(none)"}`];i.length&&f.push(`skipped (not installed): ${i.join(", ")}`),u.length&&f.push(`disabled by env: ${u.join(", ")}`),a.length&&f.push(`failed: ${a.join(", ")}`),(l.sfDebug||a.length>0)&&console.log(`[sf-veritas] Async queue tracing — ${f.join("; ")}`)})(),le=!0,r.sfDebug&&console.log("[setupInterceptors] ✅ Initialization complete")}finally{de=!1}}},exports.uninstallAsyncQueuePatches=function(){const n=(function(){let t=0;for(const{proto:e,key:o,original:r}of ye.splice(0))try{r===void 0?delete e[o]:e[o]=r,t+=1}catch{}return t})();return Y=!1,n};
|