@zuplo/otel 0.0.0 → 5.1958.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.min.cjs CHANGED
@@ -22,5 +22,5 @@
22
22
  * DEALINGS IN THE SOFTWARE.
23
23
  *--------------------------------------------------------------------------------------------*/
24
24
 
25
- "use strict";var A=Object.defineProperty;var Le=Object.getOwnPropertyDescriptor;var ke=Object.getOwnPropertyNames;var He=Object.prototype.hasOwnProperty;var a=(r,e)=>A(r,"name",{value:e,configurable:!0});var Oe=(r,e)=>{for(var t in e)A(r,t,{get:e[t],enumerable:!0})},Me=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ke(e))!He.call(r,o)&&o!==t&&A(r,o,{get:()=>e[o],enumerable:!(n=Le(e,o))||n.enumerable});return r};var Ne=r=>Me(A({},"__esModule",{value:!0}),r);var ot={};Oe(ot,{OpenTelemetryPlugin:()=>q});module.exports=Ne(ot);var ee=require("node:buffer");globalThis.Buffer=ee.Buffer;var Ie=require("@zuplo/runtime");var m=require("@opentelemetry/api");var W=require("@opentelemetry/api");var te=Symbol("Otel Tracing Configuration");function re(r,e=W.context.active()){return e.setValue(te,r)}a(re,"setConfig");function S(){return W.context.active().getValue(te)}a(S,"getActiveConfig");var B=Symbol("unwrap");function ne(r){return r&&!!r[B]}a(ne,"isWrapped");function qe(r){return typeof r=="object"||typeof r=="function"}a(qe,"isProxyable");function R(r,e,t=!0){if(ne(r)||!qe(r))return r;let n=Object.assign({},e);return n.get=(o,s,p)=>{if(s===B)return r;if(e.get)return e.get(o,s,p);if(s==="bind")return()=>p;if(t)return U(o,s)},n.apply=(o,s,p)=>{if(e.apply)return e.apply(y(o),y(s),p)},new Proxy(r,n)}a(R,"wrap");function y(r){return r&&ne(r)?r[B]:r}a(y,"unwrap");function U(r,e,t){let n=Reflect.get(y(r),e);return typeof n=="function"?(t=t||y(r),n.bind(t)):n}a(U,"passthroughGet");var ae=require("@opentelemetry/api");var l=require("@opentelemetry/api"),oe=require("@opentelemetry/core"),F=require("@opentelemetry/sdk-trace-base");var I=require("@opentelemetry/api"),f=require("@opentelemetry/core"),b=require("@opentelemetry/semantic-conventions");function ze(r){let e={};return typeof r=="string"?e[b.SemanticAttributes.EXCEPTION_MESSAGE]=r:(r.code?e[b.SemanticAttributes.EXCEPTION_TYPE]=r.code.toString():r.name&&(e[b.SemanticAttributes.EXCEPTION_TYPE]=r.name),r.message&&(e[b.SemanticAttributes.EXCEPTION_MESSAGE]=r.message),r.stack&&(e[b.SemanticAttributes.EXCEPTION_STACKTRACE]=r.stack)),e}a(ze,"transformExceptionAttributes");function G(r){return[Math.trunc(r/1e3),r%1e3*1e6]}a(G,"millisToHr");function $(r){let e=Date.now();if(r){if(r instanceof Date)return G(r.getTime());if(typeof r=="number")return G(r);if(Array.isArray(r))return r}else return G(e);let t=r;throw new Error(`unreachable value: ${JSON.stringify(t)}`)}a($,"getHrTime");var w=class{static{a(this,"SpanImpl")}name;_spanContext;onEnd;parentSpanId;kind;attributes;status={code:I.SpanStatusCode.UNSET};endTime=[0,0];_duration=[0,0];startTime;events=[];links;resource;instrumentationLibrary={name:"@zuplo/otel"};_ended=!1;_droppedAttributesCount=0;_droppedEventsCount=0;_droppedLinksCount=0;constructor(e){this.name=e.name,this._spanContext=e.spanContext,this.parentSpanId=e.parentSpanId,this.kind=e.spanKind||I.SpanKind.INTERNAL,this.attributes=(0,f.sanitizeAttributes)(e.attributes),this.startTime=$(e.startTime),this.links=e.links||[],this.resource=e.resource,this.onEnd=e.onEnd}spanContext(){return this._spanContext}setAttribute(e,t){return(0,f.isAttributeKey)(e)&&(0,f.isAttributeValue)(t)&&(this.attributes[e]=t),this}setAttributes(e){for(let[t,n]of Object.entries(e))this.setAttribute(t,n);return this}addEvent(e,t,n){(0,f.isTimeInput)(t)&&(n=t,t=void 0);let o=(0,f.sanitizeAttributes)(t),s=$(n);return this.events.push({name:e,attributes:o,time:s}),this}setStatus(e){return this.status=e,this}updateName(e){return this.name=e,this}end(e){this._ended||(this._ended=!0,this.endTime=$(e),this._duration=(0,f.hrTimeDuration)(this.startTime,this.endTime),this.onEnd(this))}isRecording(){return!this._ended}recordException(e,t){let n=ze(e);this.addEvent("exception",n,t)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}};var P=class{static{a(this,"WorkerTracer")}_spanProcessors;resource;idGenerator=new F.RandomIdGenerator;constructor(e,t){this._spanProcessors=e,this.resource=t}get spanProcessors(){return this._spanProcessors}addToResource(e){this.resource.merge(e)}startSpan(e,t={},n=l.context.active()){t.root&&(n=l.trace.deleteSpan(n));let s=l.trace.getSpan(n)?.spanContext(),p=s&&l.trace.isSpanContextValid(s),i=p?s.traceId:this.idGenerator.generateTraceId(),u=t.kind||l.SpanKind.INTERNAL,c=(0,oe.sanitizeAttributes)(t.attributes),d=S().sampling.headSampler.shouldSample(n,i,e,u,c,[]),{decision:v,traceState:z,attributes:D}=d,J=Object.assign({},c,D),C=this.idGenerator.generateSpanId(),Q=p?s.spanId:void 0,E=v===F.SamplingDecision.RECORD_AND_SAMPLED?l.TraceFlags.SAMPLED:l.TraceFlags.NONE,j={traceId:i,spanId:C,traceFlags:E,traceState:z},_=new w({attributes:J,name:e,onEnd:x=>{this.spanProcessors.forEach(Fe=>{Fe.onEnd(x)})},resource:this.resource,spanContext:j,parentSpanId:Q,spanKind:u,startTime:t.startTime});return this.spanProcessors.forEach(x=>{x.onStart(_,n)}),_}startActiveSpan(e,...t){let n=t.length>1?t[0]:void 0,o=t.length>2?t[1]:l.context.active(),s=t[t.length-1],p=this.startSpan(e,n,o),i=l.trace.setSpan(o,p);return l.context.with(i,s,void 0,p)}};var K=class{static{a(this,"PromiseTracker")}_outstandingPromises=[];get outstandingPromiseCount(){return this._outstandingPromises.length}track(e){this._outstandingPromises.push(e)}async wait(){await je(this._outstandingPromises)}};function De(r,e,t){return R(r,{apply(o,s,p){return t.track(p[0]),Reflect.apply(o,e,p)}})}a(De,"createWaitUntil");function se(r){let e=new K;return{event:new Proxy(r,{get(n,o){if(o==="waitUntil"){let s=Reflect.get(n,o);return De(s,r,e)}else return U(n,o)}}),tracker:e}}a(se,"proxyExecutionContext");async function ie(r){let e=ae.trace.getTracer("export");if(e instanceof P){typeof scheduler<"u"?await scheduler.wait(1):await new Promise(n=>{setTimeout(n,1)}),r&&await r.wait();let t=e.spanProcessors.map(async n=>{await n.forceFlush()});await Promise.allSettled(t)}else console.error("The global tracer is not of type WorkerTracer and can not export spans")}a(ie,"exportSpans");async function je(r){let e;do e=await Promise.allSettled(r);while(e.length!==r.length);return e}a(je,"allSettledMutable");var h=require("@opentelemetry/api");function V(r){let e={},t=r.headers,n=r.cf;e["http.request.method"]=r.method.toUpperCase(),e["network.protocol.name"]="http",e["network.protocol.version"]=n?.httpProtocol;let o=t.get("content-length");o&&(e["http.request.body.size"]=o);let s=t.get("user-agent");s&&(e["user_agent.original"]=s);let p=t.get("content-type");p&&(e["http.mime_type"]=p),e["http.accepts"]=n?.clientAcceptEncoding;let i=new URL(r.url);return e["url.full"]=`${i.protocol}//${i.host}${i.pathname}${i.search}`,e["server.address"]=i.host,e["url.scheme"]=i.protocol,e["url.path"]=i.pathname,e["url.query"]=i.search,e}a(V,"gatherRequestAttributes");function X(r){let e={};e["http.response.status_code"]=r.status;let t=r.headers.get("content-length");t&&(e["http.response.body.size"]=t);let n=r.headers.get("content-type");return n&&(e["http.mime_type"]=n),e}a(X,"gatherResponseAttributes");function pe(r){let e={},t=r.cf;return e["net.colo"]=t?.colo,e["net.country"]=t?.country,e["net.request_priority"]=t?.requestPriority,e["net.tls_cipher"]=t?.tlsCipher,e["net.tls_version"]=t?.tlsVersion,e["net.asn"]=t?.asn,e["net.tcp_rtt"]=t?.clientTcpRtt,e}a(pe,"gatherIncomingCfAttributes");function We(r,e,t){return R(r,{apply:(o,s,p)=>{let i=new Request(p[0],p[1]);if(!i.url.startsWith("http"))return Reflect.apply(o,s,p);let u=S(),c=e(u),g=h.trace.getTracer("fetcher"),d={kind:h.SpanKind.CLIENT,attributes:t},v=new URL(i.url).host,z=i.method.toUpperCase(),D=typeof t?.name=="string"?t?.name:`${z}: ${v}`;return g.startActiveSpan(D,d,async C=>{((typeof c.includeTraceContext=="function"?c.includeTraceContext(i):c.includeTraceContext)??!0)&&h.propagation.inject(h.context.active(),i.headers,{set:(j,_,x)=>j.set(_,typeof x=="string"?x:String(x))}),C.setAttributes(V(i)),i.cf&&C.setAttributes(gatherOutgoingCfAttributes(i.cf));let E=await Reflect.apply(o,s,[i]);return C.setAttributes(X(E)),C.end(),E})}},!0)}a(We,"instrumentClientFetch");function ce(){globalThis.fetch=We(globalThis.fetch,r=>r.fetch)}a(ce,"instrumentGlobalFetch");function Be(r){return m.propagation.extract(m.context.active(),r,{get(e,t){return e.get(t)||void 0},keys(e){return[...e.keys()]}})}a(Be,"getParentContextFromHeaders");function Ue(r){let e=S();return(typeof e.handlers.fetch.acceptTraceContext=="function"?e.handlers.fetch.acceptTraceContext(r):e.handlers.fetch.acceptTraceContext??!0)?Be(r.headers):m.context.active()}a(Ue,"getParentContextFromRequest");var le=!0;function Ge(r,[e,t]){let n=Ue(e),o=m.trace.getTracer("pipeline"),s={"faas.trigger":"http","faas.coldstart":le,"faas.invocation_id":e.headers.get("zp-rid")??void 0,"cf.ray_id":e.headers.get("cf-ray")??void 0};le=!1,Object.assign(s,V(e)),Object.assign(s,pe(e));let p={attributes:s,kind:m.SpanKind.SERVER},i=e.method.toUpperCase();return o.startActiveSpan(i,p,n,async c=>{let g=c;try{let d=await r(e,t);return c.setAttributes(X(d)),g.attributes["http.route"]&&c.updateName(`${i} ${g.attributes["http.route"]}`),d}catch(d){throw g.attributes["http.route"]&&c.updateName(`${i} ${g.attributes["http.route"]}`),c.recordException(d),c.setStatus({code:m.SpanStatusCode.ERROR}),d}finally{c.end()}})}a(Ge,"executeRequestHandler");function ue(r,e){return R(r,{apply:async(n,o,s)=>{let[p,i]=s,u=e(p),{event:c,tracker:g}=se(i),d=re(u);try{let v=[p,c];return await m.context.with(d,Ge,void 0,n,v)}finally{i.waitUntil(ie(g))}}})}a(ue,"createHandlerProxy");var Ee=require("@opentelemetry/api"),_e=require("@opentelemetry/core"),Y=require("@opentelemetry/resources"),T=require("@opentelemetry/sdk-trace-base");var de=require("@opentelemetry/core"),me=require("@opentelemetry/otlp-transformer"),fe=require("@zuplo/runtime");var $e={accept:"application/json","content-type":"application/json"},L=class{static{a(this,"OTLPExporter")}headers;url;useHex;useLongBits;constructor(e){this.url=e.url,this.headers=Object.assign({},$e,e.headers),this.useHex=e.useHex,this.useLongBits=e.useLongBits}export(e,t){e.forEach(n=>{this.batcher.enqueue(n)}),t({code:de.ExportResultCode.SUCCESS})}shutdown(){throw new Error("Method not implemented.")}forceFlush(){throw new Error("Method not implemented.")}dispatchFunction=async e=>{if(e.length===0)return;let t=(0,me.createExportTraceServiceRequest)(e,{useLongBits:this.useLongBits,useHex:this.useHex}),n=await y(fetch)(this.url,{method:"POST",body:JSON.stringify(t),headers:this.headers});if(!n.ok)try{let o=await n.text();console.log("Error exporting traces",o)}catch{console.log("Error exporting traces")}};batcher=new fe.BackgroundDispatcher(this.dispatchFunction,{msDelay:10})};var O=require("@opentelemetry/api");var ge=require("@opentelemetry/api"),Se=require("node:async_hooks"),he=require("node:events");var Ke=["addListener","on","once","prependListener","prependOnceListener"],Z=class{static{a(this,"AbstractAsyncHooksContextManager")}bind(e,t){return t instanceof he.EventEmitter?this._bindEventEmitter(e,t):typeof t=="function"?this._bindFunction(e,t):t}_bindFunction(e,t){let n=this,o=a(function(...s){return n.with(e,()=>t.apply(this,s))},"contextWrapper");return Object.defineProperty(o,"length",{enumerable:!1,configurable:!0,writable:!1,value:t.length}),o}_bindEventEmitter(e,t){return this._getPatchMap(t)!==void 0||(this._createPatchMap(t),Ke.forEach(o=>{t[o]!==void 0&&(t[o]=this._patchAddListener(t,t[o],e))}),typeof t.removeListener=="function"&&(t.removeListener=this._patchRemoveListener(t,t.removeListener)),typeof t.off=="function"&&(t.off=this._patchRemoveListener(t,t.off)),typeof t.removeAllListeners=="function"&&(t.removeAllListeners=this._patchRemoveAllListeners(t,t.removeAllListeners))),t}_patchRemoveListener(e,t){let n=this;return function(o,s){let p=n._getPatchMap(e)?.[o];if(p===void 0)return t.call(this,o,s);let i=p.get(s);return t.call(this,o,i||s)}}_patchRemoveAllListeners(e,t){let n=this;return function(o){let s=n._getPatchMap(e);return s!==void 0&&(arguments.length===0?n._createPatchMap(e):s[o]!==void 0&&delete s[o]),t.apply(this,arguments)}}_patchAddListener(e,t,n){let o=this;return function(s,p){if(o._wrapped)return t.call(this,s,p);let i=o._getPatchMap(e);i===void 0&&(i=o._createPatchMap(e));let u=i[s];u===void 0&&(u=new WeakMap,i[s]=u);let c=o.bind(n,p);u.set(p,c),o._wrapped=!0;try{return t.call(this,s,c)}finally{o._wrapped=!1}}}_createPatchMap(e){let t=Object.create(null);return e[this._kOtListeners]=t,t}_getPatchMap(e){return e[this._kOtListeners]}_kOtListeners=Symbol("OtListeners");_wrapped=!1},k=class extends Z{static{a(this,"AsyncLocalStorageContextManager")}_asyncLocalStorage;constructor(){super(),this._asyncLocalStorage=new Se.AsyncLocalStorage}active(){return this._asyncLocalStorage.getStore()??ge.ROOT_CONTEXT}with(e,t,n,...o){let s=n==null?t:t.bind(n);return this._asyncLocalStorage.run(e,s,...o)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}};var H=class{static{a(this,"ZuploTracerProvider")}spanProcessors;resource;tracers={};constructor(e,t){this.spanProcessors=e,this.resource=t}getTracer(e,t,n){let o=`${e}@${t||""}:${n?.schemaUrl||""}`;return this.tracers[o]||(this.tracers[o]=new P(this.spanProcessors,this.resource)),this.tracers[o]}register(){O.trace.setGlobalTracerProvider(this),O.context.setGlobalContextManager(new k)}};var M=require("@opentelemetry/api");function xe(r){return e=>r.reduce((t,n)=>t||n(e),!1)}a(xe,"multiTailSampler");var Te=a(r=>r.localRootSpan.spanContext().traceFlags===M.TraceFlags.SAMPLED,"isHeadSampled"),Ce=a(r=>r.localRootSpan.status.code===M.SpanStatusCode.ERROR,"isRootErrorSpan");var ye=require("@opentelemetry/api"),Re=require("@opentelemetry/core"),be=require("ts-checked-fsm");function Ve(r,{span:e}){let t=e.spanContext().spanId;return{...r,stateName:"in_progress",traceId:e.spanContext().traceId,localRootSpan:e,completedSpans:[],inProgressSpanIds:new Set([t])}}a(Ve,"newTrace");function Xe(r,{span:e}){let t=e.spanContext().spanId;return r.inProgressSpanIds.add(t),{...r}}a(Xe,"newSpan");function Ze(r,{span:e}){return r.completedSpans.push(e),r.inProgressSpanIds.delete(e.spanContext().spanId),r.inProgressSpanIds.size===0?{stateName:"trace_complete",traceId:r.traceId,localRootSpan:r.localRootSpan,completedSpans:r.completedSpans}:{...r}}a(Ze,"endSpan");function Ye(r,{args:e}){let{exporter:t,tailSampler:n,postProcessor:o}=e,{traceId:s,localRootSpan:p,completedSpans:i}=r;if(n({traceId:s,localRootSpan:p,spans:i})){let c=o(i);return{stateName:"exporting",promise:new Promise(d=>{t.export(c,d)})}}else return{stateName:"done"}}a(Ye,"startExport");var{nextState:Je}=(0,be.stateMachine)().state("not_started").state("in_progress").state("trace_complete").state("exporting").state("done").transition("not_started","in_progress").transition("in_progress","in_progress").transition("in_progress","trace_complete").transition("trace_complete","exporting").transition("trace_complete","done").transition("exporting","done").action("startSpan").action("endSpan").action("startExport").action("exportDone").actionHandler("not_started","startSpan",Ve).actionHandler("in_progress","startSpan",Xe).actionHandler("in_progress","endSpan",Ze).actionHandler("trace_complete","startExport",Ye).actionHandler("exporting","exportDone",(r,e)=>({stateName:"done"})).done(),N=class{constructor(e){this.exporter=e}static{a(this,"BatchTraceSpanProcessor")}traceLookup=new Map;localRootSpanLookup=new Map;inprogressExports=new Map;action(e,t){let n=this.traceLookup.get(e)||{stateName:"not_started"},o=Je(n,t);return o.stateName==="done"?this.traceLookup.delete(e):this.traceLookup.set(e,o),o}export(e){let{sampling:t,postProcessor:n}=S(),o={exporter:this.exporter,tailSampler:t.tailSampler,postProcessor:n},s=this.action(e,{actionName:"startExport",args:o});if(s.stateName==="exporting"){let p=s.promise;this.inprogressExports.set(e,p),p.then(i=>{i.code===Re.ExportResultCode.FAILED&&console.log("Error sending spans to exporter:",i.error),this.action(e,{actionName:"exportDone"}),this.inprogressExports.delete(e)})}}onStart(e,t){let n=e.spanContext().spanId,o=ye.trace.getSpan(t)?.spanContext()?.spanId,p=(o?this.localRootSpanLookup.get(o):void 0)||n;this.localRootSpanLookup.set(n,p),this.action(p,{actionName:"startSpan",span:e})}onEnd(e){let t=e.spanContext().spanId,n=this.localRootSpanLookup.get(t);if(n){let o=this.action(n,{actionName:"endSpan",span:e});o.stateName==="trace_complete"&&(o.completedSpans.forEach(s=>{this.localRootSpanLookup.delete(s.spanContext().spanId)}),this.export(n))}}async forceFlush(){await Promise.allSettled(this.inprogressExports.values())}async shutdown(){}};function Pe(r){return!!r.spanProcessors}a(Pe,"isSpanProcessorConfig");var Qe=a((r,e)=>{let t={"cloud.provider":"zuplo","cloud.platform":"zuplo-api","cloud.account.id":r.accountName,"cloud.project.id":r.projectName,"cloud.resource_id":r.deploymentName,"cloud.instance_id":r.instanceId,"telemetry.sdk.language":"js","telemetry.sdk.name":"@zuplo/otel","zuplo.build.id":r.buildId,"zuplo.build.version":r.zuploVersion,"zuplo.build.compatibility_date":r.compatibilityDate,"zuplo.environment_type":r.environmentType,"zuplo.environment_stage":r.environmentStage},n=new Y.Resource({"service.name":e.service.name,"service.namespace":e.service.namespace,"service.version":e.service.version});return new Y.Resource(t).merge(n)},"createResource");function et(r){return!!r.export}a(et,"isSpanExporter");function tt(r){return!!r.shouldSample}a(tt,"isSampler");function rt(r){let e=new T.TraceIdRatioBasedSampler(r.ratio);return typeof r.acceptRemote=="boolean"&&!r.acceptRemote?new T.ParentBasedSampler({root:e,remoteParentSampled:e,remoteParentNotSampled:e}):new T.ParentBasedSampler({root:e})}a(rt,"createSampler");var ve=!1;function nt(r,e){if(!ve){ce(),Ee.propagation.setGlobalPropagator(e.propagator);let t=Qe(r,e);new H(e.spanProcessors,t).register(),ve=!0}}a(nt,"init");function Ae(r,e){if(Pe(e)){let t=e.sampling?.headSampler,n=t?tt(t)?t:rt(t):new T.AlwaysOnSampler,o=Array.isArray(e.spanProcessors)?e.spanProcessors:[e.spanProcessors];return o.length===0&&console.log("Warning! You must either specify an exporter or your own SpanProcessor(s)/Exporter combination in the open-telemetry configuration."),{fetch:{includeTraceContext:e.fetch?.includeTraceContext??!0},handlers:{fetch:{acceptTraceContext:e.handlers?.fetch?.acceptTraceContext??!0}},postProcessor:e.postProcessor??(s=>s),sampling:{headSampler:n,tailSampler:e.sampling?.tailSampler??xe([Te,Ce])},service:{name:e.service?.name??r.deploymentName,version:e.service?.version,namespace:e.service?.namespace},spanProcessors:o,propagator:e.propagator??new _e.W3CTraceContextPropagator}}else{let t=et(e.exporter)?e.exporter:new L({useHex:!0,useLongBits:!1,...e.exporter}),n=[new N(t)],o=Object.assign(e,{exporter:void 0,spanProcessors:n});return Ae(r,o)}}a(Ae,"parseConfig");function we(r,e){return()=>{let t=Ae(r,e);return nt(r,t),t}}a(we,"createInitializer");var q=class extends Ie.TelemetryPlugin{constructor(t){super();this.config=t}static{a(this,"OpenTelemetryPlugin")}instrument(t){let n=we(t,this.config);return{requestHandlerProxy:a(s=>ue(s,n),"requestHandlerProxy")}}};
25
+ "use strict";var I=Object.defineProperty;var Ne=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var De=Object.prototype.hasOwnProperty;var a=(r,e)=>I(r,"name",{value:e,configurable:!0});var ze=(r,e)=>{for(var t in e)I(r,t,{get:e[t],enumerable:!0})},Ue=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of qe(e))!De.call(r,o)&&o!==t&&I(r,o,{get:()=>e[o],enumerable:!(n=Ne(e,o))||n.enumerable});return r};var Be=r=>Ue(I({},"__esModule",{value:!0}),r);var ct={};ze(ct,{OpenTelemetryPlugin:()=>U});module.exports=Be(ct);var ne=require("node:buffer");globalThis.Buffer=ne.Buffer;var He=require("@zuplo/runtime");var f=require("@opentelemetry/api");var V=require("@opentelemetry/api");var oe=Symbol("Otel Tracing Configuration");function ae(r,e=V.context.active()){return e.setValue(oe,r)}a(ae,"setConfig");function h(){return V.context.active().getValue(oe)}a(h,"getActiveConfig");var $=Symbol("unwrap");function se(r){return r&&!!r[$]}a(se,"isWrapped");function We(r){return typeof r=="object"||typeof r=="function"}a(We,"isProxyable");function b(r,e,t=!0){if(se(r)||!We(r))return r;let n=Object.assign({},e);return n.get=(o,s,p)=>{if(s===$)return r;if(e.get)return e.get(o,s,p);if(s==="bind")return()=>p;if(t)return G(o,s)},n.apply=(o,s,p)=>{if(e.apply)return e.apply(E(o),E(s),p)},new Proxy(r,n)}a(b,"wrap");function E(r){return r&&se(r)?r[$]:r}a(E,"unwrap");function G(r,e,t){let n=Reflect.get(E(r),e);return typeof n=="function"?(t=t||E(r),n.bind(t)):n}a(G,"passthroughGet");var pe=require("@opentelemetry/api");var l=require("@opentelemetry/api"),ie=require("@opentelemetry/core"),O=require("@opentelemetry/sdk-trace-base");var L=require("@opentelemetry/api"),g=require("@opentelemetry/core"),x=require("@opentelemetry/semantic-conventions");function je(r){let e={};return typeof r=="string"?e[x.SEMATTRS_EXCEPTION_MESSAGE]=r:(r.code?e[x.SEMATTRS_EXCEPTION_TYPE]=r.code.toString():r.name&&(e[x.SEMATTRS_EXCEPTION_TYPE]=r.name),r.message&&(e[x.SEMATTRS_EXCEPTION_MESSAGE]=r.message),r.stack&&(e[x.SEMATTRS_EXCEPTION_STACKTRACE]=r.stack)),e}a(je,"transformExceptionAttributes");function K(r){return[Math.trunc(r/1e3),r%1e3*1e6]}a(K,"millisToHr");function Z(r){let e=Date.now();if(r){if(r instanceof Date)return K(r.getTime());if(typeof r=="number")return K(r);if(Array.isArray(r))return r}else return K(e);let t=r;throw new Error(`unreachable value: ${JSON.stringify(t)}`)}a(Z,"getHrTime");var F=class{static{a(this,"SpanImpl")}name;_spanContext;onEnd;parentSpanId;kind;attributes;status={code:L.SpanStatusCode.UNSET};endTime=[0,0];_duration=[0,0];startTime;events=[];links;resource;instrumentationLibrary={name:"@zuplo/otel"};_ended=!1;_droppedAttributesCount=0;_droppedEventsCount=0;_droppedLinksCount=0;constructor(e){this.name=e.name,this._spanContext=e.spanContext,this.parentSpanId=e.parentSpanId,this.kind=e.spanKind||L.SpanKind.INTERNAL,this.attributes=(0,g.sanitizeAttributes)(e.attributes),this.startTime=Z(e.startTime),this.links=e.links||[],this.resource=e.resource,this.onEnd=e.onEnd}spanContext(){return this._spanContext}setAttribute(e,t){return(0,g.isAttributeKey)(e)&&(0,g.isAttributeValue)(t)&&(this.attributes[e]=t),this}setAttributes(e){for(let[t,n]of Object.entries(e))this.setAttribute(t,n);return this}addEvent(e,t,n){(0,g.isTimeInput)(t)&&(n=t,t=void 0);let o=(0,g.sanitizeAttributes)(t),s=Z(n);return this.events.push({name:e,attributes:o,time:s}),this}setStatus(e){return this.status=e,this}updateName(e){return this.name=e,this}end(e){this._ended||(this._ended=!0,this.endTime=Z(e),this._duration=(0,g.hrTimeDuration)(this.startTime,this.endTime),this.onEnd(this))}isRecording(){return!this._ended}recordException(e,t){let n=je(e);this.addEvent("exception",n,t)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}};var P=class{static{a(this,"WorkerTracer")}_spanProcessors;resource;idGenerator=new O.RandomIdGenerator;constructor(e,t){this._spanProcessors=e,this.resource=t}get spanProcessors(){return this._spanProcessors}addToResource(e){this.resource.merge(e)}startSpan(e,t={},n=l.context.active()){t.root&&(n=l.trace.deleteSpan(n));let s=l.trace.getSpan(n)?.spanContext(),p=s&&l.trace.isSpanContextValid(s),i=p?s.traceId:this.idGenerator.generateTraceId(),d=t.kind||l.SpanKind.INTERNAL,c=(0,ie.sanitizeAttributes)(t.attributes),m=h().sampling.headSampler.shouldSample(n,i,e,d,c,[]),{decision:v,traceState:B,attributes:W}=m,te=Object.assign({},c,W),y=this.idGenerator.generateSpanId(),re=p?s.spanId:void 0,A=v===O.SamplingDecision.RECORD_AND_SAMPLED?l.TraceFlags.SAMPLED:l.TraceFlags.NONE,j={traceId:i,spanId:y,traceFlags:A,traceState:B},w=new F({attributes:te,name:e,onEnd:R=>{this.spanProcessors.forEach(Me=>{Me.onEnd(R)})},resource:this.resource,spanContext:j,parentSpanId:re,spanKind:d,startTime:t.startTime});return this.spanProcessors.forEach(R=>{R.onStart(w,n)}),w}startActiveSpan(e,...t){let n=t.length>1?t[0]:void 0,o=t.length>2?t[1]:l.context.active(),s=t[t.length-1],p=this.startSpan(e,n,o),i=l.trace.setSpan(o,p);return l.context.with(i,s,void 0,p)}};var X=class{static{a(this,"PromiseTracker")}_outstandingPromises=[];get outstandingPromiseCount(){return this._outstandingPromises.length}track(e){this._outstandingPromises.push(e)}async wait(){await $e(this._outstandingPromises)}};function Ve(r,e,t){return b(r,{apply(o,s,p){return t.track(p[0]),Reflect.apply(o,e,p)}})}a(Ve,"createWaitUntil");function ce(r){let e=new X;return{event:new Proxy(r,{get(n,o){if(o==="waitUntil"){let s=Reflect.get(n,o);return Ve(s,r,e)}else return G(n,o)}}),tracker:e}}a(ce,"proxyExecutionContext");async function le(r){let e=pe.trace.getTracer("export");if(e instanceof P){typeof scheduler<"u"?await scheduler.wait(1):await new Promise(n=>{setTimeout(n,1)}),r&&await r.wait();let t=e.spanProcessors.map(async n=>{await n.forceFlush()});await Promise.allSettled(t)}else console.error("The global tracer is not of type WorkerTracer and can not export spans")}a(le,"exportSpans");async function $e(r){let e;do e=await Promise.allSettled(r);while(e.length!==r.length);return e}a($e,"allSettledMutable");var T=require("@opentelemetry/api");function Y(r){let e={},t=r.headers,n=r.cf;e["http.request.method"]=r.method.toUpperCase(),e["network.protocol.name"]="http",e["network.protocol.version"]=n?.httpProtocol;let o=t.get("content-length");o&&(e["http.request.body.size"]=o);let s=t.get("user-agent");s&&(e["user_agent.original"]=s);let p=t.get("content-type");p&&(e["http.mime_type"]=p),e["http.accepts"]=n?.clientAcceptEncoding;let i=new URL(r.url);return e["url.full"]=`${i.protocol}//${i.host}${i.pathname}${i.search}`,e["server.address"]=i.host,e["url.scheme"]=i.protocol,e["url.path"]=i.pathname,e["url.query"]=i.search,e}a(Y,"gatherRequestAttributes");function J(r){let e={};e["http.response.status_code"]=r.status;let t=r.headers.get("content-length");t&&(e["http.response.body.size"]=t);let n=r.headers.get("content-type");return n&&(e["http.mime_type"]=n),e}a(J,"gatherResponseAttributes");function ue(r){let e={},t=r.cf;return e["net.colo"]=t?.colo,e["net.country"]=t?.country,e["net.request_priority"]=t?.requestPriority,e["net.tls_cipher"]=t?.tlsCipher,e["net.tls_version"]=t?.tlsVersion,e["net.asn"]=t?.asn,e["net.tcp_rtt"]=t?.clientTcpRtt,e}a(ue,"gatherIncomingCfAttributes");function Ge(r,e,t){return b(r,{apply:(o,s,p)=>{let i=new Request(p[0],p[1]);if(!i.url.startsWith("http"))return Reflect.apply(o,s,p);let d=h(),c=e(d),S=T.trace.getTracer("fetcher"),m={kind:T.SpanKind.CLIENT,attributes:t},v=new URL(i.url).host,B=i.method.toUpperCase(),W=typeof t?.name=="string"?t?.name:`${B}: ${v}`;return S.startActiveSpan(W,m,async y=>{((typeof c.includeTraceContext=="function"?c.includeTraceContext(i):c.includeTraceContext)??!0)&&T.propagation.inject(T.context.active(),i.headers,{set:(j,w,R)=>j.set(w,typeof R=="string"?R:String(R))}),y.setAttributes(Y(i)),i.cf&&y.setAttributes(gatherOutgoingCfAttributes(i.cf));let A=await Reflect.apply(o,s,[i]);return y.setAttributes(J(A)),y.end(),A})}},!0)}a(Ge,"instrumentClientFetch");function de(){globalThis.fetch=Ge(globalThis.fetch,r=>r.fetch)}a(de,"instrumentGlobalFetch");function Ke(r){return f.propagation.extract(f.context.active(),r,{get(e,t){return e.get(t)||void 0},keys(e){return[...e.keys()]}})}a(Ke,"getParentContextFromHeaders");function Ze(r){let e=h();return(typeof e.handlers.fetch.acceptTraceContext=="function"?e.handlers.fetch.acceptTraceContext(r):e.handlers.fetch.acceptTraceContext??!0)?Ke(r.headers):f.context.active()}a(Ze,"getParentContextFromRequest");var me=!0;function Xe(r,[e,t]){let n=Ze(e),o=f.trace.getTracer("pipeline"),s={"faas.trigger":"http","faas.coldstart":me,"faas.invocation_id":e.headers.get("zp-rid")??void 0,"cf.ray_id":e.headers.get("cf-ray")??void 0};me=!1,Object.assign(s,Y(e)),Object.assign(s,ue(e));let p={attributes:s,kind:f.SpanKind.SERVER},i=e.method.toUpperCase();return o.startActiveSpan(i,p,n,async c=>{let S=c;try{let m=await r(e,t);return c.setAttributes(J(m)),S.attributes["http.route"]&&c.updateName(`${i} ${S.attributes["http.route"]}`),m}catch(m){throw S.attributes["http.route"]&&c.updateName(`${i} ${S.attributes["http.route"]}`),c.recordException(m),c.setStatus({code:f.SpanStatusCode.ERROR}),m}finally{c.end()}})}a(Xe,"executeRequestHandler");function fe(r,e){return b(r,{apply:async(n,o,s)=>{let[p,i]=s,d=e(p),{event:c,tracker:S}=ce(i),m=ae(d);try{let v=[p,c];return await f.context.with(m,Xe,void 0,n,v)}finally{i.waitUntil(le(S))}}})}a(fe,"createHandlerProxy");var Ie=require("@opentelemetry/api"),Fe=require("@opentelemetry/core"),ee=require("@opentelemetry/resources"),C=require("@opentelemetry/sdk-trace-base"),_=require("@zuplo/runtime");var ge=require("@opentelemetry/core"),Se=require("@opentelemetry/otlp-transformer"),he=require("@zuplo/runtime");var Ye={accept:"application/json","content-type":"application/json"},k=class{static{a(this,"OTLPExporter")}headers;url;useHex;useLongBits;constructor(e){this.url=e.url,this.headers=Object.assign({},Ye,e.headers),this.useHex=e.useHex,this.useLongBits=e.useLongBits}export(e,t){e.forEach(n=>{this.batcher.enqueue(n)}),t({code:ge.ExportResultCode.SUCCESS})}shutdown(){throw new Error("Method not implemented.")}forceFlush(){throw new Error("Method not implemented.")}dispatchFunction=async e=>{if(e.length===0)return;let t=(0,Se.createExportTraceServiceRequest)(e,{useLongBits:this.useLongBits,useHex:this.useHex}),n=await E(fetch)(this.url,{method:"POST",body:JSON.stringify(t),headers:this.headers});if(!n.ok)try{let o=await n.text();console.log("Error exporting traces",o)}catch{console.log("Error exporting traces")}};batcher=new he.BackgroundDispatcher(this.dispatchFunction,{msDelay:10})};var N=require("@opentelemetry/api");var xe=require("@opentelemetry/api"),Te=require("node:async_hooks"),Re=require("node:events");var Je=["addListener","on","once","prependListener","prependOnceListener"],Q=class{static{a(this,"AbstractAsyncHooksContextManager")}bind(e,t){return t instanceof Re.EventEmitter?this._bindEventEmitter(e,t):typeof t=="function"?this._bindFunction(e,t):t}_bindFunction(e,t){let n=this,o=a(function(...s){return n.with(e,()=>t.apply(this,s))},"contextWrapper");return Object.defineProperty(o,"length",{enumerable:!1,configurable:!0,writable:!1,value:t.length}),o}_bindEventEmitter(e,t){return this._getPatchMap(t)!==void 0||(this._createPatchMap(t),Je.forEach(o=>{t[o]!==void 0&&(t[o]=this._patchAddListener(t,t[o],e))}),typeof t.removeListener=="function"&&(t.removeListener=this._patchRemoveListener(t,t.removeListener)),typeof t.off=="function"&&(t.off=this._patchRemoveListener(t,t.off)),typeof t.removeAllListeners=="function"&&(t.removeAllListeners=this._patchRemoveAllListeners(t,t.removeAllListeners))),t}_patchRemoveListener(e,t){let n=this;return function(o,s){let p=n._getPatchMap(e)?.[o];if(p===void 0)return t.call(this,o,s);let i=p.get(s);return t.call(this,o,i||s)}}_patchRemoveAllListeners(e,t){let n=this;return function(o){let s=n._getPatchMap(e);return s!==void 0&&(arguments.length===0?n._createPatchMap(e):s[o]!==void 0&&delete s[o]),t.apply(this,arguments)}}_patchAddListener(e,t,n){let o=this;return function(s,p){if(o._wrapped)return t.call(this,s,p);let i=o._getPatchMap(e);i===void 0&&(i=o._createPatchMap(e));let d=i[s];d===void 0&&(d=new WeakMap,i[s]=d);let c=o.bind(n,p);d.set(p,c),o._wrapped=!0;try{return t.call(this,s,c)}finally{o._wrapped=!1}}}_createPatchMap(e){let t=Object.create(null);return e[this._kOtListeners]=t,t}_getPatchMap(e){return e[this._kOtListeners]}_kOtListeners=Symbol("OtListeners");_wrapped=!1},H=class extends Q{static{a(this,"AsyncLocalStorageContextManager")}_asyncLocalStorage;constructor(){super(),this._asyncLocalStorage=new Te.AsyncLocalStorage}active(){return this._asyncLocalStorage.getStore()??xe.ROOT_CONTEXT}with(e,t,n,...o){let s=n==null?t:t.bind(n);return this._asyncLocalStorage.run(e,s,...o)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}};var M=class{static{a(this,"ZuploTracerProvider")}spanProcessors;resource;tracers={};constructor(e,t){this.spanProcessors=e,this.resource=t}getTracer(e,t,n){let o=`${e}@${t||""}:${n?.schemaUrl||""}`;return this.tracers[o]||(this.tracers[o]=new P(this.spanProcessors,this.resource)),this.tracers[o]}register(){N.trace.setGlobalTracerProvider(this),N.context.setGlobalContextManager(new H)}};var D=require("@opentelemetry/api"),q=require("@zuplo/runtime");function Ce(r){return e=>{let t=e.localRootSpan;return t.attributes[q.SemanticAttributes.SystemTrace]??t.attributes[q.SemanticAttributes.RouteSystem]??t.attributes[q.SemanticAttributes.RouteTrace]===!1?!1:r(e)}}a(Ce,"internalTailSampler");function ye(r){return e=>r.reduce((t,n)=>t||n(e),!1)}a(ye,"multiTailSampler");var Ee=a(r=>r.localRootSpan.spanContext().traceFlags===D.TraceFlags.SAMPLED,"isHeadSampled"),be=a(r=>r.localRootSpan.status.code===D.SpanStatusCode.ERROR,"isRootErrorSpan");var Pe=require("@opentelemetry/api"),ve=require("@opentelemetry/core"),_e=require("ts-checked-fsm");function Qe(r,{span:e}){let t=e.spanContext().spanId;return{...r,stateName:"in_progress",traceId:e.spanContext().traceId,localRootSpan:e,completedSpans:[],inProgressSpanIds:new Set([t])}}a(Qe,"newTrace");function et(r,{span:e}){let t=e.spanContext().spanId;return r.inProgressSpanIds.add(t),{...r}}a(et,"newSpan");function tt(r,{span:e}){return r.completedSpans.push(e),r.inProgressSpanIds.delete(e.spanContext().spanId),r.inProgressSpanIds.size===0?{stateName:"trace_complete",traceId:r.traceId,localRootSpan:r.localRootSpan,completedSpans:r.completedSpans}:{...r}}a(tt,"endSpan");function rt(r,{args:e}){let{exporter:t,tailSampler:n,postProcessor:o}=e,{traceId:s,localRootSpan:p,completedSpans:i}=r;if(n({traceId:s,localRootSpan:p,spans:i})){let c=o(i);return{stateName:"exporting",promise:new Promise(m=>{t.export(c,m)})}}else return{stateName:"done"}}a(rt,"startExport");var{nextState:nt}=(0,_e.stateMachine)().state("not_started").state("in_progress").state("trace_complete").state("exporting").state("done").transition("not_started","in_progress").transition("in_progress","in_progress").transition("in_progress","trace_complete").transition("trace_complete","exporting").transition("trace_complete","done").transition("exporting","done").action("startSpan").action("endSpan").action("startExport").action("exportDone").actionHandler("not_started","startSpan",Qe).actionHandler("in_progress","startSpan",et).actionHandler("in_progress","endSpan",tt).actionHandler("trace_complete","startExport",rt).actionHandler("exporting","exportDone",(r,e)=>({stateName:"done"})).done(),z=class{constructor(e){this.exporter=e}static{a(this,"BatchTraceSpanProcessor")}traceLookup=new Map;localRootSpanLookup=new Map;inprogressExports=new Map;action(e,t){let n=this.traceLookup.get(e)||{stateName:"not_started"},o=nt(n,t);return o.stateName==="done"?this.traceLookup.delete(e):this.traceLookup.set(e,o),o}export(e){let{sampling:t,postProcessor:n}=h(),o={exporter:this.exporter,tailSampler:t.tailSampler,postProcessor:n},s=this.action(e,{actionName:"startExport",args:o});if(s.stateName==="exporting"){let p=s.promise;this.inprogressExports.set(e,p),p.then(i=>{i.code===ve.ExportResultCode.FAILED&&console.log("Error sending spans to exporter:",i.error),this.action(e,{actionName:"exportDone"}),this.inprogressExports.delete(e)})}}onStart(e,t){let n=e.spanContext().spanId,o=Pe.trace.getSpan(t)?.spanContext()?.spanId,p=(o?this.localRootSpanLookup.get(o):void 0)||n;this.localRootSpanLookup.set(n,p),this.action(p,{actionName:"startSpan",span:e})}onEnd(e){let t=e.spanContext().spanId,n=this.localRootSpanLookup.get(t);if(n){let o=this.action(n,{actionName:"endSpan",span:e});o.stateName==="trace_complete"&&(o.completedSpans.forEach(s=>{this.localRootSpanLookup.delete(s.spanContext().spanId)}),this.export(n))}}async forceFlush(){await Promise.allSettled(this.inprogressExports.values())}async shutdown(){}};function Ae(r){return!!r.spanProcessors}a(Ae,"isSpanProcessorConfig");var u=require("@opentelemetry/semantic-conventions"),Le=require("@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes");var ot=a((r,e)=>{let t={[u.SEMRESATTRS_CLOUD_PROVIDER]:"zuplo",[u.SEMRESATTRS_CLOUD_PLATFORM]:"zuplo-api",[u.SEMRESATTRS_CLOUD_ACCOUNT_ID]:r.accountName,"cloud.project.id":r.projectName,"cloud.resource_id":r.deploymentName,"cloud.instance_id":r.instanceId,[Le.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]:r.environmentStage,[u.SEMRESATTRS_TELEMETRY_SDK_NAME]:"@zuplo/otel",[_.SemanticAttributes.ZuploBuildId]:r.buildId,[_.SemanticAttributes.ZuploBuildVersion]:r.zuploVersion,[_.SemanticAttributes.ZuploBuildCompatibilityDate]:r.compatibilityDate,[_.SemanticAttributes.ZuploEnvironmentType]:r.environmentType},n=new ee.Resource({[u.SEMRESATTRS_SERVICE_NAME]:e.service.name,[u.SEMRESATTRS_SERVICE_NAMESPACE]:e.service.namespace,[u.SEMRESATTRS_SERVICE_VERSION]:e.service.version});return new ee.Resource(t).merge(n)},"createResource");function at(r){return!!r.export}a(at,"isSpanExporter");function st(r){return!!r.shouldSample}a(st,"isSampler");function it(r){let e=new C.TraceIdRatioBasedSampler(r.ratio);return typeof r.acceptRemote=="boolean"&&!r.acceptRemote?new C.ParentBasedSampler({root:e,remoteParentSampled:e,remoteParentNotSampled:e}):new C.ParentBasedSampler({root:e})}a(it,"createSampler");var we=!1;function pt(r,e){if(!we){de(),Ie.propagation.setGlobalPropagator(e.propagator);let t=ot(r,e);new M(e.spanProcessors,t).register(),we=!0}}a(pt,"init");function Oe(r,e){if(Ae(e)){let t=e.sampling?.headSampler,n=t?st(t)?t:it(t):new C.AlwaysOnSampler,o=Array.isArray(e.spanProcessors)?e.spanProcessors:[e.spanProcessors];return o.length===0&&console.log("Warning! You must either specify an exporter or your own SpanProcessor(s)/Exporter combination in the open-telemetry configuration."),{fetch:{includeTraceContext:e.fetch?.includeTraceContext??!0},handlers:{fetch:{acceptTraceContext:e.handlers?.fetch?.acceptTraceContext??!0}},postProcessor:e.postProcessor??(s=>s),sampling:{headSampler:n,tailSampler:Ce(e.sampling?.tailSampler??ye([Ee,be]))},service:{name:e.service?.name??r.deploymentName,version:e.service?.version,namespace:e.service?.namespace},spanProcessors:o,propagator:e.propagator??new Fe.W3CTraceContextPropagator}}else{let t=at(e.exporter)?e.exporter:new k({useHex:!0,useLongBits:!1,...e.exporter}),n=[new z(t)],o=Object.assign(e,{exporter:void 0,spanProcessors:n});return Oe(r,o)}}a(Oe,"parseConfig");function ke(r,e){return()=>{let t=Oe(r,e);return pt(r,t),t}}a(ke,"createInitializer");var U=class extends He.TelemetryPlugin{constructor(t){super();this.config=t}static{a(this,"OpenTelemetryPlugin")}instrument(t){let n=ke(t,this.config);return{requestHandlerProxy:a(s=>fe(s,n),"requestHandlerProxy")}}};
26
26
  /*! For license information please see index.min.cjs.LEGAL.txt */
package/index.min.js CHANGED
@@ -23,5 +23,5 @@
23
23
  * DEALINGS IN THE SOFTWARE.
24
24
  *--------------------------------------------------------------------------------------------*/
25
25
 
26
- var me=Object.defineProperty;var a=(r,e)=>me(r,"name",{value:e,configurable:!0});import{Buffer as fe}from"node:buffer";globalThis.Buffer=fe;import{TelemetryPlugin as ht}from"@zuplo/runtime";import{SpanKind as Oe,SpanStatusCode as Me,context as D,propagation as Ne,trace as qe}from"@opentelemetry/api";import{context as G}from"@opentelemetry/api";var $=Symbol("Otel Tracing Configuration");function K(r,e=G.active()){return e.setValue($,r)}a(K,"setConfig");function m(){return G.active().getValue($)}a(m,"getActiveConfig");var L=Symbol("unwrap");function V(r){return r&&!!r[L]}a(V,"isWrapped");function ge(r){return typeof r=="object"||typeof r=="function"}a(ge,"isProxyable");function h(r,e,t=!0){if(V(r)||!ge(r))return r;let n=Object.assign({},e);return n.get=(o,s,p)=>{if(s===L)return r;if(e.get)return e.get(o,s,p);if(s==="bind")return()=>p;if(t)return k(o,s)},n.apply=(o,s,p)=>{if(e.apply)return e.apply(S(o),S(s),p)},new Proxy(r,n)}a(h,"wrap");function S(r){return r&&V(r)?r[L]:r}a(S,"unwrap");function k(r,e,t){let n=Reflect.get(S(r),e);return typeof n=="function"?(t=t||S(r),n.bind(t)):n}a(k,"passthroughGet");import{trace as _e}from"@opentelemetry/api";import{SpanKind as be,TraceFlags as Z,context as M,trace as P}from"@opentelemetry/api";import{sanitizeAttributes as Pe}from"@opentelemetry/core";import{RandomIdGenerator as ve,SamplingDecision as Ee}from"@opentelemetry/sdk-trace-base";import{SpanKind as Se,SpanStatusCode as he}from"@opentelemetry/api";import{hrTimeDuration as xe,isAttributeKey as Te,isAttributeValue as Ce,isTimeInput as ye,sanitizeAttributes as X}from"@opentelemetry/core";import{SemanticAttributes as C}from"@opentelemetry/semantic-conventions";function Re(r){let e={};return typeof r=="string"?e[C.EXCEPTION_MESSAGE]=r:(r.code?e[C.EXCEPTION_TYPE]=r.code.toString():r.name&&(e[C.EXCEPTION_TYPE]=r.name),r.message&&(e[C.EXCEPTION_MESSAGE]=r.message),r.stack&&(e[C.EXCEPTION_STACKTRACE]=r.stack)),e}a(Re,"transformExceptionAttributes");function H(r){return[Math.trunc(r/1e3),r%1e3*1e6]}a(H,"millisToHr");function O(r){let e=Date.now();if(r){if(r instanceof Date)return H(r.getTime());if(typeof r=="number")return H(r);if(Array.isArray(r))return r}else return H(e);let t=r;throw new Error(`unreachable value: ${JSON.stringify(t)}`)}a(O,"getHrTime");var b=class{static{a(this,"SpanImpl")}name;_spanContext;onEnd;parentSpanId;kind;attributes;status={code:he.UNSET};endTime=[0,0];_duration=[0,0];startTime;events=[];links;resource;instrumentationLibrary={name:"@zuplo/otel"};_ended=!1;_droppedAttributesCount=0;_droppedEventsCount=0;_droppedLinksCount=0;constructor(e){this.name=e.name,this._spanContext=e.spanContext,this.parentSpanId=e.parentSpanId,this.kind=e.spanKind||Se.INTERNAL,this.attributes=X(e.attributes),this.startTime=O(e.startTime),this.links=e.links||[],this.resource=e.resource,this.onEnd=e.onEnd}spanContext(){return this._spanContext}setAttribute(e,t){return Te(e)&&Ce(t)&&(this.attributes[e]=t),this}setAttributes(e){for(let[t,n]of Object.entries(e))this.setAttribute(t,n);return this}addEvent(e,t,n){ye(t)&&(n=t,t=void 0);let o=X(t),s=O(n);return this.events.push({name:e,attributes:o,time:s}),this}setStatus(e){return this.status=e,this}updateName(e){return this.name=e,this}end(e){this._ended||(this._ended=!0,this.endTime=O(e),this._duration=xe(this.startTime,this.endTime),this.onEnd(this))}isRecording(){return!this._ended}recordException(e,t){let n=Re(e);this.addEvent("exception",n,t)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}};var x=class{static{a(this,"WorkerTracer")}_spanProcessors;resource;idGenerator=new ve;constructor(e,t){this._spanProcessors=e,this.resource=t}get spanProcessors(){return this._spanProcessors}addToResource(e){this.resource.merge(e)}startSpan(e,t={},n=M.active()){t.root&&(n=P.deleteSpan(n));let s=P.getSpan(n)?.spanContext(),p=s&&P.isSpanContextValid(s),i=p?s.traceId:this.idGenerator.generateTraceId(),l=t.kind||be.INTERNAL,c=Pe(t.attributes),u=m().sampling.headSampler.shouldSample(n,i,e,l,c,[]),{decision:T,traceState:w,attributes:I}=u,B=Object.assign({},c,I),g=this.idGenerator.generateSpanId(),U=p?s.spanId:void 0,y=T===Ee.RECORD_AND_SAMPLED?Z.SAMPLED:Z.NONE,F={traceId:i,spanId:g,traceFlags:y,traceState:w},R=new b({attributes:B,name:e,onEnd:f=>{this.spanProcessors.forEach(de=>{de.onEnd(f)})},resource:this.resource,spanContext:F,parentSpanId:U,spanKind:l,startTime:t.startTime});return this.spanProcessors.forEach(f=>{f.onStart(R,n)}),R}startActiveSpan(e,...t){let n=t.length>1?t[0]:void 0,o=t.length>2?t[1]:M.active(),s=t[t.length-1],p=this.startSpan(e,n,o),i=P.setSpan(o,p);return M.with(i,s,void 0,p)}};var N=class{static{a(this,"PromiseTracker")}_outstandingPromises=[];get outstandingPromiseCount(){return this._outstandingPromises.length}track(e){this._outstandingPromises.push(e)}async wait(){await we(this._outstandingPromises)}};function Ae(r,e,t){return h(r,{apply(o,s,p){return t.track(p[0]),Reflect.apply(o,e,p)}})}a(Ae,"createWaitUntil");function Y(r){let e=new N;return{event:new Proxy(r,{get(n,o){if(o==="waitUntil"){let s=Reflect.get(n,o);return Ae(s,r,e)}else return k(n,o)}}),tracker:e}}a(Y,"proxyExecutionContext");async function J(r){let e=_e.getTracer("export");if(e instanceof x){typeof scheduler<"u"?await scheduler.wait(1):await new Promise(n=>{setTimeout(n,1)}),r&&await r.wait();let t=e.spanProcessors.map(async n=>{await n.forceFlush()});await Promise.allSettled(t)}else console.error("The global tracer is not of type WorkerTracer and can not export spans")}a(J,"exportSpans");async function we(r){let e;do e=await Promise.allSettled(r);while(e.length!==r.length);return e}a(we,"allSettledMutable");import{SpanKind as Ie,context as Fe,propagation as Le,trace as ke}from"@opentelemetry/api";function q(r){let e={},t=r.headers,n=r.cf;e["http.request.method"]=r.method.toUpperCase(),e["network.protocol.name"]="http",e["network.protocol.version"]=n?.httpProtocol;let o=t.get("content-length");o&&(e["http.request.body.size"]=o);let s=t.get("user-agent");s&&(e["user_agent.original"]=s);let p=t.get("content-type");p&&(e["http.mime_type"]=p),e["http.accepts"]=n?.clientAcceptEncoding;let i=new URL(r.url);return e["url.full"]=`${i.protocol}//${i.host}${i.pathname}${i.search}`,e["server.address"]=i.host,e["url.scheme"]=i.protocol,e["url.path"]=i.pathname,e["url.query"]=i.search,e}a(q,"gatherRequestAttributes");function z(r){let e={};e["http.response.status_code"]=r.status;let t=r.headers.get("content-length");t&&(e["http.response.body.size"]=t);let n=r.headers.get("content-type");return n&&(e["http.mime_type"]=n),e}a(z,"gatherResponseAttributes");function Q(r){let e={},t=r.cf;return e["net.colo"]=t?.colo,e["net.country"]=t?.country,e["net.request_priority"]=t?.requestPriority,e["net.tls_cipher"]=t?.tlsCipher,e["net.tls_version"]=t?.tlsVersion,e["net.asn"]=t?.asn,e["net.tcp_rtt"]=t?.clientTcpRtt,e}a(Q,"gatherIncomingCfAttributes");function He(r,e,t){return h(r,{apply:(o,s,p)=>{let i=new Request(p[0],p[1]);if(!i.url.startsWith("http"))return Reflect.apply(o,s,p);let l=m(),c=e(l),d=ke.getTracer("fetcher"),u={kind:Ie.CLIENT,attributes:t},T=new URL(i.url).host,w=i.method.toUpperCase(),I=typeof t?.name=="string"?t?.name:`${w}: ${T}`;return d.startActiveSpan(I,u,async g=>{((typeof c.includeTraceContext=="function"?c.includeTraceContext(i):c.includeTraceContext)??!0)&&Le.inject(Fe.active(),i.headers,{set:(F,R,f)=>F.set(R,typeof f=="string"?f:String(f))}),g.setAttributes(q(i)),i.cf&&g.setAttributes(gatherOutgoingCfAttributes(i.cf));let y=await Reflect.apply(o,s,[i]);return g.setAttributes(z(y)),g.end(),y})}},!0)}a(He,"instrumentClientFetch");function ee(){globalThis.fetch=He(globalThis.fetch,r=>r.fetch)}a(ee,"instrumentGlobalFetch");function ze(r){return Ne.extract(D.active(),r,{get(e,t){return e.get(t)||void 0},keys(e){return[...e.keys()]}})}a(ze,"getParentContextFromHeaders");function De(r){let e=m();return(typeof e.handlers.fetch.acceptTraceContext=="function"?e.handlers.fetch.acceptTraceContext(r):e.handlers.fetch.acceptTraceContext??!0)?ze(r.headers):D.active()}a(De,"getParentContextFromRequest");var te=!0;function je(r,[e,t]){let n=De(e),o=qe.getTracer("pipeline"),s={"faas.trigger":"http","faas.coldstart":te,"faas.invocation_id":e.headers.get("zp-rid")??void 0,"cf.ray_id":e.headers.get("cf-ray")??void 0};te=!1,Object.assign(s,q(e)),Object.assign(s,Q(e));let p={attributes:s,kind:Oe.SERVER},i=e.method.toUpperCase();return o.startActiveSpan(i,p,n,async c=>{let d=c;try{let u=await r(e,t);return c.setAttributes(z(u)),d.attributes["http.route"]&&c.updateName(`${i} ${d.attributes["http.route"]}`),u}catch(u){throw d.attributes["http.route"]&&c.updateName(`${i} ${d.attributes["http.route"]}`),c.recordException(u),c.setStatus({code:Me.ERROR}),u}finally{c.end()}})}a(je,"executeRequestHandler");function re(r,e){return h(r,{apply:async(n,o,s)=>{let[p,i]=s,l=e(p),{event:c,tracker:d}=Y(i),u=K(l);try{let T=[p,c];return await D.with(u,je,void 0,n,T)}finally{i.waitUntil(J(d))}}})}a(re,"createHandlerProxy");import{propagation as pt}from"@opentelemetry/api";import{W3CTraceContextPropagator as ct}from"@opentelemetry/core";import{Resource as ie}from"@opentelemetry/resources";import{AlwaysOnSampler as lt,ParentBasedSampler as pe,TraceIdRatioBasedSampler as ut}from"@opentelemetry/sdk-trace-base";import{ExportResultCode as We}from"@opentelemetry/core";import{createExportTraceServiceRequest as Be}from"@opentelemetry/otlp-transformer";import{BackgroundDispatcher as Ue}from"@zuplo/runtime";var Ge={accept:"application/json","content-type":"application/json"},v=class{static{a(this,"OTLPExporter")}headers;url;useHex;useLongBits;constructor(e){this.url=e.url,this.headers=Object.assign({},Ge,e.headers),this.useHex=e.useHex,this.useLongBits=e.useLongBits}export(e,t){e.forEach(n=>{this.batcher.enqueue(n)}),t({code:We.SUCCESS})}shutdown(){throw new Error("Method not implemented.")}forceFlush(){throw new Error("Method not implemented.")}dispatchFunction=async e=>{if(e.length===0)return;let t=Be(e,{useLongBits:this.useLongBits,useHex:this.useHex}),n=await S(fetch)(this.url,{method:"POST",body:JSON.stringify(t),headers:this.headers});if(!n.ok)try{let o=await n.text();console.log("Error exporting traces",o)}catch{console.log("Error exporting traces")}};batcher=new Ue(this.dispatchFunction,{msDelay:10})};import{context as Ze,trace as Ye}from"@opentelemetry/api";import{ROOT_CONTEXT as $e}from"@opentelemetry/api";import{AsyncLocalStorage as Ke}from"node:async_hooks";import{EventEmitter as Ve}from"node:events";var Xe=["addListener","on","once","prependListener","prependOnceListener"],j=class{static{a(this,"AbstractAsyncHooksContextManager")}bind(e,t){return t instanceof Ve?this._bindEventEmitter(e,t):typeof t=="function"?this._bindFunction(e,t):t}_bindFunction(e,t){let n=this,o=a(function(...s){return n.with(e,()=>t.apply(this,s))},"contextWrapper");return Object.defineProperty(o,"length",{enumerable:!1,configurable:!0,writable:!1,value:t.length}),o}_bindEventEmitter(e,t){return this._getPatchMap(t)!==void 0||(this._createPatchMap(t),Xe.forEach(o=>{t[o]!==void 0&&(t[o]=this._patchAddListener(t,t[o],e))}),typeof t.removeListener=="function"&&(t.removeListener=this._patchRemoveListener(t,t.removeListener)),typeof t.off=="function"&&(t.off=this._patchRemoveListener(t,t.off)),typeof t.removeAllListeners=="function"&&(t.removeAllListeners=this._patchRemoveAllListeners(t,t.removeAllListeners))),t}_patchRemoveListener(e,t){let n=this;return function(o,s){let p=n._getPatchMap(e)?.[o];if(p===void 0)return t.call(this,o,s);let i=p.get(s);return t.call(this,o,i||s)}}_patchRemoveAllListeners(e,t){let n=this;return function(o){let s=n._getPatchMap(e);return s!==void 0&&(arguments.length===0?n._createPatchMap(e):s[o]!==void 0&&delete s[o]),t.apply(this,arguments)}}_patchAddListener(e,t,n){let o=this;return function(s,p){if(o._wrapped)return t.call(this,s,p);let i=o._getPatchMap(e);i===void 0&&(i=o._createPatchMap(e));let l=i[s];l===void 0&&(l=new WeakMap,i[s]=l);let c=o.bind(n,p);l.set(p,c),o._wrapped=!0;try{return t.call(this,s,c)}finally{o._wrapped=!1}}}_createPatchMap(e){let t=Object.create(null);return e[this._kOtListeners]=t,t}_getPatchMap(e){return e[this._kOtListeners]}_kOtListeners=Symbol("OtListeners");_wrapped=!1},E=class extends j{static{a(this,"AsyncLocalStorageContextManager")}_asyncLocalStorage;constructor(){super(),this._asyncLocalStorage=new Ke}active(){return this._asyncLocalStorage.getStore()??$e}with(e,t,n,...o){let s=n==null?t:t.bind(n);return this._asyncLocalStorage.run(e,s,...o)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}};var _=class{static{a(this,"ZuploTracerProvider")}spanProcessors;resource;tracers={};constructor(e,t){this.spanProcessors=e,this.resource=t}getTracer(e,t,n){let o=`${e}@${t||""}:${n?.schemaUrl||""}`;return this.tracers[o]||(this.tracers[o]=new x(this.spanProcessors,this.resource)),this.tracers[o]}register(){Ye.setGlobalTracerProvider(this),Ze.setGlobalContextManager(new E)}};import{SpanStatusCode as Je,TraceFlags as Qe}from"@opentelemetry/api";function ne(r){return e=>r.reduce((t,n)=>t||n(e),!1)}a(ne,"multiTailSampler");var oe=a(r=>r.localRootSpan.spanContext().traceFlags===Qe.SAMPLED,"isHeadSampled"),ae=a(r=>r.localRootSpan.status.code===Je.ERROR,"isRootErrorSpan");import{trace as et}from"@opentelemetry/api";import{ExportResultCode as tt}from"@opentelemetry/core";import{stateMachine as rt}from"ts-checked-fsm";function nt(r,{span:e}){let t=e.spanContext().spanId;return{...r,stateName:"in_progress",traceId:e.spanContext().traceId,localRootSpan:e,completedSpans:[],inProgressSpanIds:new Set([t])}}a(nt,"newTrace");function ot(r,{span:e}){let t=e.spanContext().spanId;return r.inProgressSpanIds.add(t),{...r}}a(ot,"newSpan");function at(r,{span:e}){return r.completedSpans.push(e),r.inProgressSpanIds.delete(e.spanContext().spanId),r.inProgressSpanIds.size===0?{stateName:"trace_complete",traceId:r.traceId,localRootSpan:r.localRootSpan,completedSpans:r.completedSpans}:{...r}}a(at,"endSpan");function st(r,{args:e}){let{exporter:t,tailSampler:n,postProcessor:o}=e,{traceId:s,localRootSpan:p,completedSpans:i}=r;if(n({traceId:s,localRootSpan:p,spans:i})){let c=o(i);return{stateName:"exporting",promise:new Promise(u=>{t.export(c,u)})}}else return{stateName:"done"}}a(st,"startExport");var{nextState:it}=rt().state("not_started").state("in_progress").state("trace_complete").state("exporting").state("done").transition("not_started","in_progress").transition("in_progress","in_progress").transition("in_progress","trace_complete").transition("trace_complete","exporting").transition("trace_complete","done").transition("exporting","done").action("startSpan").action("endSpan").action("startExport").action("exportDone").actionHandler("not_started","startSpan",nt).actionHandler("in_progress","startSpan",ot).actionHandler("in_progress","endSpan",at).actionHandler("trace_complete","startExport",st).actionHandler("exporting","exportDone",(r,e)=>({stateName:"done"})).done(),A=class{constructor(e){this.exporter=e}static{a(this,"BatchTraceSpanProcessor")}traceLookup=new Map;localRootSpanLookup=new Map;inprogressExports=new Map;action(e,t){let n=this.traceLookup.get(e)||{stateName:"not_started"},o=it(n,t);return o.stateName==="done"?this.traceLookup.delete(e):this.traceLookup.set(e,o),o}export(e){let{sampling:t,postProcessor:n}=m(),o={exporter:this.exporter,tailSampler:t.tailSampler,postProcessor:n},s=this.action(e,{actionName:"startExport",args:o});if(s.stateName==="exporting"){let p=s.promise;this.inprogressExports.set(e,p),p.then(i=>{i.code===tt.FAILED&&console.log("Error sending spans to exporter:",i.error),this.action(e,{actionName:"exportDone"}),this.inprogressExports.delete(e)})}}onStart(e,t){let n=e.spanContext().spanId,o=et.getSpan(t)?.spanContext()?.spanId,p=(o?this.localRootSpanLookup.get(o):void 0)||n;this.localRootSpanLookup.set(n,p),this.action(p,{actionName:"startSpan",span:e})}onEnd(e){let t=e.spanContext().spanId,n=this.localRootSpanLookup.get(t);if(n){let o=this.action(n,{actionName:"endSpan",span:e});o.stateName==="trace_complete"&&(o.completedSpans.forEach(s=>{this.localRootSpanLookup.delete(s.spanContext().spanId)}),this.export(n))}}async forceFlush(){await Promise.allSettled(this.inprogressExports.values())}async shutdown(){}};function se(r){return!!r.spanProcessors}a(se,"isSpanProcessorConfig");var dt=a((r,e)=>{let t={"cloud.provider":"zuplo","cloud.platform":"zuplo-api","cloud.account.id":r.accountName,"cloud.project.id":r.projectName,"cloud.resource_id":r.deploymentName,"cloud.instance_id":r.instanceId,"telemetry.sdk.language":"js","telemetry.sdk.name":"@zuplo/otel","zuplo.build.id":r.buildId,"zuplo.build.version":r.zuploVersion,"zuplo.build.compatibility_date":r.compatibilityDate,"zuplo.environment_type":r.environmentType,"zuplo.environment_stage":r.environmentStage},n=new ie({"service.name":e.service.name,"service.namespace":e.service.namespace,"service.version":e.service.version});return new ie(t).merge(n)},"createResource");function mt(r){return!!r.export}a(mt,"isSpanExporter");function ft(r){return!!r.shouldSample}a(ft,"isSampler");function gt(r){let e=new ut(r.ratio);return typeof r.acceptRemote=="boolean"&&!r.acceptRemote?new pe({root:e,remoteParentSampled:e,remoteParentNotSampled:e}):new pe({root:e})}a(gt,"createSampler");var ce=!1;function St(r,e){if(!ce){ee(),pt.setGlobalPropagator(e.propagator);let t=dt(r,e);new _(e.spanProcessors,t).register(),ce=!0}}a(St,"init");function le(r,e){if(se(e)){let t=e.sampling?.headSampler,n=t?ft(t)?t:gt(t):new lt,o=Array.isArray(e.spanProcessors)?e.spanProcessors:[e.spanProcessors];return o.length===0&&console.log("Warning! You must either specify an exporter or your own SpanProcessor(s)/Exporter combination in the open-telemetry configuration."),{fetch:{includeTraceContext:e.fetch?.includeTraceContext??!0},handlers:{fetch:{acceptTraceContext:e.handlers?.fetch?.acceptTraceContext??!0}},postProcessor:e.postProcessor??(s=>s),sampling:{headSampler:n,tailSampler:e.sampling?.tailSampler??ne([oe,ae])},service:{name:e.service?.name??r.deploymentName,version:e.service?.version,namespace:e.service?.namespace},spanProcessors:o,propagator:e.propagator??new ct}}else{let t=mt(e.exporter)?e.exporter:new v({useHex:!0,useLongBits:!1,...e.exporter}),n=[new A(t)],o=Object.assign(e,{exporter:void 0,spanProcessors:n});return le(r,o)}}a(le,"parseConfig");function ue(r,e){return()=>{let t=le(r,e);return St(r,t),t}}a(ue,"createInitializer");var W=class extends ht{constructor(t){super();this.config=t}static{a(this,"OpenTelemetryPlugin")}instrument(t){let n=ue(t,this.config);return{requestHandlerProxy:a(s=>re(s,n),"requestHandlerProxy")}}};export{W as OpenTelemetryPlugin};
26
+ var he=Object.defineProperty;var a=(r,e)=>he(r,"name",{value:e,configurable:!0});import{Buffer as xe}from"node:buffer";globalThis.Buffer=xe;import{TelemetryPlugin as It}from"@zuplo/runtime";import{SpanKind as ze,SpanStatusCode as Ue,context as z,propagation as Be,trace as We}from"@opentelemetry/api";import{context as $}from"@opentelemetry/api";var G=Symbol("Otel Tracing Configuration");function K(r,e=$.active()){return e.setValue(G,r)}a(K,"setConfig");function m(){return $.active().getValue(G)}a(m,"getActiveConfig");var L=Symbol("unwrap");function Z(r){return r&&!!r[L]}a(Z,"isWrapped");function Te(r){return typeof r=="object"||typeof r=="function"}a(Te,"isProxyable");function h(r,e,t=!0){if(Z(r)||!Te(r))return r;let n=Object.assign({},e);return n.get=(o,s,p)=>{if(s===L)return r;if(e.get)return e.get(o,s,p);if(s==="bind")return()=>p;if(t)return O(o,s)},n.apply=(o,s,p)=>{if(e.apply)return e.apply(S(o),S(s),p)},new Proxy(r,n)}a(h,"wrap");function S(r){return r&&Z(r)?r[L]:r}a(S,"unwrap");function O(r,e,t){let n=Reflect.get(S(r),e);return typeof n=="function"?(t=t||S(r),n.bind(t)):n}a(O,"passthroughGet");import{trace as Le}from"@opentelemetry/api";import{SpanKind as Ae,TraceFlags as Q,context as M,trace as E}from"@opentelemetry/api";import{sanitizeAttributes as we}from"@opentelemetry/core";import{RandomIdGenerator as Ie,SamplingDecision as Fe}from"@opentelemetry/sdk-trace-base";import{SpanKind as Re,SpanStatusCode as Ce}from"@opentelemetry/api";import{hrTimeDuration as ye,isAttributeKey as Ee,isAttributeValue as be,isTimeInput as Pe,sanitizeAttributes as X}from"@opentelemetry/core";import{SEMATTRS_EXCEPTION_MESSAGE as Y,SEMATTRS_EXCEPTION_STACKTRACE as ve,SEMATTRS_EXCEPTION_TYPE as J}from"@opentelemetry/semantic-conventions";function _e(r){let e={};return typeof r=="string"?e[Y]=r:(r.code?e[J]=r.code.toString():r.name&&(e[J]=r.name),r.message&&(e[Y]=r.message),r.stack&&(e[ve]=r.stack)),e}a(_e,"transformExceptionAttributes");function k(r){return[Math.trunc(r/1e3),r%1e3*1e6]}a(k,"millisToHr");function H(r){let e=Date.now();if(r){if(r instanceof Date)return k(r.getTime());if(typeof r=="number")return k(r);if(Array.isArray(r))return r}else return k(e);let t=r;throw new Error(`unreachable value: ${JSON.stringify(t)}`)}a(H,"getHrTime");var y=class{static{a(this,"SpanImpl")}name;_spanContext;onEnd;parentSpanId;kind;attributes;status={code:Ce.UNSET};endTime=[0,0];_duration=[0,0];startTime;events=[];links;resource;instrumentationLibrary={name:"@zuplo/otel"};_ended=!1;_droppedAttributesCount=0;_droppedEventsCount=0;_droppedLinksCount=0;constructor(e){this.name=e.name,this._spanContext=e.spanContext,this.parentSpanId=e.parentSpanId,this.kind=e.spanKind||Re.INTERNAL,this.attributes=X(e.attributes),this.startTime=H(e.startTime),this.links=e.links||[],this.resource=e.resource,this.onEnd=e.onEnd}spanContext(){return this._spanContext}setAttribute(e,t){return Ee(e)&&be(t)&&(this.attributes[e]=t),this}setAttributes(e){for(let[t,n]of Object.entries(e))this.setAttribute(t,n);return this}addEvent(e,t,n){Pe(t)&&(n=t,t=void 0);let o=X(t),s=H(n);return this.events.push({name:e,attributes:o,time:s}),this}setStatus(e){return this.status=e,this}updateName(e){return this.name=e,this}end(e){this._ended||(this._ended=!0,this.endTime=H(e),this._duration=ye(this.startTime,this.endTime),this.onEnd(this))}isRecording(){return!this._ended}recordException(e,t){let n=_e(e);this.addEvent("exception",n,t)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}};var x=class{static{a(this,"WorkerTracer")}_spanProcessors;resource;idGenerator=new Ie;constructor(e,t){this._spanProcessors=e,this.resource=t}get spanProcessors(){return this._spanProcessors}addToResource(e){this.resource.merge(e)}startSpan(e,t={},n=M.active()){t.root&&(n=E.deleteSpan(n));let s=E.getSpan(n)?.spanContext(),p=s&&E.isSpanContextValid(s),i=p?s.traceId:this.idGenerator.generateTraceId(),l=t.kind||Ae.INTERNAL,c=we(t.attributes),u=m().sampling.headSampler.shouldSample(n,i,e,l,c,[]),{decision:T,traceState:w,attributes:I}=u,j=Object.assign({},c,I),g=this.idGenerator.generateSpanId(),V=p?s.spanId:void 0,R=T===Fe.RECORD_AND_SAMPLED?Q.SAMPLED:Q.NONE,F={traceId:i,spanId:g,traceFlags:R,traceState:w},C=new y({attributes:j,name:e,onEnd:f=>{this.spanProcessors.forEach(Se=>{Se.onEnd(f)})},resource:this.resource,spanContext:F,parentSpanId:V,spanKind:l,startTime:t.startTime});return this.spanProcessors.forEach(f=>{f.onStart(C,n)}),C}startActiveSpan(e,...t){let n=t.length>1?t[0]:void 0,o=t.length>2?t[1]:M.active(),s=t[t.length-1],p=this.startSpan(e,n,o),i=E.setSpan(o,p);return M.with(i,s,void 0,p)}};var N=class{static{a(this,"PromiseTracker")}_outstandingPromises=[];get outstandingPromiseCount(){return this._outstandingPromises.length}track(e){this._outstandingPromises.push(e)}async wait(){await ke(this._outstandingPromises)}};function Oe(r,e,t){return h(r,{apply(o,s,p){return t.track(p[0]),Reflect.apply(o,e,p)}})}a(Oe,"createWaitUntil");function ee(r){let e=new N;return{event:new Proxy(r,{get(n,o){if(o==="waitUntil"){let s=Reflect.get(n,o);return Oe(s,r,e)}else return O(n,o)}}),tracker:e}}a(ee,"proxyExecutionContext");async function te(r){let e=Le.getTracer("export");if(e instanceof x){typeof scheduler<"u"?await scheduler.wait(1):await new Promise(n=>{setTimeout(n,1)}),r&&await r.wait();let t=e.spanProcessors.map(async n=>{await n.forceFlush()});await Promise.allSettled(t)}else console.error("The global tracer is not of type WorkerTracer and can not export spans")}a(te,"exportSpans");async function ke(r){let e;do e=await Promise.allSettled(r);while(e.length!==r.length);return e}a(ke,"allSettledMutable");import{SpanKind as He,context as Me,propagation as Ne,trace as qe}from"@opentelemetry/api";function q(r){let e={},t=r.headers,n=r.cf;e["http.request.method"]=r.method.toUpperCase(),e["network.protocol.name"]="http",e["network.protocol.version"]=n?.httpProtocol;let o=t.get("content-length");o&&(e["http.request.body.size"]=o);let s=t.get("user-agent");s&&(e["user_agent.original"]=s);let p=t.get("content-type");p&&(e["http.mime_type"]=p),e["http.accepts"]=n?.clientAcceptEncoding;let i=new URL(r.url);return e["url.full"]=`${i.protocol}//${i.host}${i.pathname}${i.search}`,e["server.address"]=i.host,e["url.scheme"]=i.protocol,e["url.path"]=i.pathname,e["url.query"]=i.search,e}a(q,"gatherRequestAttributes");function D(r){let e={};e["http.response.status_code"]=r.status;let t=r.headers.get("content-length");t&&(e["http.response.body.size"]=t);let n=r.headers.get("content-type");return n&&(e["http.mime_type"]=n),e}a(D,"gatherResponseAttributes");function re(r){let e={},t=r.cf;return e["net.colo"]=t?.colo,e["net.country"]=t?.country,e["net.request_priority"]=t?.requestPriority,e["net.tls_cipher"]=t?.tlsCipher,e["net.tls_version"]=t?.tlsVersion,e["net.asn"]=t?.asn,e["net.tcp_rtt"]=t?.clientTcpRtt,e}a(re,"gatherIncomingCfAttributes");function De(r,e,t){return h(r,{apply:(o,s,p)=>{let i=new Request(p[0],p[1]);if(!i.url.startsWith("http"))return Reflect.apply(o,s,p);let l=m(),c=e(l),d=qe.getTracer("fetcher"),u={kind:He.CLIENT,attributes:t},T=new URL(i.url).host,w=i.method.toUpperCase(),I=typeof t?.name=="string"?t?.name:`${w}: ${T}`;return d.startActiveSpan(I,u,async g=>{((typeof c.includeTraceContext=="function"?c.includeTraceContext(i):c.includeTraceContext)??!0)&&Ne.inject(Me.active(),i.headers,{set:(F,C,f)=>F.set(C,typeof f=="string"?f:String(f))}),g.setAttributes(q(i)),i.cf&&g.setAttributes(gatherOutgoingCfAttributes(i.cf));let R=await Reflect.apply(o,s,[i]);return g.setAttributes(D(R)),g.end(),R})}},!0)}a(De,"instrumentClientFetch");function ne(){globalThis.fetch=De(globalThis.fetch,r=>r.fetch)}a(ne,"instrumentGlobalFetch");function je(r){return Be.extract(z.active(),r,{get(e,t){return e.get(t)||void 0},keys(e){return[...e.keys()]}})}a(je,"getParentContextFromHeaders");function Ve(r){let e=m();return(typeof e.handlers.fetch.acceptTraceContext=="function"?e.handlers.fetch.acceptTraceContext(r):e.handlers.fetch.acceptTraceContext??!0)?je(r.headers):z.active()}a(Ve,"getParentContextFromRequest");var oe=!0;function $e(r,[e,t]){let n=Ve(e),o=We.getTracer("pipeline"),s={"faas.trigger":"http","faas.coldstart":oe,"faas.invocation_id":e.headers.get("zp-rid")??void 0,"cf.ray_id":e.headers.get("cf-ray")??void 0};oe=!1,Object.assign(s,q(e)),Object.assign(s,re(e));let p={attributes:s,kind:ze.SERVER},i=e.method.toUpperCase();return o.startActiveSpan(i,p,n,async c=>{let d=c;try{let u=await r(e,t);return c.setAttributes(D(u)),d.attributes["http.route"]&&c.updateName(`${i} ${d.attributes["http.route"]}`),u}catch(u){throw d.attributes["http.route"]&&c.updateName(`${i} ${d.attributes["http.route"]}`),c.recordException(u),c.setStatus({code:Ue.ERROR}),u}finally{c.end()}})}a($e,"executeRequestHandler");function ae(r,e){return h(r,{apply:async(n,o,s)=>{let[p,i]=s,l=e(p),{event:c,tracker:d}=ee(i),u=K(l);try{let T=[p,c];return await z.with(u,$e,void 0,n,T)}finally{i.waitUntil(te(d))}}})}a(ae,"createHandlerProxy");import{propagation as mt}from"@opentelemetry/api";import{W3CTraceContextPropagator as ft}from"@opentelemetry/core";import{Resource as ue}from"@opentelemetry/resources";import{AlwaysOnSampler as gt,ParentBasedSampler as de,TraceIdRatioBasedSampler as St}from"@opentelemetry/sdk-trace-base";import{SemanticAttributes as A}from"@zuplo/runtime";import{ExportResultCode as Ge}from"@opentelemetry/core";import{createExportTraceServiceRequest as Ke}from"@opentelemetry/otlp-transformer";import{BackgroundDispatcher as Ze}from"@zuplo/runtime";var Xe={accept:"application/json","content-type":"application/json"},b=class{static{a(this,"OTLPExporter")}headers;url;useHex;useLongBits;constructor(e){this.url=e.url,this.headers=Object.assign({},Xe,e.headers),this.useHex=e.useHex,this.useLongBits=e.useLongBits}export(e,t){e.forEach(n=>{this.batcher.enqueue(n)}),t({code:Ge.SUCCESS})}shutdown(){throw new Error("Method not implemented.")}forceFlush(){throw new Error("Method not implemented.")}dispatchFunction=async e=>{if(e.length===0)return;let t=Ke(e,{useLongBits:this.useLongBits,useHex:this.useHex}),n=await S(fetch)(this.url,{method:"POST",body:JSON.stringify(t),headers:this.headers});if(!n.ok)try{let o=await n.text();console.log("Error exporting traces",o)}catch{console.log("Error exporting traces")}};batcher=new Ze(this.dispatchFunction,{msDelay:10})};import{context as tt,trace as rt}from"@opentelemetry/api";import{ROOT_CONTEXT as Ye}from"@opentelemetry/api";import{AsyncLocalStorage as Je}from"node:async_hooks";import{EventEmitter as Qe}from"node:events";var et=["addListener","on","once","prependListener","prependOnceListener"],U=class{static{a(this,"AbstractAsyncHooksContextManager")}bind(e,t){return t instanceof Qe?this._bindEventEmitter(e,t):typeof t=="function"?this._bindFunction(e,t):t}_bindFunction(e,t){let n=this,o=a(function(...s){return n.with(e,()=>t.apply(this,s))},"contextWrapper");return Object.defineProperty(o,"length",{enumerable:!1,configurable:!0,writable:!1,value:t.length}),o}_bindEventEmitter(e,t){return this._getPatchMap(t)!==void 0||(this._createPatchMap(t),et.forEach(o=>{t[o]!==void 0&&(t[o]=this._patchAddListener(t,t[o],e))}),typeof t.removeListener=="function"&&(t.removeListener=this._patchRemoveListener(t,t.removeListener)),typeof t.off=="function"&&(t.off=this._patchRemoveListener(t,t.off)),typeof t.removeAllListeners=="function"&&(t.removeAllListeners=this._patchRemoveAllListeners(t,t.removeAllListeners))),t}_patchRemoveListener(e,t){let n=this;return function(o,s){let p=n._getPatchMap(e)?.[o];if(p===void 0)return t.call(this,o,s);let i=p.get(s);return t.call(this,o,i||s)}}_patchRemoveAllListeners(e,t){let n=this;return function(o){let s=n._getPatchMap(e);return s!==void 0&&(arguments.length===0?n._createPatchMap(e):s[o]!==void 0&&delete s[o]),t.apply(this,arguments)}}_patchAddListener(e,t,n){let o=this;return function(s,p){if(o._wrapped)return t.call(this,s,p);let i=o._getPatchMap(e);i===void 0&&(i=o._createPatchMap(e));let l=i[s];l===void 0&&(l=new WeakMap,i[s]=l);let c=o.bind(n,p);l.set(p,c),o._wrapped=!0;try{return t.call(this,s,c)}finally{o._wrapped=!1}}}_createPatchMap(e){let t=Object.create(null);return e[this._kOtListeners]=t,t}_getPatchMap(e){return e[this._kOtListeners]}_kOtListeners=Symbol("OtListeners");_wrapped=!1},P=class extends U{static{a(this,"AsyncLocalStorageContextManager")}_asyncLocalStorage;constructor(){super(),this._asyncLocalStorage=new Je}active(){return this._asyncLocalStorage.getStore()??Ye}with(e,t,n,...o){let s=n==null?t:t.bind(n);return this._asyncLocalStorage.run(e,s,...o)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}};var v=class{static{a(this,"ZuploTracerProvider")}spanProcessors;resource;tracers={};constructor(e,t){this.spanProcessors=e,this.resource=t}getTracer(e,t,n){let o=`${e}@${t||""}:${n?.schemaUrl||""}`;return this.tracers[o]||(this.tracers[o]=new x(this.spanProcessors,this.resource)),this.tracers[o]}register(){rt.setGlobalTracerProvider(this),tt.setGlobalContextManager(new P)}};import{SpanStatusCode as nt,TraceFlags as ot}from"@opentelemetry/api";import{SemanticAttributes as B}from"@zuplo/runtime";function se(r){return e=>{let t=e.localRootSpan;return t.attributes[B.SystemTrace]??t.attributes[B.RouteSystem]??t.attributes[B.RouteTrace]===!1?!1:r(e)}}a(se,"internalTailSampler");function ie(r){return e=>r.reduce((t,n)=>t||n(e),!1)}a(ie,"multiTailSampler");var pe=a(r=>r.localRootSpan.spanContext().traceFlags===ot.SAMPLED,"isHeadSampled"),ce=a(r=>r.localRootSpan.status.code===nt.ERROR,"isRootErrorSpan");import{trace as at}from"@opentelemetry/api";import{ExportResultCode as st}from"@opentelemetry/core";import{stateMachine as it}from"ts-checked-fsm";function pt(r,{span:e}){let t=e.spanContext().spanId;return{...r,stateName:"in_progress",traceId:e.spanContext().traceId,localRootSpan:e,completedSpans:[],inProgressSpanIds:new Set([t])}}a(pt,"newTrace");function ct(r,{span:e}){let t=e.spanContext().spanId;return r.inProgressSpanIds.add(t),{...r}}a(ct,"newSpan");function lt(r,{span:e}){return r.completedSpans.push(e),r.inProgressSpanIds.delete(e.spanContext().spanId),r.inProgressSpanIds.size===0?{stateName:"trace_complete",traceId:r.traceId,localRootSpan:r.localRootSpan,completedSpans:r.completedSpans}:{...r}}a(lt,"endSpan");function ut(r,{args:e}){let{exporter:t,tailSampler:n,postProcessor:o}=e,{traceId:s,localRootSpan:p,completedSpans:i}=r;if(n({traceId:s,localRootSpan:p,spans:i})){let c=o(i);return{stateName:"exporting",promise:new Promise(u=>{t.export(c,u)})}}else return{stateName:"done"}}a(ut,"startExport");var{nextState:dt}=it().state("not_started").state("in_progress").state("trace_complete").state("exporting").state("done").transition("not_started","in_progress").transition("in_progress","in_progress").transition("in_progress","trace_complete").transition("trace_complete","exporting").transition("trace_complete","done").transition("exporting","done").action("startSpan").action("endSpan").action("startExport").action("exportDone").actionHandler("not_started","startSpan",pt).actionHandler("in_progress","startSpan",ct).actionHandler("in_progress","endSpan",lt).actionHandler("trace_complete","startExport",ut).actionHandler("exporting","exportDone",(r,e)=>({stateName:"done"})).done(),_=class{constructor(e){this.exporter=e}static{a(this,"BatchTraceSpanProcessor")}traceLookup=new Map;localRootSpanLookup=new Map;inprogressExports=new Map;action(e,t){let n=this.traceLookup.get(e)||{stateName:"not_started"},o=dt(n,t);return o.stateName==="done"?this.traceLookup.delete(e):this.traceLookup.set(e,o),o}export(e){let{sampling:t,postProcessor:n}=m(),o={exporter:this.exporter,tailSampler:t.tailSampler,postProcessor:n},s=this.action(e,{actionName:"startExport",args:o});if(s.stateName==="exporting"){let p=s.promise;this.inprogressExports.set(e,p),p.then(i=>{i.code===st.FAILED&&console.log("Error sending spans to exporter:",i.error),this.action(e,{actionName:"exportDone"}),this.inprogressExports.delete(e)})}}onStart(e,t){let n=e.spanContext().spanId,o=at.getSpan(t)?.spanContext()?.spanId,p=(o?this.localRootSpanLookup.get(o):void 0)||n;this.localRootSpanLookup.set(n,p),this.action(p,{actionName:"startSpan",span:e})}onEnd(e){let t=e.spanContext().spanId,n=this.localRootSpanLookup.get(t);if(n){let o=this.action(n,{actionName:"endSpan",span:e});o.stateName==="trace_complete"&&(o.completedSpans.forEach(s=>{this.localRootSpanLookup.delete(s.spanContext().spanId)}),this.export(n))}}async forceFlush(){await Promise.allSettled(this.inprogressExports.values())}async shutdown(){}};function le(r){return!!r.spanProcessors}a(le,"isSpanProcessorConfig");import{SEMRESATTRS_CLOUD_ACCOUNT_ID as ht,SEMRESATTRS_CLOUD_PLATFORM as xt,SEMRESATTRS_CLOUD_PROVIDER as Tt,SEMRESATTRS_SERVICE_NAME as Rt,SEMRESATTRS_SERVICE_NAMESPACE as Ct,SEMRESATTRS_SERVICE_VERSION as yt,SEMRESATTRS_TELEMETRY_SDK_NAME as Et}from"@opentelemetry/semantic-conventions";import{SEMRESATTRS_DEPLOYMENT_ENVIRONMENT as bt}from"@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes";var Pt=a((r,e)=>{let t={[Tt]:"zuplo",[xt]:"zuplo-api",[ht]:r.accountName,"cloud.project.id":r.projectName,"cloud.resource_id":r.deploymentName,"cloud.instance_id":r.instanceId,[bt]:r.environmentStage,[Et]:"@zuplo/otel",[A.ZuploBuildId]:r.buildId,[A.ZuploBuildVersion]:r.zuploVersion,[A.ZuploBuildCompatibilityDate]:r.compatibilityDate,[A.ZuploEnvironmentType]:r.environmentType},n=new ue({[Rt]:e.service.name,[Ct]:e.service.namespace,[yt]:e.service.version});return new ue(t).merge(n)},"createResource");function vt(r){return!!r.export}a(vt,"isSpanExporter");function _t(r){return!!r.shouldSample}a(_t,"isSampler");function At(r){let e=new St(r.ratio);return typeof r.acceptRemote=="boolean"&&!r.acceptRemote?new de({root:e,remoteParentSampled:e,remoteParentNotSampled:e}):new de({root:e})}a(At,"createSampler");var me=!1;function wt(r,e){if(!me){ne(),mt.setGlobalPropagator(e.propagator);let t=Pt(r,e);new v(e.spanProcessors,t).register(),me=!0}}a(wt,"init");function fe(r,e){if(le(e)){let t=e.sampling?.headSampler,n=t?_t(t)?t:At(t):new gt,o=Array.isArray(e.spanProcessors)?e.spanProcessors:[e.spanProcessors];return o.length===0&&console.log("Warning! You must either specify an exporter or your own SpanProcessor(s)/Exporter combination in the open-telemetry configuration."),{fetch:{includeTraceContext:e.fetch?.includeTraceContext??!0},handlers:{fetch:{acceptTraceContext:e.handlers?.fetch?.acceptTraceContext??!0}},postProcessor:e.postProcessor??(s=>s),sampling:{headSampler:n,tailSampler:se(e.sampling?.tailSampler??ie([pe,ce]))},service:{name:e.service?.name??r.deploymentName,version:e.service?.version,namespace:e.service?.namespace},spanProcessors:o,propagator:e.propagator??new ft}}else{let t=vt(e.exporter)?e.exporter:new b({useHex:!0,useLongBits:!1,...e.exporter}),n=[new _(t)],o=Object.assign(e,{exporter:void 0,spanProcessors:n});return fe(r,o)}}a(fe,"parseConfig");function ge(r,e){return()=>{let t=fe(r,e);return wt(r,t),t}}a(ge,"createInitializer");var W=class extends It{constructor(t){super();this.config=t}static{a(this,"OpenTelemetryPlugin")}instrument(t){let n=ge(t,this.config);return{requestHandlerProxy:a(s=>ae(s,n),"requestHandlerProxy")}}};export{W as OpenTelemetryPlugin};
27
27
  /*! For license information please see index.min.js.LEGAL.txt */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zuplo/otel",
3
- "version": "0.0.0",
3
+ "version": "5.1958.0",
4
4
  "repository": "https://github.com/zuplo/zuplo",
5
5
  "author": "Zuplo, Inc.",
6
6
  "exports": {