@uploadista/observability 0.0.18-beta.1 → 0.0.18-beta.11
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/index.cjs +1 -1
- package/dist/index.d.cts +274 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +372 -99
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -6
- package/src/core/exporters.ts +231 -0
- package/src/core/index.ts +1 -0
- package/src/core/tracing.ts +255 -0
- package/src/flow/metrics.ts +34 -0
- package/src/flow/tracing.ts +69 -0
- package/src/index.ts +0 -2
- package/tests/core/exporters.test.ts +235 -0
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e=require(`effect`),t=require(`@effect/opentelemetry`),n=require(`@opentelemetry/sdk-trace-base`);const r=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.indexOf(`network`)>=0||r.indexOf(`timeout`)>=0?`network_error`:t===`InvalidAccessKeyId`||t===`SignatureDoesNotMatch`||t===`TokenRefreshRequired`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.indexOf(`authentication`)>=0||r.indexOf(`unauthorized`)>=0?`authentication_error`:t===`AccessDenied`||t===`AccountProblem`||t===`Forbidden`||n===`AuthorizationError`||r.indexOf(`forbidden`)>=0||r.indexOf(`permission`)>=0?`authorization_error`:t===`SlowDown`||t===`RequestTimeTooSkewed`||t===`TooManyRequests`||n===`ThrottlingError`||r.indexOf(`throttl`)>=0||r.indexOf(`rate limit`)>=0?`throttling_error`:t===`InternalError`||t===`ServiceUnavailable`||t===`InternalServerError`||n===`ServerError`||r.indexOf(`server error`)>=0||r.indexOf(`service unavailable`)>=0?`server_error`:t===`InvalidRequest`||t===`MalformedXML`||t===`RequestEntityTooLarge`||t===`BadRequest`||n===`ClientError`||r.indexOf(`bad request`)>=0||r.indexOf(`invalid`)>=0?`client_error`:`unknown_error`},i=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return r(e)},a=(t,n,i,a,o={},s=r)=>e.Effect.gen(function*(){let r=s(a);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,i),e.Metric.tagged(`error_category`,r))(e.Effect.succeed(1));let c={storage_type:t,operation:i,error_category:r,error_type:typeof a,error_message:a instanceof Error?a.message:String(a),error_code:a&&typeof a==`object`&&`code`in a?a.code:void 0,error_name:a&&typeof a==`object`&&`name`in a?a.name:void 0,...o};yield*e.Effect.logError(`${t.toUpperCase()} ${i} failed`).pipe(e.Effect.annotateLogs(c))}),o=(e,t,n)=>{let r=i(e,n);return(n,i,o={})=>a(e,t,n,i,o,r)};var s=class extends e.Context.Tag(`Observability`)(){},c=class extends e.Context.Tag(`StorageObservability`)(){},l=class extends e.Context.Tag(`UploadObservability`)(){},u=class extends e.Context.Tag(`FlowObservability`)(){};const d=(t,n=!0)=>e.Layer.succeed(s,{serviceName:t,enabled:n}),f=(t,n,r=!0)=>e.Layer.succeed(c,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),p=(t=!0)=>e.Layer.succeed(l,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),m=(t=!0)=>e.Layer.succeed(u,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),ee=d(`uploadista-disabled`,!1),te=e=>f(e,{},!1),ne=p(!1),re=m(!1),h=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(s);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),ie=t=>e.Effect.gen(function*(){if(yield*h){let n=yield*t;return e.Option.some(n)}return e.Option.none()}),g=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),_=(e,t,n)=>g(`Upload progress`,{storage_type:e,upload_id:t,uploaded_bytes:n.uploadedBytes,total_bytes:n.totalBytes,progress_percentage:Math.round(n.uploadedBytes/n.totalBytes*100),...n.partNumber&&{part_number:n.partNumber},...n.speed&&{upload_speed_bps:n.speed}}),v=(e,t,n,r)=>g(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),y=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return g(`${e.toUpperCase()} upload completed`,{storage_type:e,upload_id:t,file_size_bytes:n.fileSize,file_size_mb:Math.round(n.fileSize/(1024*1024)*100)/100,total_duration_ms:n.totalDurationMs,total_duration_seconds:Math.round(n.totalDurationMs/1e3*100)/100,throughput_bps:n.throughputBps,throughput_mbps:Math.round(r*100)/100,...n.partsCount&&{parts_count:n.partsCount},...n.averagePartSize&&{average_part_size_bytes:n.averagePartSize,average_part_size_mb:Math.round(n.averagePartSize/(1024*1024)*100)/100},...n.retryCount&&{retry_count:n.retryCount}})},ae=t=>({uploadRequestsTotal:e.Metric.counter(`${t}_upload_requests_total`,{description:`Total number of upload requests for ${t}`}),uploadPartsTotal:e.Metric.counter(`${t}_upload_parts_total`,{description:`Total number of individual parts uploaded for ${t}`}),uploadSuccessTotal:e.Metric.counter(`${t}_upload_success_total`,{description:`Total number of successful uploads for ${t}`}),uploadErrorsTotal:e.Metric.counter(`${t}_upload_errors_total`,{description:`Total number of upload errors for ${t}`}),apiCallsTotal:e.Metric.counter(`${t}_api_calls_total`,{description:`Total number of API calls for ${t}`})}),oe=t=>({uploadDurationHistogram:e.Metric.histogram(`${t}_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of upload operations in seconds for ${t}`),partUploadDurationHistogram:e.Metric.histogram(`${t}_part_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual part uploads in seconds for ${t}`),fileSizeHistogram:e.Metric.histogram(`${t}_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes for ${t}`),partSizeHistogram:e.Metric.histogram(`${t}_part_size_bytes`,e.MetricBoundaries.linear({start:5242880,width:1048576,count:20}),`Size of upload parts in bytes for ${t}`)}),se=t=>({activeUploadsGauge:e.Metric.gauge(`${t}_active_uploads`,{description:`Number of currently active uploads for ${t}`}),uploadThroughputGauge:e.Metric.gauge(`${t}_upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second for ${t}`})}),b=t=>({uploadLatencySummary:e.Metric.summary({name:`${t}_upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload latency percentiles for ${t}`})}),x=e=>({...ae(e),...oe(e),...se(e),...b(e)}),S=t=>{let n=x(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(c,r)},C=()=>{let t={serviceName:`test-upload-server`,enabled:!0,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}};return e.Layer.succeed(l,t)},w=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(u,t)},ce=t=>e.Effect.gen(function*(){let n=yield*t;return yield*e.Metric.snapshot,n}),le=t=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let n=yield*t;return yield*e.Metric.snapshot,n}),T=(e=`test-storage`)=>({storageObservability:S(e),uploadObservability:C(),flowObservability:w()}),ue=(t,n=`test-storage`)=>{let r=T(n);return t.pipe(e.Effect.provide(r.storageObservability),e.Effect.provide(r.uploadObservability),e.Effect.provide(r.flowObservability))},E=e.Context.GenericTag(`TracingService`),D=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(E,{serviceName:n})},O=e=>D({serviceName:`uploadista-${e}-store`}),k=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${n}-${t}`,{attributes:{"storage.type":n,operation:t,...r}})),de=t.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new n.BatchSpanProcessor(new n.ConsoleSpanExporter)})),fe=t.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new n.BatchSpanProcessor(new n.ConsoleSpanExporter)})),pe=t.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new n.BatchSpanProcessor(new n.ConsoleSpanExporter)})),A=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.uploadRequestsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tapError(()=>t.uploadErrorsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tap(()=>t.uploadSuccessTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1)))),j=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.apiCallsTotal.pipe(e.Metric.tagged(`operation`,n))(e.Effect.succeed(1)))),M=(t,n)=>e.Effect.gen(function*(){let r=yield*e.Effect.sync(()=>Date.now()),i=yield*n,a=((yield*e.Effect.sync(()=>Date.now()))-r)/1e3;return yield*t(e.Effect.succeed(a)),i}),N=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.fileSizeHistogram(e.Effect.succeed(n)))),me=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.partSizeHistogram(e.Effect.succeed(n)))),P=(t,n)=>n.pipe(e.Effect.tap(()=>t.activeUploadsGauge(e.Effect.succeed(1))),e.Effect.ensuring(t.activeUploadsGauge(e.Effect.succeed(-1)))),F=(t,n,r)=>e.Effect.gen(function*(){let i=yield*e.Effect.sync(()=>Date.now()),a=yield*r,o=((yield*e.Effect.sync(()=>Date.now()))-i)/1e3,s=o>0?n/o:0;return yield*t.uploadThroughputGauge(e.Effect.succeed(s)),a}),I=(e,t,n,r,i)=>{let a=r.pipe(n=>j(e,t,n),t=>A(e,n,t),t=>M(e.uploadDurationHistogram,t),t=>P(e,t));return i!==void 0&&(a=a.pipe(t=>N(e,i,t),t=>F(e,i,t))),a},L=()=>({flowStartedTotal:e.Metric.counter(`flow_started_total`,{description:`Total number of flows started`}),flowCompletedTotal:e.Metric.counter(`flow_completed_total`,{description:`Total number of flows completed successfully`}),flowFailedTotal:e.Metric.counter(`flow_failed_total`,{description:`Total number of flows that failed`}),flowPausedTotal:e.Metric.counter(`flow_paused_total`,{description:`Total number of flows that were paused`}),flowResumedTotal:e.Metric.counter(`flow_resumed_total`,{description:`Total number of flows that were resumed`}),nodeExecutedTotal:e.Metric.counter(`node_executed_total`,{description:`Total number of nodes executed`}),nodeSuccessTotal:e.Metric.counter(`node_success_total`,{description:`Total number of nodes executed successfully`}),nodeFailedTotal:e.Metric.counter(`node_failed_total`,{description:`Total number of nodes that failed`}),nodeSkippedTotal:e.Metric.counter(`node_skipped_total`,{description:`Total number of nodes skipped (conditional)`}),flowDurationHistogram:e.Metric.histogram(`flow_duration_seconds`,e.MetricBoundaries.exponential({start:.1,factor:2,count:20}),`Duration of complete flow execution in seconds`),nodeDurationHistogram:e.Metric.histogram(`node_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:18}),`Duration of individual node execution in seconds`),flowNodeCountHistogram:e.Metric.histogram(`flow_node_count`,e.MetricBoundaries.linear({start:1,width:5,count:20}),`Number of nodes in a flow`),parallelNodesHistogram:e.Metric.histogram(`parallel_nodes_count`,e.MetricBoundaries.linear({start:1,width:2,count:15}),`Number of nodes executed in parallel`),activeFlowsGauge:e.Metric.gauge(`active_flows`,{description:`Number of currently active flows`}),activeNodesGauge:e.Metric.gauge(`active_nodes`,{description:`Number of currently executing nodes`}),pausedFlowsGauge:e.Metric.gauge(`paused_flows`,{description:`Number of currently paused flows`}),flowLatencySummary:e.Metric.summary({name:`flow_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Flow execution latency percentiles`}),nodeLatencySummary:e.Metric.summary({name:`node_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Node execution latency percentiles`})}),he=L(),R=e=>{if(!e||typeof e!=`object`)return`unknown_flow_error`;let t=`code`in e?e.code:void 0;if(!t)return`unknown_flow_error`;switch(t){case`FLOW_VALIDATION_ERROR`:case`FLOW_INVALID_INPUT`:case`FLOW_INVALID_OUTPUT`:return`flow_validation_error`;case`FLOW_NODE_NOT_FOUND`:case`FLOW_EDGE_INVALID`:return`node_not_found_error`;case`FLOW_NODE_EXECUTION_FAILED`:case`FLOW_NODE_ERROR`:return`node_execution_error`;case`FLOW_TIMEOUT`:return`flow_timeout_error`;case`FLOW_CANCELLED`:case`ABORTED`:return`flow_cancelled_error`;default:return`unknown_flow_error`}},ge=t=>{let n=L(),r=R(t);return e.Effect.gen(function*(){yield*e.Metric.increment(n.flowFailedTotal),yield*e.Effect.logError(`Flow execution failed`).pipe(e.Effect.annotateLogs({"error.category":r,"error.message":String(t)}))})},_e=(t,n,r)=>{let i=L(),a=R(r);return e.Effect.gen(function*(){yield*e.Metric.increment(i.nodeFailedTotal),yield*e.Effect.logError(`Node execution failed`).pipe(e.Effect.annotateLogs({"node.id":t,"node.type":n,"error.category":a,"error.message":String(r)}))})},z=(t=`uploadista-flow-engine`)=>{let n=L();return e.Layer.succeed(u,{serviceName:t,enabled:!0,metrics:{flowStarted:e.Metric.increment(n.flowStartedTotal),flowCompleted:e.Metric.increment(n.flowCompletedTotal),flowFailed:e.Metric.increment(n.flowFailedTotal),nodeExecuted:e.Metric.increment(n.nodeExecutedTotal)}})},ve=z(),ye=m(!1),be=e.Effect.gen(function*(){return(yield*u).metrics}),xe=t=>{let n=L();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.flowDurationHistogram,a),yield*e.Metric.update(n.flowLatencySummary,a),i}).pipe(e.Effect.withSpan(`flow-execution`))},Se=(t,n,r)=>{let i=L();return e.Effect.gen(function*(){let t=Date.now(),n=yield*r,a=(Date.now()-t)/1e3;return yield*e.Metric.update(i.nodeDurationHistogram,a),yield*e.Metric.update(i.nodeLatencySummary,a),n}).pipe(e.Effect.withSpan(`node-${n}`,{attributes:{"node.id":t,"node.type":n}}))},Ce=t=>{let n=L();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeFlowsGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeFlowsGauge,-1))})},we=t=>{let n=L();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeNodesGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeNodesGauge,-1))})},B=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(u,t)},Te=t=>t.pipe(e.Effect.provide(B())),Ee=(t,n)=>r=>r.pipe(e.Effect.withSpan(`flow-${t}`,{attributes:{"flow.operation":t,...n}})),De=t=>e.Effect.annotateCurrentSpan({"flow.id":t.flowId??`unknown`,"flow.name":t.flowName??`unknown`,"flow.job_id":t.jobId??`unknown`,"flow.node_count":t.nodeCount?.toString()??`0`,"flow.storage_id":t.storageId??`unknown`}),Oe=t=>e.Effect.annotateCurrentSpan({"node.id":t.nodeId,"node.type":t.nodeType,"node.name":t.nodeName??`unknown`,"node.flow_id":t.flowId??`unknown`,"node.job_id":t.jobId??`unknown`}),ke=t=>e.Effect.annotateCurrentSpan({"execution.order":t.executionOrder?.join(`,`)??``,"execution.current_index":t.currentIndex?.toString()??`0`,"execution.total_nodes":t.totalNodes?.toString()??`0`,"execution.parallel_count":t.parallelCount?.toString()??`0`});var V=class extends e.Context.Tag(`MetricsService`)(){};const Ae=e.Layer.succeed(V,{recordUpload:(t,n)=>e.Effect.void}),H=`azure`,U=x(H),W=O(H),je=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`statusCode`in e?e.statusCode:void 0;if(!t)return null;switch(t){case`BlobNotFound`:case`ContainerNotFound`:case`InvalidBlobOrBlock`:return`client_error`;case`ContainerAlreadyExists`:case`BlobAlreadyExists`:return`client_error`;case`InvalidBlockId`:case`InvalidBlockList`:case`InvalidBlobType`:return`client_error`;case`RequestBodyTooLarge`:case`InvalidHeaderValue`:return`client_error`;case`AuthenticationFailed`:case`InvalidAuthenticationInfo`:return`authentication_error`;case`AccountIsDisabled`:return`authorization_error`;case`InsufficientAccountPermissions`:return`authorization_error`;case`OperationTimedOut`:case`ServerBusy`:case`InternalError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},Me=o(H,U,je),Ne=e.Layer.mergeAll(W),Pe=(e,t)=>A(U,e,t),Fe=(e,t)=>j(U,e,t),Ie=M,Le=(e,t,n,r)=>I(U,e,t,n,r),Re=(e,t)=>n=>k(e,H,t)(n),ze=v.bind(null,H),Be=_.bind(null,H),Ve=y.bind(null,H),He=g,{uploadRequestsTotal:Ue,uploadPartsTotal:We,uploadSuccessTotal:Ge,uploadErrorsTotal:Ke,apiCallsTotal:qe,uploadDurationHistogram:Je,partUploadDurationHistogram:Ye,fileSizeHistogram:Xe,partSizeHistogram:Ze,activeUploadsGauge:Qe,uploadThroughputGauge:$e,uploadLatencySummary:et}=U,G=`filesystem`,K=x(G),q=O(G),tt=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`ENOENT`:case`ENOTDIR`:return`client_error`;case`EEXIST`:return`client_error`;case`EISDIR`:return`client_error`;case`EINVAL`:case`ENAMETOOLONG`:return`client_error`;case`EACCES`:case`EPERM`:return`authorization_error`;case`ENOSPC`:case`EDQUOT`:return`server_error`;case`EIO`:case`EROFS`:case`EMFILE`:case`ENFILE`:return`server_error`;case`EBUSY`:return`throttling_error`;default:return null}},nt=o(G,K,tt),rt=e.Layer.mergeAll(q),it=(e,t)=>A(K,e,t),at=(e,t)=>j(K,e,t),ot=M,st=(e,t,n,r)=>I(K,e,t,n,r),ct=(e,t)=>n=>k(e,G,t)(n),lt=v.bind(null,G),ut=_.bind(null,G),dt=y.bind(null,G),ft=g,{uploadRequestsTotal:pt,uploadPartsTotal:mt,uploadSuccessTotal:ht,uploadErrorsTotal:gt,apiCallsTotal:_t,uploadDurationHistogram:vt,partUploadDurationHistogram:yt,fileSizeHistogram:bt,partSizeHistogram:xt,activeUploadsGauge:St,uploadThroughputGauge:Ct,uploadLatencySummary:wt}=K,Tt=`gcs`,J=x(`gcs`),Y=O(`gcs`),Et=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`status`in e?e.status:void 0;if(!t)return null;switch(t){case`NoSuchBucket`:case`NoSuchKey`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyOwnedByYou`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidArgument`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`MalformedPolicy`:return`client_error`;case`Unauthorized`:case`AuthenticationRequired`:return`authentication_error`;case`Forbidden`:case`AccessDenied`:return`authorization_error`;case`TooManyRequests`:case`RateLimitExceeded`:return`throttling_error`;case`InternalError`:case`ServiceUnavailable`:case`BackendError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},Dt=o(`gcs`,J,Et),Ot=e.Layer.mergeAll(Y),kt=(e,t)=>A(J,e,t),At=(e,t)=>j(J,e,t),jt=M,Mt=(e,t,n,r)=>I(J,e,t,n,r),Nt=(e,t)=>n=>k(e,`gcs`,t)(n),Pt=v.bind(null,`gcs`),Ft=_.bind(null,`gcs`),It=y.bind(null,`gcs`),Lt=g,{uploadRequestsTotal:Rt,uploadPartsTotal:zt,uploadSuccessTotal:Bt,uploadErrorsTotal:Vt,apiCallsTotal:Ht,uploadDurationHistogram:Ut,partUploadDurationHistogram:Wt,fileSizeHistogram:Gt,partSizeHistogram:Kt,activeUploadsGauge:qt,uploadThroughputGauge:Jt,uploadLatencySummary:Yt}=J,Xt=`s3`,X=x(`s3`),Z=O(`s3`),Zt=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`NoSuchKey`:case`NoSuchBucket`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyExists`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`ExpiredToken`:case`TokenRefreshRequired`:return`authentication_error`;case`RequestTimeTooSkewed`:case`SlowDown`:return`throttling_error`;default:return null}},Qt=o(`s3`,X,Zt),$t=e.Layer.mergeAll(Z),en=(e,t)=>A(X,e,t),tn=(e,t)=>j(X,e,t),nn=M,rn=(e,t,n,r)=>I(X,e,t,n,r),an=(e,t)=>n=>k(e,`s3`,t)(n),on=v.bind(null,`s3`),sn=_.bind(null,`s3`),cn=y.bind(null,`s3`),ln=g,{uploadRequestsTotal:un,uploadPartsTotal:dn,uploadSuccessTotal:fn,uploadErrorsTotal:pn,apiCallsTotal:mn,uploadDurationHistogram:hn,partUploadDurationHistogram:gn,fileSizeHistogram:_n,partSizeHistogram:vn,activeUploadsGauge:yn,uploadThroughputGauge:bn,uploadLatencySummary:xn}=X,Q=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`ABORTED`||n===`AbortError`||r.includes(`abort`)?`abort_error`:t===`FILE_TOO_LARGE`||t===`LIMIT_FILE_SIZE`||t===`RequestEntityTooLarge`||r.includes(`too large`)||r.includes(`size limit`)||r.includes(`max size`)?`size_limit_error`:t===`INVALID_FILE`||t===`INVALID_METADATA`||t===`VALIDATION_ERROR`||r.includes(`validation`)||r.includes(`invalid`)?`validation_error`:t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.includes(`network`)||r.includes(`timeout`)?`network_error`:t===`UNAUTHORIZED`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.includes(`authentication`)||r.includes(`unauthorized`)?`authentication_error`:t===`FORBIDDEN`||t===`AccessDenied`||n===`AuthorizationError`||r.includes(`forbidden`)||r.includes(`permission`)?`authorization_error`:t===`FILE_WRITE_ERROR`||t===`STORAGE_ERROR`||r.includes(`storage`)||r.includes(`write error`)?`storage_error`:`unknown_error`},Sn=(t,n,r,i={})=>e.Effect.gen(function*(){let a=Q(r);yield*t.uploadFailedTotal.pipe(e.Metric.tagged(`operation`,n),e.Metric.tagged(`error_category`,a))(e.Effect.succeed(1));let o={operation:n,error_category:a,error_type:typeof r,error_message:r instanceof Error?r.message:String(r),error_code:r&&typeof r==`object`&&`code`in r?String(r.code):void 0,error_name:r&&typeof r==`object`&&`name`in r?String(r.name):void 0,...i};yield*e.Effect.logError(`Upload ${n} failed`).pipe(e.Effect.annotateLogs(o))}),Cn=e=>t=>{if(e){let n=e(t);if(n!==null)return n}return Q(t)},$=()=>({uploadCreatedTotal:e.Metric.counter(`upload_created_total`,{description:`Total number of uploads created`}),uploadCompletedTotal:e.Metric.counter(`upload_completed_total`,{description:`Total number of uploads completed successfully`}),uploadFailedTotal:e.Metric.counter(`upload_failed_total`,{description:`Total number of uploads that failed`}),chunkUploadedTotal:e.Metric.counter(`chunk_uploaded_total`,{description:`Total number of chunks uploaded`}),uploadFromUrlTotal:e.Metric.counter(`upload_from_url_total`,{description:`Total number of URL-based uploads`}),uploadFromUrlSuccessTotal:e.Metric.counter(`upload_from_url_success_total`,{description:`Total number of successful URL-based uploads`}),uploadFromUrlFailedTotal:e.Metric.counter(`upload_from_url_failed_total`,{description:`Total number of failed URL-based uploads`}),uploadDurationHistogram:e.Metric.histogram(`upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of complete upload operations in seconds`),chunkUploadDurationHistogram:e.Metric.histogram(`chunk_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual chunk uploads in seconds`),uploadFileSizeHistogram:e.Metric.histogram(`upload_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes`),chunkSizeHistogram:e.Metric.histogram(`chunk_size_bytes`,e.MetricBoundaries.linear({start:262144,width:262144,count:20}),`Size of uploaded chunks in bytes`),activeUploadsGauge:e.Metric.gauge(`active_uploads`,{description:`Number of currently active uploads`}),uploadThroughputGauge:e.Metric.gauge(`upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second`}),uploadLatencySummary:e.Metric.summary({name:`upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload operation latency percentiles`}),chunkLatencySummary:e.Metric.summary({name:`chunk_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Chunk upload latency percentiles`})}),wn=$(),Tn=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(l,{serviceName:t,enabled:!0,metrics:{uploadCreated:e.Effect.succeed(n.uploadCreatedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadCompleted:e.Effect.succeed(n.uploadCompletedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadFailed:e.Effect.succeed(n.uploadFailedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),chunkUploaded:e.Effect.succeed(n.chunkUploadedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t)))}})},En=Tn(),Dn=p(!1),On=e.Effect.gen(function*(){return(yield*l).metrics}),kn=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.uploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`upload-operation`))},An=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.chunkUploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`chunk-upload`))},jn=e.Layer.succeed(l,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:()=>Promise.resolve(),uploadCompleted:()=>Promise.resolve(),uploadFailed:()=>Promise.resolve(),chunkUploaded:()=>Promise.resolve()}}),Mn=()=>$(),Nn=()=>{let e=Mn(),t=[`uploadCreatedTotal`,`uploadCompletedTotal`,`uploadFailedTotal`,`chunkUploadedTotal`,`uploadFromUrlTotal`,`uploadFromUrlSuccessTotal`,`uploadFromUrlFailedTotal`,`uploadDurationHistogram`,`chunkUploadDurationHistogram`,`uploadFileSizeHistogram`,`chunkSizeHistogram`,`activeUploadsGauge`,`uploadThroughputGauge`,`uploadLatencySummary`,`chunkLatencySummary`].filter(t=>!(t in e));if(t.length>0)throw Error(`Missing required metrics: ${t.join(`, `)}`);return!0},Pn=(t,n)=>r=>r.pipe(e.Effect.withSpan(`upload-${t}`,{attributes:{"upload.operation":t,...n}})),Fn=t=>e.Effect.annotateCurrentSpan({"upload.id":t.uploadId??`unknown`,"upload.file_name":t.fileName??`unknown`,"upload.file_size":t.fileSize?.toString()??`0`,"upload.storage_id":t.storageId??`unknown`,"upload.mime_type":t.mimeType??`unknown`}),In=t=>e.Effect.annotateCurrentSpan({"chunk.upload_id":t.uploadId,"chunk.size":t.chunkSize.toString(),"chunk.offset":t.offset.toString(),"chunk.total_size":t.totalSize?.toString()??`0`,"chunk.progress":t.totalSize&&t.totalSize>0?(t.offset/t.totalSize*100).toFixed(2):`0`});exports.AzureObservabilityLayer=Ne,exports.AzureTracingLayer=W,exports.FilesystemObservabilityLayer=rt,exports.FilesystemTracingLayer=q,exports.FlowObservability=u,exports.FlowObservabilityDisabled=re,exports.FlowObservabilityLive=ve,exports.GCSObservabilityLayer=Ot,exports.GCSTracingLayer=Y,exports.MetricsService=V,exports.NoOpMetricsServiceLive=Ae,exports.NodeSdkLive=fe,exports.Observability=s,exports.ObservabilityDisabled=ee,exports.S3ObservabilityLayer=$t,exports.S3TracingLayer=Z,exports.StorageObservability=c,exports.StorageObservabilityDisabled=te,exports.TracingService=E,exports.UploadObservability=l,exports.UploadObservabilityDisabled=ne,exports.UploadObservabilityLive=En,exports.UploadObservabilityTest=jn,exports.WebSdkLive=de,exports.WorkersSdkLive=pe,exports.azureActiveUploadsGauge=Qe,exports.azureApiCallsTotal=qe,exports.azureFileSizeHistogram=Xe,exports.azureMetrics=U,exports.azurePartSizeHistogram=Ze,exports.azurePartUploadDurationHistogram=Ye,exports.azureUploadDurationHistogram=Je,exports.azureUploadErrorsTotal=Ke,exports.azureUploadLatencySummary=et,exports.azureUploadPartsTotal=We,exports.azureUploadRequestsTotal=Ue,exports.azureUploadSuccessTotal=Ge,exports.azureUploadThroughputGauge=$e,exports.captureMetrics=ce,exports.classifyFlowError=R,exports.classifyStorageError=r,exports.classifyUploadError=Q,exports.createFlowMetrics=L,exports.createStorageErrorClassifier=i,exports.createStorageErrorTracker=o,exports.createStorageMetrics=x,exports.createStorageTracingLayer=O,exports.createTestFixture=T,exports.createTracingLayer=D,exports.createUploadErrorClassifier=Cn,exports.createUploadGauges=se,exports.createUploadHistograms=oe,exports.createUploadMetrics=ae,exports.createUploadServerMetrics=$,exports.createUploadSummaries=b,exports.filesystemActiveUploadsGauge=St,exports.filesystemApiCallsTotal=_t,exports.filesystemFileSizeHistogram=bt,exports.filesystemMetrics=K,exports.filesystemPartSizeHistogram=xt,exports.filesystemPartUploadDurationHistogram=yt,exports.filesystemUploadDurationHistogram=vt,exports.filesystemUploadErrorsTotal=gt,exports.filesystemUploadLatencySummary=wt,exports.filesystemUploadPartsTotal=mt,exports.filesystemUploadRequestsTotal=pt,exports.filesystemUploadSuccessTotal=ht,exports.filesystemUploadThroughputGauge=Ct,exports.flowMetrics=he,exports.gcsActiveUploadsGauge=qt,exports.gcsApiCallsTotal=Ht,exports.gcsFileSizeHistogram=Gt,exports.gcsMetrics=J,exports.gcsPartSizeHistogram=Kt,exports.gcsPartUploadDurationHistogram=Wt,exports.gcsUploadDurationHistogram=Ut,exports.gcsUploadErrorsTotal=Vt,exports.gcsUploadLatencySummary=Yt,exports.gcsUploadPartsTotal=zt,exports.gcsUploadRequestsTotal=Rt,exports.gcsUploadSuccessTotal=Bt,exports.gcsUploadThroughputGauge=Jt,exports.getFlowMetrics=be,exports.getTestMetrics=Mn,exports.getUploadMetrics=On,exports.isObservabilityEnabled=h,exports.logAzureContext=He,exports.logAzureOperation=ze,exports.logAzureUploadCompletion=Ve,exports.logAzureUploadProgress=Be,exports.logFilesystemContext=ft,exports.logFilesystemOperation=lt,exports.logFilesystemUploadCompletion=dt,exports.logFilesystemUploadProgress=ut,exports.logGCSContext=Lt,exports.logGCSOperation=Pt,exports.logGCSUploadCompletion=It,exports.logGCSUploadProgress=Ft,exports.logS3Context=ln,exports.logS3Operation=on,exports.logS3UploadCompletion=cn,exports.logS3UploadProgress=sn,exports.logStorageOperation=v,exports.logUploadCompletion=y,exports.logUploadProgress=_,exports.logWithContext=g,exports.makeFlowObservabilityLayer=m,exports.makeFlowObservabilityLive=z,exports.makeObservabilityLayer=d,exports.makeStorageObservabilityLayer=f,exports.makeTestFlowObservability=w,exports.makeTestFlowObservabilityUtil=B,exports.makeTestStorageObservability=S,exports.makeTestUploadObservability=C,exports.makeUploadObservabilityLayer=p,exports.makeUploadObservabilityLive=Tn,exports.runWithTestFlowObservability=Te,exports.runWithTestObservability=ue,exports.s3ActiveUploadsGauge=yn,exports.s3ApiCallsTotal=mn,exports.s3FileSizeHistogram=_n,exports.s3Metrics=X,exports.s3PartSizeHistogram=vn,exports.s3PartUploadDurationHistogram=gn,exports.s3UploadDurationHistogram=hn,exports.s3UploadErrorsTotal=pn,exports.s3UploadLatencySummary=xn,exports.s3UploadPartsTotal=dn,exports.s3UploadRequestsTotal=un,exports.s3UploadSuccessTotal=fn,exports.s3UploadThroughputGauge=bn,exports.trackActiveFlow=Ce,exports.trackActiveNode=we,exports.trackAzureError=Me,exports.trackFileSize=N,exports.trackFilesystemError=nt,exports.trackFlowError=ge,exports.trackGCSError=Dt,exports.trackNodeError=_e,exports.trackPartSize=me,exports.trackS3Error=Qt,exports.trackStorageError=a,exports.trackUploadError=Sn,exports.uploadServerMetrics=wn,exports.validateMetricsExist=Nn,exports.whenObservabilityEnabled=ie,exports.withActiveUploadTracking=P,exports.withApiMetrics=j,exports.withAzureApiMetrics=Fe,exports.withAzureOperationMetrics=Le,exports.withAzureSpan=Re,exports.withAzureTimingMetrics=Ie,exports.withAzureUploadMetrics=Pe,exports.withChunkContext=In,exports.withChunkDuration=An,exports.withExecutionContext=ke,exports.withFilesystemApiMetrics=at,exports.withFilesystemOperationMetrics=st,exports.withFilesystemSpan=ct,exports.withFilesystemTimingMetrics=ot,exports.withFilesystemUploadMetrics=it,exports.withFlowContext=De,exports.withFlowDuration=xe,exports.withFlowSpan=Ee,exports.withGCSApiMetrics=At,exports.withGCSOperationMetrics=Mt,exports.withGCSSpan=Nt,exports.withGCSTimingMetrics=jt,exports.withGCSUploadMetrics=kt,exports.withMetricTracking=le,exports.withNodeContext=Oe,exports.withNodeDuration=Se,exports.withS3ApiMetrics=tn,exports.withS3OperationMetrics=rn,exports.withS3Span=an,exports.withS3TimingMetrics=nn,exports.withS3UploadMetrics=en,exports.withStorageOperationMetrics=I,exports.withStorageSpan=k,exports.withThroughputTracking=F,exports.withTimingMetrics=M,exports.withUploadContext=Fn,exports.withUploadDuration=kn,exports.withUploadMetrics=A,exports.withUploadSpan=Pn;
|
|
1
|
+
let e=require(`effect`),t=require(`@opentelemetry/exporter-metrics-otlp-http`),n=require(`@opentelemetry/exporter-trace-otlp-http`),r=require(`@effect/opentelemetry`),i=require(`@opentelemetry/sdk-trace-base`);const a=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.indexOf(`network`)>=0||r.indexOf(`timeout`)>=0?`network_error`:t===`InvalidAccessKeyId`||t===`SignatureDoesNotMatch`||t===`TokenRefreshRequired`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.indexOf(`authentication`)>=0||r.indexOf(`unauthorized`)>=0?`authentication_error`:t===`AccessDenied`||t===`AccountProblem`||t===`Forbidden`||n===`AuthorizationError`||r.indexOf(`forbidden`)>=0||r.indexOf(`permission`)>=0?`authorization_error`:t===`SlowDown`||t===`RequestTimeTooSkewed`||t===`TooManyRequests`||n===`ThrottlingError`||r.indexOf(`throttl`)>=0||r.indexOf(`rate limit`)>=0?`throttling_error`:t===`InternalError`||t===`ServiceUnavailable`||t===`InternalServerError`||n===`ServerError`||r.indexOf(`server error`)>=0||r.indexOf(`service unavailable`)>=0?`server_error`:t===`InvalidRequest`||t===`MalformedXML`||t===`RequestEntityTooLarge`||t===`BadRequest`||n===`ClientError`||r.indexOf(`bad request`)>=0||r.indexOf(`invalid`)>=0?`client_error`:`unknown_error`},o=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return a(e)},s=(t,n,r,i,o={},s=a)=>e.Effect.gen(function*(){let a=s(i);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,r),e.Metric.tagged(`error_category`,a))(e.Effect.succeed(1));let c={storage_type:t,operation:r,error_category:a,error_type:typeof i,error_message:i instanceof Error?i.message:String(i),error_code:i&&typeof i==`object`&&`code`in i?i.code:void 0,error_name:i&&typeof i==`object`&&`name`in i?i.name:void 0,...o};yield*e.Effect.logError(`${t.toUpperCase()} ${r} failed`).pipe(e.Effect.annotateLogs(c))}),c=(e,t,n)=>{let r=o(e,n);return(n,i,a={})=>s(e,t,n,i,a,r)};function l(){let e=typeof process<`u`?process.env.OTEL_EXPORTER_OTLP_HEADERS:void 0;if(!e)return;let t={},n=e.split(`,`);for(let e of n){let[n,...r]=e.split(`=`);n&&r.length>0&&(t[n.trim()]=r.join(`=`).trim())}return Object.keys(t).length>0?t:void 0}function u(e,t){if(t)return t;if(typeof process<`u`){let t=e===`traces`?process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;if(t)return t;if(process.env.OTEL_EXPORTER_OTLP_ENDPOINT)return process.env.OTEL_EXPORTER_OTLP_ENDPOINT}return`http://localhost:4318`}function ee(e={}){let t=u(`traces`,e.endpoint),r=e.headers??l(),i=e.timeoutMillis??5e3;return new n.OTLPTraceExporter({url:`${t}/v1/traces`,headers:r,timeoutMillis:i})}function te(e={}){let n=u(`metrics`,e.endpoint),r=e.headers??l(),i=e.timeoutMillis??5e3;return new t.OTLPMetricExporter({url:`${n}/v1/metrics`,headers:r,timeoutMillis:i})}function d(){if(typeof process<`u`){let e=process.env.UPLOADISTA_OBSERVABILITY_ENABLED;if(e!==void 0)return e.toLowerCase()!==`false`&&e!==`0`}return!0}function f(e=`uploadista`){return typeof process<`u`&&process.env.OTEL_SERVICE_NAME?process.env.OTEL_SERVICE_NAME:e}function ne(){if(typeof process>`u`)return{};let e=process.env.OTEL_RESOURCE_ATTRIBUTES;if(!e)return{};let t={},n=e.split(`,`);for(let e of n){let[n,...r]=e.split(`=`);n&&r.length>0&&(t[n.trim()]=r.join(`=`).trim())}return t}var p=class extends e.Context.Tag(`Observability`)(){},m=class extends e.Context.Tag(`StorageObservability`)(){},h=class extends e.Context.Tag(`UploadObservability`)(){},g=class extends e.Context.Tag(`FlowObservability`)(){};const re=(t,n=!0)=>e.Layer.succeed(p,{serviceName:t,enabled:n}),ie=(t,n,r=!0)=>e.Layer.succeed(m,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),_=(t=!0)=>e.Layer.succeed(h,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),v=(t=!0)=>e.Layer.succeed(g,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),ae=re(`uploadista-disabled`,!1),oe=e=>ie(e,{},!1),se=_(!1),ce=v(!1),y=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(p);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),le=t=>e.Effect.gen(function*(){if(yield*y){let n=yield*t;return e.Option.some(n)}return e.Option.none()}),b=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),x=(e,t,n)=>b(`Upload progress`,{storage_type:e,upload_id:t,uploaded_bytes:n.uploadedBytes,total_bytes:n.totalBytes,progress_percentage:Math.round(n.uploadedBytes/n.totalBytes*100),...n.partNumber&&{part_number:n.partNumber},...n.speed&&{upload_speed_bps:n.speed}}),S=(e,t,n,r)=>b(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),C=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return b(`${e.toUpperCase()} upload completed`,{storage_type:e,upload_id:t,file_size_bytes:n.fileSize,file_size_mb:Math.round(n.fileSize/(1024*1024)*100)/100,total_duration_ms:n.totalDurationMs,total_duration_seconds:Math.round(n.totalDurationMs/1e3*100)/100,throughput_bps:n.throughputBps,throughput_mbps:Math.round(r*100)/100,...n.partsCount&&{parts_count:n.partsCount},...n.averagePartSize&&{average_part_size_bytes:n.averagePartSize,average_part_size_mb:Math.round(n.averagePartSize/(1024*1024)*100)/100},...n.retryCount&&{retry_count:n.retryCount}})},ue=t=>({uploadRequestsTotal:e.Metric.counter(`${t}_upload_requests_total`,{description:`Total number of upload requests for ${t}`}),uploadPartsTotal:e.Metric.counter(`${t}_upload_parts_total`,{description:`Total number of individual parts uploaded for ${t}`}),uploadSuccessTotal:e.Metric.counter(`${t}_upload_success_total`,{description:`Total number of successful uploads for ${t}`}),uploadErrorsTotal:e.Metric.counter(`${t}_upload_errors_total`,{description:`Total number of upload errors for ${t}`}),apiCallsTotal:e.Metric.counter(`${t}_api_calls_total`,{description:`Total number of API calls for ${t}`})}),w=t=>({uploadDurationHistogram:e.Metric.histogram(`${t}_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of upload operations in seconds for ${t}`),partUploadDurationHistogram:e.Metric.histogram(`${t}_part_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual part uploads in seconds for ${t}`),fileSizeHistogram:e.Metric.histogram(`${t}_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes for ${t}`),partSizeHistogram:e.Metric.histogram(`${t}_part_size_bytes`,e.MetricBoundaries.linear({start:5242880,width:1048576,count:20}),`Size of upload parts in bytes for ${t}`)}),T=t=>({activeUploadsGauge:e.Metric.gauge(`${t}_active_uploads`,{description:`Number of currently active uploads for ${t}`}),uploadThroughputGauge:e.Metric.gauge(`${t}_upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second for ${t}`})}),E=t=>({uploadLatencySummary:e.Metric.summary({name:`${t}_upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload latency percentiles for ${t}`})}),D=e=>({...ue(e),...w(e),...T(e),...E(e)}),O=t=>{let n=D(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(m,r)},de=()=>{let t={serviceName:`test-upload-server`,enabled:!0,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}};return e.Layer.succeed(h,t)},fe=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(g,t)},pe=t=>e.Effect.gen(function*(){let n=yield*t;return yield*e.Metric.snapshot,n}),me=t=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let n=yield*t;return yield*e.Metric.snapshot,n}),he=(e=`test-storage`)=>({storageObservability:O(e),uploadObservability:de(),flowObservability:fe()}),ge=(t,n=`test-storage`)=>{let r=he(n);return t.pipe(e.Effect.provide(r.storageObservability),e.Effect.provide(r.uploadObservability),e.Effect.provide(r.flowObservability))},_e=e.Context.GenericTag(`TracingService`),ve=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(_e,{serviceName:n})},k=e=>ve({serviceName:`uploadista-${e}-store`}),A=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${n}-${t}`,{attributes:{"storage.type":n,operation:t,...r}})),ye=r.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new i.BatchSpanProcessor(new i.ConsoleSpanExporter)})),be=r.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new i.BatchSpanProcessor(new i.ConsoleSpanExporter)})),xe=r.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new i.BatchSpanProcessor(new i.ConsoleSpanExporter)}));function j(e={}){return new i.BatchSpanProcessor(ee(),{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:e.scheduledDelayMillis??5e3,exportTimeoutMillis:e.exportTimeoutMillis??5e3})}function M(e={}){let t=e.serviceName??f(`uploadista`),n=ne(),r=e.resourceAttributes??{};return{serviceName:t,...n,...r}}const Se=r.NodeSdk.layer(()=>d()?{resource:M(),spanProcessor:j()}:{resource:M()});function Ce(e={}){return r.NodeSdk.layer(()=>d()?{resource:M(e),spanProcessor:j(e)}:{resource:M(e)})}const we=r.WebSdk.layer(()=>d()?{resource:M(),spanProcessor:j()}:{resource:M()});function Te(e={}){return r.WebSdk.layer(()=>d()?{resource:M(e),spanProcessor:j(e)}:{resource:M(e)})}const Ee=r.WebSdk.layer(()=>{let e={serviceName:f(`uploadista-workers`)};return d()?{resource:M(e),spanProcessor:j(e)}:{resource:M(e)}});function De(e={}){return r.WebSdk.layer(()=>{let t={serviceName:f(`uploadista-workers`),...e};return d()?{resource:M(t),spanProcessor:j(t)}:{resource:M(t)}})}const N=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.uploadRequestsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tapError(()=>t.uploadErrorsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tap(()=>t.uploadSuccessTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1)))),P=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.apiCallsTotal.pipe(e.Metric.tagged(`operation`,n))(e.Effect.succeed(1)))),F=(t,n)=>e.Effect.gen(function*(){let r=yield*e.Effect.sync(()=>Date.now()),i=yield*n,a=((yield*e.Effect.sync(()=>Date.now()))-r)/1e3;return yield*t(e.Effect.succeed(a)),i}),I=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.fileSizeHistogram(e.Effect.succeed(n)))),Oe=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.partSizeHistogram(e.Effect.succeed(n)))),L=(t,n)=>n.pipe(e.Effect.tap(()=>t.activeUploadsGauge(e.Effect.succeed(1))),e.Effect.ensuring(t.activeUploadsGauge(e.Effect.succeed(-1)))),R=(t,n,r)=>e.Effect.gen(function*(){let i=yield*e.Effect.sync(()=>Date.now()),a=yield*r,o=((yield*e.Effect.sync(()=>Date.now()))-i)/1e3,s=o>0?n/o:0;return yield*t.uploadThroughputGauge(e.Effect.succeed(s)),a}),z=(e,t,n,r,i)=>{let a=r.pipe(n=>P(e,t,n),t=>N(e,n,t),t=>F(e.uploadDurationHistogram,t),t=>L(e,t));return i!==void 0&&(a=a.pipe(t=>I(e,i,t),t=>R(e,i,t))),a},B=()=>({flowStartedTotal:e.Metric.counter(`flow_started_total`,{description:`Total number of flows started`}),flowCompletedTotal:e.Metric.counter(`flow_completed_total`,{description:`Total number of flows completed successfully`}),flowFailedTotal:e.Metric.counter(`flow_failed_total`,{description:`Total number of flows that failed`}),flowPausedTotal:e.Metric.counter(`flow_paused_total`,{description:`Total number of flows that were paused`}),flowResumedTotal:e.Metric.counter(`flow_resumed_total`,{description:`Total number of flows that were resumed`}),nodeExecutedTotal:e.Metric.counter(`node_executed_total`,{description:`Total number of nodes executed`}),nodeSuccessTotal:e.Metric.counter(`node_success_total`,{description:`Total number of nodes executed successfully`}),nodeFailedTotal:e.Metric.counter(`node_failed_total`,{description:`Total number of nodes that failed`}),nodeSkippedTotal:e.Metric.counter(`node_skipped_total`,{description:`Total number of nodes skipped (conditional)`}),flowDurationHistogram:e.Metric.histogram(`flow_duration_seconds`,e.MetricBoundaries.exponential({start:.1,factor:2,count:20}),`Duration of complete flow execution in seconds`),nodeDurationHistogram:e.Metric.histogram(`node_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:18}),`Duration of individual node execution in seconds`),flowNodeCountHistogram:e.Metric.histogram(`flow_node_count`,e.MetricBoundaries.linear({start:1,width:5,count:20}),`Number of nodes in a flow`),parallelNodesHistogram:e.Metric.histogram(`parallel_nodes_count`,e.MetricBoundaries.linear({start:1,width:2,count:15}),`Number of nodes executed in parallel`),activeFlowsGauge:e.Metric.gauge(`active_flows`,{description:`Number of currently active flows`}),activeNodesGauge:e.Metric.gauge(`active_nodes`,{description:`Number of currently executing nodes`}),pausedFlowsGauge:e.Metric.gauge(`paused_flows`,{description:`Number of currently paused flows`}),flowLatencySummary:e.Metric.summary({name:`flow_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Flow execution latency percentiles`}),nodeLatencySummary:e.Metric.summary({name:`node_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Node execution latency percentiles`}),circuitBreakerOpenTotal:e.Metric.counter(`circuit_breaker_open_total`,{description:`Total number of times circuit breakers transitioned to open state`}),circuitBreakerCloseTotal:e.Metric.counter(`circuit_breaker_close_total`,{description:`Total number of times circuit breakers transitioned to closed state`}),circuitBreakerRejectedTotal:e.Metric.counter(`circuit_breaker_rejected_total`,{description:`Total number of requests rejected because circuit breaker is open`}),circuitBreakerHalfOpenTotal:e.Metric.counter(`circuit_breaker_half_open_total`,{description:`Total number of times circuit breakers transitioned to half-open state`}),circuitBreakerStateGauge:e.Metric.gauge(`circuit_breaker_state`,{description:`Current circuit breaker state (0=closed, 1=open, 2=half-open)`}),circuitBreakerFailuresGauge:e.Metric.gauge(`circuit_breaker_failures`,{description:`Number of failures currently in the circuit breaker sliding window`})}),ke=B(),V=e=>{if(!e||typeof e!=`object`)return`unknown_flow_error`;let t=`code`in e?e.code:void 0;if(!t)return`unknown_flow_error`;switch(t){case`FLOW_VALIDATION_ERROR`:case`FLOW_INVALID_INPUT`:case`FLOW_INVALID_OUTPUT`:return`flow_validation_error`;case`FLOW_NODE_NOT_FOUND`:case`FLOW_EDGE_INVALID`:return`node_not_found_error`;case`FLOW_NODE_EXECUTION_FAILED`:case`FLOW_NODE_ERROR`:return`node_execution_error`;case`FLOW_TIMEOUT`:return`flow_timeout_error`;case`FLOW_CANCELLED`:case`ABORTED`:return`flow_cancelled_error`;default:return`unknown_flow_error`}},Ae=t=>{let n=B(),r=V(t);return e.Effect.gen(function*(){yield*e.Metric.increment(n.flowFailedTotal),yield*e.Effect.logError(`Flow execution failed`).pipe(e.Effect.annotateLogs({"error.category":r,"error.message":String(t)}))})},je=(t,n,r)=>{let i=B(),a=V(r);return e.Effect.gen(function*(){yield*e.Metric.increment(i.nodeFailedTotal),yield*e.Effect.logError(`Node execution failed`).pipe(e.Effect.annotateLogs({"node.id":t,"node.type":n,"error.category":a,"error.message":String(r)}))})},H=(t=`uploadista-flow-engine`)=>{let n=B();return e.Layer.succeed(g,{serviceName:t,enabled:!0,metrics:{flowStarted:e.Metric.increment(n.flowStartedTotal),flowCompleted:e.Metric.increment(n.flowCompletedTotal),flowFailed:e.Metric.increment(n.flowFailedTotal),nodeExecuted:e.Metric.increment(n.nodeExecutedTotal)}})},Me=H(),Ne=v(!1),Pe=e.Effect.gen(function*(){return(yield*g).metrics}),Fe=t=>{let n=B();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.flowDurationHistogram,a),yield*e.Metric.update(n.flowLatencySummary,a),i}).pipe(e.Effect.withSpan(`flow-execution`))},Ie=(t,n,r)=>{let i=B();return e.Effect.gen(function*(){let t=Date.now(),n=yield*r,a=(Date.now()-t)/1e3;return yield*e.Metric.update(i.nodeDurationHistogram,a),yield*e.Metric.update(i.nodeLatencySummary,a),n}).pipe(e.Effect.withSpan(`node-${n}`,{attributes:{"node.id":t,"node.type":n}}))},Le=t=>{let n=B();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeFlowsGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeFlowsGauge,-1))})},Re=t=>{let n=B();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeNodesGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeNodesGauge,-1))})},U=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(g,t)},ze=t=>t.pipe(e.Effect.provide(U())),Be=(t,n)=>r=>r.pipe(e.Effect.withSpan(`flow-${t}`,{attributes:{"flow.operation":t,...n}})),Ve=t=>e.Effect.annotateCurrentSpan({"flow.id":t.flowId??`unknown`,"flow.name":t.flowName??`unknown`,"flow.job_id":t.jobId??`unknown`,"flow.node_count":t.nodeCount?.toString()??`0`,"flow.storage_id":t.storageId??`unknown`}),He=t=>e.Effect.annotateCurrentSpan({"node.id":t.nodeId,"node.type":t.nodeType,"node.name":t.nodeName??`unknown`,"node.flow_id":t.flowId??`unknown`,"node.job_id":t.jobId??`unknown`}),Ue=t=>e.Effect.annotateCurrentSpan({"execution.order":t.executionOrder?.join(`,`)??``,"execution.current_index":t.currentIndex?.toString()??`0`,"execution.total_nodes":t.totalNodes?.toString()??`0`,"execution.parallel_count":t.parallelCount?.toString()??`0`}),We=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`circuit-breaker-${t}`,{attributes:{"circuit_breaker.node_type":t,"circuit_breaker.state":n,...r}})),Ge=t=>e.Effect.annotateCurrentSpan({"circuit_breaker.node_type":t.nodeType,"circuit_breaker.state":t.state,"circuit_breaker.failure_count":t.failureCount?.toString()??`0`,"circuit_breaker.failure_threshold":t.failureThreshold?.toString()??`5`,"circuit_breaker.reset_timeout":t.resetTimeout?.toString()??`30000`,"circuit_breaker.decision":t.decision??`unknown`}),Ke=t=>e.Effect.annotateCurrentSpan({"circuit_breaker.event":`state_change`,"circuit_breaker.node_type":t.nodeType,"circuit_breaker.previous_state":t.previousState,"circuit_breaker.new_state":t.newState,"circuit_breaker.failure_count":t.failureCount?.toString()??`0`,"circuit_breaker.timestamp":t.timestamp?.toString()??Date.now().toString()});var W=class extends e.Context.Tag(`MetricsService`)(){};const qe=e.Layer.succeed(W,{recordUpload:(t,n)=>e.Effect.void}),G=`azure`,K=D(G),Je=k(G),Ye=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`statusCode`in e?e.statusCode:void 0;if(!t)return null;switch(t){case`BlobNotFound`:case`ContainerNotFound`:case`InvalidBlobOrBlock`:return`client_error`;case`ContainerAlreadyExists`:case`BlobAlreadyExists`:return`client_error`;case`InvalidBlockId`:case`InvalidBlockList`:case`InvalidBlobType`:return`client_error`;case`RequestBodyTooLarge`:case`InvalidHeaderValue`:return`client_error`;case`AuthenticationFailed`:case`InvalidAuthenticationInfo`:return`authentication_error`;case`AccountIsDisabled`:return`authorization_error`;case`InsufficientAccountPermissions`:return`authorization_error`;case`OperationTimedOut`:case`ServerBusy`:case`InternalError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},Xe=c(G,K,Ye),Ze=e.Layer.mergeAll(Je),Qe=(e,t)=>N(K,e,t),$e=(e,t)=>P(K,e,t),et=F,tt=(e,t,n,r)=>z(K,e,t,n,r),nt=(e,t)=>n=>A(e,G,t)(n),rt=S.bind(null,G),it=x.bind(null,G),at=C.bind(null,G),ot=b,{uploadRequestsTotal:st,uploadPartsTotal:ct,uploadSuccessTotal:lt,uploadErrorsTotal:ut,apiCallsTotal:dt,uploadDurationHistogram:ft,partUploadDurationHistogram:pt,fileSizeHistogram:mt,partSizeHistogram:ht,activeUploadsGauge:gt,uploadThroughputGauge:_t,uploadLatencySummary:vt}=K,q=`filesystem`,J=D(q),yt=k(q),bt=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`ENOENT`:case`ENOTDIR`:return`client_error`;case`EEXIST`:return`client_error`;case`EISDIR`:return`client_error`;case`EINVAL`:case`ENAMETOOLONG`:return`client_error`;case`EACCES`:case`EPERM`:return`authorization_error`;case`ENOSPC`:case`EDQUOT`:return`server_error`;case`EIO`:case`EROFS`:case`EMFILE`:case`ENFILE`:return`server_error`;case`EBUSY`:return`throttling_error`;default:return null}},xt=c(q,J,bt),St=e.Layer.mergeAll(yt),Ct=(e,t)=>N(J,e,t),wt=(e,t)=>P(J,e,t),Tt=F,Et=(e,t,n,r)=>z(J,e,t,n,r),Dt=(e,t)=>n=>A(e,q,t)(n),Ot=S.bind(null,q),kt=x.bind(null,q),At=C.bind(null,q),jt=b,{uploadRequestsTotal:Mt,uploadPartsTotal:Nt,uploadSuccessTotal:Pt,uploadErrorsTotal:Ft,apiCallsTotal:It,uploadDurationHistogram:Lt,partUploadDurationHistogram:Rt,fileSizeHistogram:zt,partSizeHistogram:Bt,activeUploadsGauge:Vt,uploadThroughputGauge:Ht,uploadLatencySummary:Ut}=J,Wt=`gcs`,Y=D(`gcs`),Gt=k(`gcs`),Kt=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`status`in e?e.status:void 0;if(!t)return null;switch(t){case`NoSuchBucket`:case`NoSuchKey`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyOwnedByYou`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidArgument`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`MalformedPolicy`:return`client_error`;case`Unauthorized`:case`AuthenticationRequired`:return`authentication_error`;case`Forbidden`:case`AccessDenied`:return`authorization_error`;case`TooManyRequests`:case`RateLimitExceeded`:return`throttling_error`;case`InternalError`:case`ServiceUnavailable`:case`BackendError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},qt=c(`gcs`,Y,Kt),Jt=e.Layer.mergeAll(Gt),Yt=(e,t)=>N(Y,e,t),Xt=(e,t)=>P(Y,e,t),Zt=F,Qt=(e,t,n,r)=>z(Y,e,t,n,r),$t=(e,t)=>n=>A(e,`gcs`,t)(n),en=S.bind(null,`gcs`),tn=x.bind(null,`gcs`),nn=C.bind(null,`gcs`),rn=b,{uploadRequestsTotal:an,uploadPartsTotal:on,uploadSuccessTotal:sn,uploadErrorsTotal:cn,apiCallsTotal:ln,uploadDurationHistogram:un,partUploadDurationHistogram:dn,fileSizeHistogram:fn,partSizeHistogram:pn,activeUploadsGauge:mn,uploadThroughputGauge:hn,uploadLatencySummary:gn}=Y,_n=`s3`,X=D(`s3`),Z=k(`s3`),vn=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`NoSuchKey`:case`NoSuchBucket`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyExists`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`ExpiredToken`:case`TokenRefreshRequired`:return`authentication_error`;case`RequestTimeTooSkewed`:case`SlowDown`:return`throttling_error`;default:return null}},yn=c(`s3`,X,vn),bn=e.Layer.mergeAll(Z),xn=(e,t)=>N(X,e,t),Sn=(e,t)=>P(X,e,t),Cn=F,wn=(e,t,n,r)=>z(X,e,t,n,r),Tn=(e,t)=>n=>A(e,`s3`,t)(n),En=S.bind(null,`s3`),Dn=x.bind(null,`s3`),On=C.bind(null,`s3`),kn=b,{uploadRequestsTotal:An,uploadPartsTotal:jn,uploadSuccessTotal:Mn,uploadErrorsTotal:Nn,apiCallsTotal:Pn,uploadDurationHistogram:Fn,partUploadDurationHistogram:In,fileSizeHistogram:Ln,partSizeHistogram:Rn,activeUploadsGauge:zn,uploadThroughputGauge:Bn,uploadLatencySummary:Vn}=X,Q=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`ABORTED`||n===`AbortError`||r.includes(`abort`)?`abort_error`:t===`FILE_TOO_LARGE`||t===`LIMIT_FILE_SIZE`||t===`RequestEntityTooLarge`||r.includes(`too large`)||r.includes(`size limit`)||r.includes(`max size`)?`size_limit_error`:t===`INVALID_FILE`||t===`INVALID_METADATA`||t===`VALIDATION_ERROR`||r.includes(`validation`)||r.includes(`invalid`)?`validation_error`:t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.includes(`network`)||r.includes(`timeout`)?`network_error`:t===`UNAUTHORIZED`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.includes(`authentication`)||r.includes(`unauthorized`)?`authentication_error`:t===`FORBIDDEN`||t===`AccessDenied`||n===`AuthorizationError`||r.includes(`forbidden`)||r.includes(`permission`)?`authorization_error`:t===`FILE_WRITE_ERROR`||t===`STORAGE_ERROR`||r.includes(`storage`)||r.includes(`write error`)?`storage_error`:`unknown_error`},Hn=(t,n,r,i={})=>e.Effect.gen(function*(){let a=Q(r);yield*t.uploadFailedTotal.pipe(e.Metric.tagged(`operation`,n),e.Metric.tagged(`error_category`,a))(e.Effect.succeed(1));let o={operation:n,error_category:a,error_type:typeof r,error_message:r instanceof Error?r.message:String(r),error_code:r&&typeof r==`object`&&`code`in r?String(r.code):void 0,error_name:r&&typeof r==`object`&&`name`in r?String(r.name):void 0,...i};yield*e.Effect.logError(`Upload ${n} failed`).pipe(e.Effect.annotateLogs(o))}),Un=e=>t=>{if(e){let n=e(t);if(n!==null)return n}return Q(t)},$=()=>({uploadCreatedTotal:e.Metric.counter(`upload_created_total`,{description:`Total number of uploads created`}),uploadCompletedTotal:e.Metric.counter(`upload_completed_total`,{description:`Total number of uploads completed successfully`}),uploadFailedTotal:e.Metric.counter(`upload_failed_total`,{description:`Total number of uploads that failed`}),chunkUploadedTotal:e.Metric.counter(`chunk_uploaded_total`,{description:`Total number of chunks uploaded`}),uploadFromUrlTotal:e.Metric.counter(`upload_from_url_total`,{description:`Total number of URL-based uploads`}),uploadFromUrlSuccessTotal:e.Metric.counter(`upload_from_url_success_total`,{description:`Total number of successful URL-based uploads`}),uploadFromUrlFailedTotal:e.Metric.counter(`upload_from_url_failed_total`,{description:`Total number of failed URL-based uploads`}),uploadDurationHistogram:e.Metric.histogram(`upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of complete upload operations in seconds`),chunkUploadDurationHistogram:e.Metric.histogram(`chunk_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual chunk uploads in seconds`),uploadFileSizeHistogram:e.Metric.histogram(`upload_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes`),chunkSizeHistogram:e.Metric.histogram(`chunk_size_bytes`,e.MetricBoundaries.linear({start:262144,width:262144,count:20}),`Size of uploaded chunks in bytes`),activeUploadsGauge:e.Metric.gauge(`active_uploads`,{description:`Number of currently active uploads`}),uploadThroughputGauge:e.Metric.gauge(`upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second`}),uploadLatencySummary:e.Metric.summary({name:`upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload operation latency percentiles`}),chunkLatencySummary:e.Metric.summary({name:`chunk_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Chunk upload latency percentiles`})}),Wn=$(),Gn=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(h,{serviceName:t,enabled:!0,metrics:{uploadCreated:e.Effect.succeed(n.uploadCreatedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadCompleted:e.Effect.succeed(n.uploadCompletedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadFailed:e.Effect.succeed(n.uploadFailedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),chunkUploaded:e.Effect.succeed(n.chunkUploadedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t)))}})},Kn=Gn(),qn=_(!1),Jn=e.Effect.gen(function*(){return(yield*h).metrics}),Yn=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.uploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`upload-operation`))},Xn=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.chunkUploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`chunk-upload`))},Zn=e.Layer.succeed(h,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:()=>Promise.resolve(),uploadCompleted:()=>Promise.resolve(),uploadFailed:()=>Promise.resolve(),chunkUploaded:()=>Promise.resolve()}}),Qn=()=>$(),$n=()=>{let e=Qn(),t=[`uploadCreatedTotal`,`uploadCompletedTotal`,`uploadFailedTotal`,`chunkUploadedTotal`,`uploadFromUrlTotal`,`uploadFromUrlSuccessTotal`,`uploadFromUrlFailedTotal`,`uploadDurationHistogram`,`chunkUploadDurationHistogram`,`uploadFileSizeHistogram`,`chunkSizeHistogram`,`activeUploadsGauge`,`uploadThroughputGauge`,`uploadLatencySummary`,`chunkLatencySummary`].filter(t=>!(t in e));if(t.length>0)throw Error(`Missing required metrics: ${t.join(`, `)}`);return!0},er=(t,n)=>r=>r.pipe(e.Effect.withSpan(`upload-${t}`,{attributes:{"upload.operation":t,...n}})),tr=t=>e.Effect.annotateCurrentSpan({"upload.id":t.uploadId??`unknown`,"upload.file_name":t.fileName??`unknown`,"upload.file_size":t.fileSize?.toString()??`0`,"upload.storage_id":t.storageId??`unknown`,"upload.mime_type":t.mimeType??`unknown`}),nr=t=>e.Effect.annotateCurrentSpan({"chunk.upload_id":t.uploadId,"chunk.size":t.chunkSize.toString(),"chunk.offset":t.offset.toString(),"chunk.total_size":t.totalSize?.toString()??`0`,"chunk.progress":t.totalSize&&t.totalSize>0?(t.offset/t.totalSize*100).toFixed(2):`0`});exports.AzureObservabilityLayer=Ze,exports.AzureTracingLayer=Je,exports.FilesystemObservabilityLayer=St,exports.FilesystemTracingLayer=yt,exports.FlowObservability=g,exports.FlowObservabilityDisabled=ce,exports.FlowObservabilityLive=Me,exports.GCSObservabilityLayer=Jt,exports.GCSTracingLayer=Gt,exports.MetricsService=W,exports.NoOpMetricsServiceLive=qe,exports.NodeSdkLive=be,exports.Observability=p,exports.ObservabilityDisabled=ae,exports.OtlpNodeSdkLive=Se,exports.OtlpWebSdkLive=we,exports.OtlpWorkersSdkLive=Ee,exports.S3ObservabilityLayer=bn,exports.S3TracingLayer=Z,exports.StorageObservability=m,exports.StorageObservabilityDisabled=oe,exports.TracingService=_e,exports.UploadObservability=h,exports.UploadObservabilityDisabled=se,exports.UploadObservabilityLive=Kn,exports.UploadObservabilityTest=Zn,exports.WebSdkLive=ye,exports.WorkersSdkLive=xe,exports.annotateCircuitBreakerStateChange=Ke,exports.azureActiveUploadsGauge=gt,exports.azureApiCallsTotal=dt,exports.azureFileSizeHistogram=mt,exports.azureMetrics=K,exports.azurePartSizeHistogram=ht,exports.azurePartUploadDurationHistogram=pt,exports.azureUploadDurationHistogram=ft,exports.azureUploadErrorsTotal=ut,exports.azureUploadLatencySummary=vt,exports.azureUploadPartsTotal=ct,exports.azureUploadRequestsTotal=st,exports.azureUploadSuccessTotal=lt,exports.azureUploadThroughputGauge=_t,exports.captureMetrics=pe,exports.classifyFlowError=V,exports.classifyStorageError=a,exports.classifyUploadError=Q,exports.createFlowMetrics=B,exports.createOtlpMetricExporter=te,exports.createOtlpNodeSdkLayer=Ce,exports.createOtlpTraceExporter=ee,exports.createOtlpWebSdkLayer=Te,exports.createOtlpWorkersSdkLayer=De,exports.createStorageErrorClassifier=o,exports.createStorageErrorTracker=c,exports.createStorageMetrics=D,exports.createStorageTracingLayer=k,exports.createTestFixture=he,exports.createTracingLayer=ve,exports.createUploadErrorClassifier=Un,exports.createUploadGauges=T,exports.createUploadHistograms=w,exports.createUploadMetrics=ue,exports.createUploadServerMetrics=$,exports.createUploadSummaries=E,exports.filesystemActiveUploadsGauge=Vt,exports.filesystemApiCallsTotal=It,exports.filesystemFileSizeHistogram=zt,exports.filesystemMetrics=J,exports.filesystemPartSizeHistogram=Bt,exports.filesystemPartUploadDurationHistogram=Rt,exports.filesystemUploadDurationHistogram=Lt,exports.filesystemUploadErrorsTotal=Ft,exports.filesystemUploadLatencySummary=Ut,exports.filesystemUploadPartsTotal=Nt,exports.filesystemUploadRequestsTotal=Mt,exports.filesystemUploadSuccessTotal=Pt,exports.filesystemUploadThroughputGauge=Ht,exports.flowMetrics=ke,exports.gcsActiveUploadsGauge=mn,exports.gcsApiCallsTotal=ln,exports.gcsFileSizeHistogram=fn,exports.gcsMetrics=Y,exports.gcsPartSizeHistogram=pn,exports.gcsPartUploadDurationHistogram=dn,exports.gcsUploadDurationHistogram=un,exports.gcsUploadErrorsTotal=cn,exports.gcsUploadLatencySummary=gn,exports.gcsUploadPartsTotal=on,exports.gcsUploadRequestsTotal=an,exports.gcsUploadSuccessTotal=sn,exports.gcsUploadThroughputGauge=hn,exports.getFlowMetrics=Pe,exports.getOtlpEndpoint=u,exports.getServiceName=f,exports.getTestMetrics=Qn,exports.getUploadMetrics=Jn,exports.isObservabilityEnabled=y,exports.isOtlpExportEnabled=d,exports.logAzureContext=ot,exports.logAzureOperation=rt,exports.logAzureUploadCompletion=at,exports.logAzureUploadProgress=it,exports.logFilesystemContext=jt,exports.logFilesystemOperation=Ot,exports.logFilesystemUploadCompletion=At,exports.logFilesystemUploadProgress=kt,exports.logGCSContext=rn,exports.logGCSOperation=en,exports.logGCSUploadCompletion=nn,exports.logGCSUploadProgress=tn,exports.logS3Context=kn,exports.logS3Operation=En,exports.logS3UploadCompletion=On,exports.logS3UploadProgress=Dn,exports.logStorageOperation=S,exports.logUploadCompletion=C,exports.logUploadProgress=x,exports.logWithContext=b,exports.makeFlowObservabilityLayer=v,exports.makeFlowObservabilityLive=H,exports.makeObservabilityLayer=re,exports.makeStorageObservabilityLayer=ie,exports.makeTestFlowObservability=fe,exports.makeTestFlowObservabilityUtil=U,exports.makeTestStorageObservability=O,exports.makeTestUploadObservability=de,exports.makeUploadObservabilityLayer=_,exports.makeUploadObservabilityLive=Gn,exports.parseOtlpHeaders=l,exports.parseResourceAttributes=ne,exports.runWithTestFlowObservability=ze,exports.runWithTestObservability=ge,exports.s3ActiveUploadsGauge=zn,exports.s3ApiCallsTotal=Pn,exports.s3FileSizeHistogram=Ln,exports.s3Metrics=X,exports.s3PartSizeHistogram=Rn,exports.s3PartUploadDurationHistogram=In,exports.s3UploadDurationHistogram=Fn,exports.s3UploadErrorsTotal=Nn,exports.s3UploadLatencySummary=Vn,exports.s3UploadPartsTotal=jn,exports.s3UploadRequestsTotal=An,exports.s3UploadSuccessTotal=Mn,exports.s3UploadThroughputGauge=Bn,exports.trackActiveFlow=Le,exports.trackActiveNode=Re,exports.trackAzureError=Xe,exports.trackFileSize=I,exports.trackFilesystemError=xt,exports.trackFlowError=Ae,exports.trackGCSError=qt,exports.trackNodeError=je,exports.trackPartSize=Oe,exports.trackS3Error=yn,exports.trackStorageError=s,exports.trackUploadError=Hn,exports.uploadServerMetrics=Wn,exports.validateMetricsExist=$n,exports.whenObservabilityEnabled=le,exports.withActiveUploadTracking=L,exports.withApiMetrics=P,exports.withAzureApiMetrics=$e,exports.withAzureOperationMetrics=tt,exports.withAzureSpan=nt,exports.withAzureTimingMetrics=et,exports.withAzureUploadMetrics=Qe,exports.withChunkContext=nr,exports.withChunkDuration=Xn,exports.withCircuitBreakerContext=Ge,exports.withCircuitBreakerSpan=We,exports.withExecutionContext=Ue,exports.withFilesystemApiMetrics=wt,exports.withFilesystemOperationMetrics=Et,exports.withFilesystemSpan=Dt,exports.withFilesystemTimingMetrics=Tt,exports.withFilesystemUploadMetrics=Ct,exports.withFlowContext=Ve,exports.withFlowDuration=Fe,exports.withFlowSpan=Be,exports.withGCSApiMetrics=Xt,exports.withGCSOperationMetrics=Qt,exports.withGCSSpan=$t,exports.withGCSTimingMetrics=Zt,exports.withGCSUploadMetrics=Yt,exports.withMetricTracking=me,exports.withNodeContext=He,exports.withNodeDuration=Ie,exports.withS3ApiMetrics=Sn,exports.withS3OperationMetrics=wn,exports.withS3Span=Tn,exports.withS3TimingMetrics=Cn,exports.withS3UploadMetrics=xn,exports.withStorageOperationMetrics=z,exports.withStorageSpan=A,exports.withThroughputTracking=R,exports.withTimingMetrics=F,exports.withUploadContext=tr,exports.withUploadDuration=Yn,exports.withUploadMetrics=N,exports.withUploadSpan=er;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Context, Effect, Layer, Metric, Option } from "effect";
|
|
2
2
|
import * as effect_MetricKeyType7 from "effect/MetricKeyType";
|
|
3
3
|
import * as effect_MetricState7 from "effect/MetricState";
|
|
4
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
5
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
4
6
|
import * as effect_Tracer0 from "effect/Tracer";
|
|
5
7
|
import * as _effect_opentelemetry_Resource0 from "@effect/opentelemetry/Resource";
|
|
6
8
|
import * as effect_Metric49 from "effect/Metric";
|
|
@@ -49,6 +51,110 @@ declare const createStorageErrorClassifier: (storageType: string, customErrorMap
|
|
|
49
51
|
declare const trackStorageError: (storageType: string, metrics: StorageMetrics, operation: string, error: unknown, context?: Record<string, unknown>, errorClassifier?: (error: unknown) => StorageErrorCategory) => Effect.Effect<void, never, never>;
|
|
50
52
|
declare const createStorageErrorTracker: (storageType: string, metrics: StorageMetrics, customErrorClassifier?: (error: unknown) => StorageErrorCategory | null) => (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
51
53
|
//#endregion
|
|
54
|
+
//#region src/core/exporters.d.ts
|
|
55
|
+
/**
|
|
56
|
+
* Configuration options for OTLP exporters.
|
|
57
|
+
*/
|
|
58
|
+
interface OtlpExporterConfig {
|
|
59
|
+
/** Base endpoint URL. Defaults to OTEL_EXPORTER_OTLP_ENDPOINT or http://localhost:4318 */
|
|
60
|
+
endpoint?: string;
|
|
61
|
+
/** Headers to include in requests (for authentication). Defaults to OTEL_EXPORTER_OTLP_HEADERS */
|
|
62
|
+
headers?: Record<string, string>;
|
|
63
|
+
/** Request timeout in milliseconds. Defaults to 5000 */
|
|
64
|
+
timeoutMillis?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parses the OTEL_EXPORTER_OTLP_HEADERS environment variable.
|
|
68
|
+
*
|
|
69
|
+
* Format: key=value,key2=value2
|
|
70
|
+
* Example: Authorization=Basic abc123,X-Custom-Header=value
|
|
71
|
+
*
|
|
72
|
+
* @returns Parsed headers as a Record, or undefined if not set
|
|
73
|
+
*/
|
|
74
|
+
declare function parseOtlpHeaders(): Record<string, string> | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Gets the OTLP endpoint from environment variables with fallback.
|
|
77
|
+
*
|
|
78
|
+
* Checks in order:
|
|
79
|
+
* 1. Provided endpoint parameter
|
|
80
|
+
* 2. Signal-specific endpoint (OTEL_EXPORTER_OTLP_TRACES_ENDPOINT or OTEL_EXPORTER_OTLP_METRICS_ENDPOINT)
|
|
81
|
+
* 3. Base endpoint (OTEL_EXPORTER_OTLP_ENDPOINT)
|
|
82
|
+
* 4. Default: http://localhost:4318
|
|
83
|
+
*
|
|
84
|
+
* @param signal - The signal type ('traces' or 'metrics')
|
|
85
|
+
* @param configEndpoint - Optional endpoint from config
|
|
86
|
+
* @returns The resolved endpoint URL
|
|
87
|
+
*/
|
|
88
|
+
declare function getOtlpEndpoint(signal: "traces" | "metrics", configEndpoint?: string): string;
|
|
89
|
+
/**
|
|
90
|
+
* Creates an OTLP trace exporter configured from environment variables.
|
|
91
|
+
*
|
|
92
|
+
* The exporter sends traces to an OTLP-compatible endpoint using HTTP/protobuf.
|
|
93
|
+
*
|
|
94
|
+
* @param config - Optional configuration overrides
|
|
95
|
+
* @returns Configured OTLPTraceExporter instance
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* // Use environment variables
|
|
100
|
+
* const exporter = createOtlpTraceExporter();
|
|
101
|
+
*
|
|
102
|
+
* // Override endpoint
|
|
103
|
+
* const exporter = createOtlpTraceExporter({
|
|
104
|
+
* endpoint: 'https://otlp.grafana.net'
|
|
105
|
+
* });
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
declare function createOtlpTraceExporter(config?: OtlpExporterConfig): OTLPTraceExporter;
|
|
109
|
+
/**
|
|
110
|
+
* Creates an OTLP metric exporter configured from environment variables.
|
|
111
|
+
*
|
|
112
|
+
* The exporter sends metrics to an OTLP-compatible endpoint using HTTP/protobuf.
|
|
113
|
+
*
|
|
114
|
+
* @param config - Optional configuration overrides
|
|
115
|
+
* @returns Configured OTLPMetricExporter instance
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* // Use environment variables
|
|
120
|
+
* const exporter = createOtlpMetricExporter();
|
|
121
|
+
*
|
|
122
|
+
* // Override endpoint
|
|
123
|
+
* const exporter = createOtlpMetricExporter({
|
|
124
|
+
* endpoint: 'https://otlp.grafana.net'
|
|
125
|
+
* });
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
declare function createOtlpMetricExporter(config?: OtlpExporterConfig): OTLPMetricExporter;
|
|
129
|
+
/**
|
|
130
|
+
* Checks if observability is enabled via environment variable.
|
|
131
|
+
*
|
|
132
|
+
* Reads UPLOADISTA_OBSERVABILITY_ENABLED environment variable.
|
|
133
|
+
* Defaults to true if not set.
|
|
134
|
+
*
|
|
135
|
+
* @returns true if observability should be enabled
|
|
136
|
+
*/
|
|
137
|
+
declare function isOtlpExportEnabled(): boolean;
|
|
138
|
+
/**
|
|
139
|
+
* Gets the service name from environment variables.
|
|
140
|
+
*
|
|
141
|
+
* Reads OTEL_SERVICE_NAME environment variable.
|
|
142
|
+
* Defaults to "uploadista" if not set.
|
|
143
|
+
*
|
|
144
|
+
* @param defaultName - Default service name if not configured
|
|
145
|
+
* @returns The service name to use
|
|
146
|
+
*/
|
|
147
|
+
declare function getServiceName(defaultName?: string): string;
|
|
148
|
+
/**
|
|
149
|
+
* Parses resource attributes from OTEL_RESOURCE_ATTRIBUTES environment variable.
|
|
150
|
+
*
|
|
151
|
+
* Format: key=value,key2=value2
|
|
152
|
+
* Example: tenant.id=abc123,deployment.environment=production
|
|
153
|
+
*
|
|
154
|
+
* @returns Parsed attributes as a Record, or empty object if not set
|
|
155
|
+
*/
|
|
156
|
+
declare function parseResourceAttributes(): Record<string, string>;
|
|
157
|
+
//#endregion
|
|
52
158
|
//#region src/core/layers.d.ts
|
|
53
159
|
/**
|
|
54
160
|
* Core observability service providing tracing, metrics, and logging capabilities
|
|
@@ -225,6 +331,120 @@ declare const withStorageSpan: <A, E, R>(operation: string, storageType: string,
|
|
|
225
331
|
declare const WebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
226
332
|
declare const NodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
227
333
|
declare const WorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
334
|
+
/**
|
|
335
|
+
* Configuration options for OTLP SDK layers.
|
|
336
|
+
*/
|
|
337
|
+
interface OtlpSdkConfig {
|
|
338
|
+
/** Service name for traces. Defaults to OTEL_SERVICE_NAME or "uploadista" */
|
|
339
|
+
serviceName?: string;
|
|
340
|
+
/** Additional resource attributes to include in all spans */
|
|
341
|
+
resourceAttributes?: Record<string, string>;
|
|
342
|
+
/** Maximum queue size for batch processor. Defaults to 512 */
|
|
343
|
+
maxQueueSize?: number;
|
|
344
|
+
/** Maximum export batch size. Defaults to 512 */
|
|
345
|
+
maxExportBatchSize?: number;
|
|
346
|
+
/** Schedule delay in milliseconds. Defaults to 5000 */
|
|
347
|
+
scheduledDelayMillis?: number;
|
|
348
|
+
/** Export timeout in milliseconds. Defaults to 5000 */
|
|
349
|
+
exportTimeoutMillis?: number;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Node.js OTLP SDK Layer for production use.
|
|
353
|
+
*
|
|
354
|
+
* Exports traces to an OTLP-compatible endpoint configured via environment variables:
|
|
355
|
+
* - OTEL_EXPORTER_OTLP_ENDPOINT: Base endpoint (default: http://localhost:4318)
|
|
356
|
+
* - OTEL_EXPORTER_OTLP_HEADERS: Authentication headers
|
|
357
|
+
* - OTEL_SERVICE_NAME: Service name (default: uploadista)
|
|
358
|
+
* - OTEL_RESOURCE_ATTRIBUTES: Additional resource attributes
|
|
359
|
+
* - UPLOADISTA_OBSERVABILITY_ENABLED: Set to "false" to disable (default: true)
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```typescript
|
|
363
|
+
* import { OtlpNodeSdkLive } from "@uploadista/observability";
|
|
364
|
+
* import { Effect } from "effect";
|
|
365
|
+
*
|
|
366
|
+
* // With default environment configuration
|
|
367
|
+
* const program = myEffect.pipe(Effect.provide(OtlpNodeSdkLive));
|
|
368
|
+
*
|
|
369
|
+
* // Run with:
|
|
370
|
+
* // OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
|
|
371
|
+
* // OTEL_SERVICE_NAME=my-upload-service
|
|
372
|
+
* ```
|
|
373
|
+
*/
|
|
374
|
+
declare const OtlpNodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
375
|
+
/**
|
|
376
|
+
* Creates a customized OTLP Node.js SDK Layer.
|
|
377
|
+
*
|
|
378
|
+
* Use this when you need to customize the SDK configuration beyond
|
|
379
|
+
* what environment variables provide.
|
|
380
|
+
*
|
|
381
|
+
* @param config - Custom configuration options
|
|
382
|
+
* @returns Configured Effect Layer
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* ```typescript
|
|
386
|
+
* const customSdk = createOtlpNodeSdkLayer({
|
|
387
|
+
* serviceName: "my-custom-service",
|
|
388
|
+
* resourceAttributes: {
|
|
389
|
+
* "tenant.id": "abc123",
|
|
390
|
+
* "deployment.environment": "production"
|
|
391
|
+
* },
|
|
392
|
+
* maxQueueSize: 1024,
|
|
393
|
+
* });
|
|
394
|
+
*
|
|
395
|
+
* const program = myEffect.pipe(Effect.provide(customSdk));
|
|
396
|
+
* ```
|
|
397
|
+
*/
|
|
398
|
+
declare function createOtlpNodeSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
399
|
+
/**
|
|
400
|
+
* Browser OTLP SDK Layer for production use.
|
|
401
|
+
*
|
|
402
|
+
* Similar to OtlpNodeSdkLive but uses fetch API for browser compatibility.
|
|
403
|
+
* Note: Browser environments may have CORS restrictions.
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* ```typescript
|
|
407
|
+
* import { OtlpWebSdkLive } from "@uploadista/observability";
|
|
408
|
+
*
|
|
409
|
+
* const program = myEffect.pipe(Effect.provide(OtlpWebSdkLive));
|
|
410
|
+
* ```
|
|
411
|
+
*/
|
|
412
|
+
declare const OtlpWebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
413
|
+
/**
|
|
414
|
+
* Creates a customized OTLP Web SDK Layer.
|
|
415
|
+
*
|
|
416
|
+
* @param config - Custom configuration options
|
|
417
|
+
* @returns Configured Effect Layer for browser environments
|
|
418
|
+
*/
|
|
419
|
+
declare function createOtlpWebSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
420
|
+
/**
|
|
421
|
+
* Cloudflare Workers OTLP SDK Layer for production use.
|
|
422
|
+
*
|
|
423
|
+
* Uses the Web SDK under the hood with fetch-based export.
|
|
424
|
+
* Suitable for edge computing environments.
|
|
425
|
+
*
|
|
426
|
+
* @example
|
|
427
|
+
* ```typescript
|
|
428
|
+
* import { OtlpWorkersSdkLive } from "@uploadista/observability";
|
|
429
|
+
*
|
|
430
|
+
* export default {
|
|
431
|
+
* async fetch(request, env) {
|
|
432
|
+
* const program = handleRequest(request).pipe(
|
|
433
|
+
* Effect.provide(OtlpWorkersSdkLive)
|
|
434
|
+
* );
|
|
435
|
+
* return Effect.runPromise(program);
|
|
436
|
+
* }
|
|
437
|
+
* };
|
|
438
|
+
* ```
|
|
439
|
+
*/
|
|
440
|
+
declare const OtlpWorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
441
|
+
/**
|
|
442
|
+
* Creates a customized OTLP Workers SDK Layer.
|
|
443
|
+
*
|
|
444
|
+
* @param config - Custom configuration options
|
|
445
|
+
* @returns Configured Effect Layer for Cloudflare Workers
|
|
446
|
+
*/
|
|
447
|
+
declare function createOtlpWorkersSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
228
448
|
//#endregion
|
|
229
449
|
//#region src/core/utilities.d.ts
|
|
230
450
|
declare const withUploadMetrics: <A, E, R>(metrics: StorageMetrics, uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
@@ -309,6 +529,18 @@ declare const createFlowMetrics: () => {
|
|
|
309
529
|
pausedFlowsGauge: Metric.Metric.Gauge<number>;
|
|
310
530
|
flowLatencySummary: Metric.Metric.Summary<number>;
|
|
311
531
|
nodeLatencySummary: Metric.Metric.Summary<number>;
|
|
532
|
+
/** Total number of times circuit breakers opened */
|
|
533
|
+
circuitBreakerOpenTotal: Metric.Metric.Counter<number>;
|
|
534
|
+
/** Total number of times circuit breakers closed */
|
|
535
|
+
circuitBreakerCloseTotal: Metric.Metric.Counter<number>;
|
|
536
|
+
/** Total number of requests rejected by open circuit breakers */
|
|
537
|
+
circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
|
|
538
|
+
/** Total number of times circuit breakers transitioned to half-open */
|
|
539
|
+
circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
|
|
540
|
+
/** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
|
|
541
|
+
circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
|
|
542
|
+
/** Number of failures in circuit breaker sliding window */
|
|
543
|
+
circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
|
|
312
544
|
};
|
|
313
545
|
/**
|
|
314
546
|
* Type for flow metrics
|
|
@@ -336,6 +568,18 @@ declare const flowMetrics: {
|
|
|
336
568
|
pausedFlowsGauge: Metric.Metric.Gauge<number>;
|
|
337
569
|
flowLatencySummary: Metric.Metric.Summary<number>;
|
|
338
570
|
nodeLatencySummary: Metric.Metric.Summary<number>;
|
|
571
|
+
/** Total number of times circuit breakers opened */
|
|
572
|
+
circuitBreakerOpenTotal: Metric.Metric.Counter<number>;
|
|
573
|
+
/** Total number of times circuit breakers closed */
|
|
574
|
+
circuitBreakerCloseTotal: Metric.Metric.Counter<number>;
|
|
575
|
+
/** Total number of requests rejected by open circuit breakers */
|
|
576
|
+
circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
|
|
577
|
+
/** Total number of times circuit breakers transitioned to half-open */
|
|
578
|
+
circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
|
|
579
|
+
/** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
|
|
580
|
+
circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
|
|
581
|
+
/** Number of failures in circuit breaker sliding window */
|
|
582
|
+
circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
|
|
339
583
|
};
|
|
340
584
|
//#endregion
|
|
341
585
|
//#region src/flow/testing.d.ts
|
|
@@ -382,6 +626,35 @@ declare const withExecutionContext: (context: {
|
|
|
382
626
|
totalNodes?: number;
|
|
383
627
|
parallelCount?: number;
|
|
384
628
|
}) => Effect.Effect<void, never, never>;
|
|
629
|
+
/**
|
|
630
|
+
* Circuit breaker state for tracing
|
|
631
|
+
*/
|
|
632
|
+
type CircuitBreakerTracingState = "closed" | "open" | "half-open";
|
|
633
|
+
/**
|
|
634
|
+
* Wrap an Effect with a circuit breaker evaluation span
|
|
635
|
+
*/
|
|
636
|
+
declare const withCircuitBreakerSpan: <A, E, R>(nodeType: string, state: CircuitBreakerTracingState, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
637
|
+
/**
|
|
638
|
+
* Add circuit breaker context to the current span
|
|
639
|
+
*/
|
|
640
|
+
declare const withCircuitBreakerContext: (context: {
|
|
641
|
+
nodeType: string;
|
|
642
|
+
state: CircuitBreakerTracingState;
|
|
643
|
+
failureCount?: number;
|
|
644
|
+
failureThreshold?: number;
|
|
645
|
+
resetTimeout?: number;
|
|
646
|
+
decision?: "allowed" | "rejected" | "fallback";
|
|
647
|
+
}) => Effect.Effect<void, never, never>;
|
|
648
|
+
/**
|
|
649
|
+
* Add a circuit breaker state change event to the current span
|
|
650
|
+
*/
|
|
651
|
+
declare const annotateCircuitBreakerStateChange: (event: {
|
|
652
|
+
nodeType: string;
|
|
653
|
+
previousState: CircuitBreakerTracingState;
|
|
654
|
+
newState: CircuitBreakerTracingState;
|
|
655
|
+
failureCount?: number;
|
|
656
|
+
timestamp?: number;
|
|
657
|
+
}) => Effect.Effect<void, never, never>;
|
|
385
658
|
//#endregion
|
|
386
659
|
//#region src/service/metrics.d.ts
|
|
387
660
|
declare const MetricsService_base: Context.TagClass<MetricsService, "MetricsService", {
|
|
@@ -732,5 +1005,5 @@ declare const withChunkContext: (context: {
|
|
|
732
1005
|
totalSize?: number;
|
|
733
1006
|
}) => Effect.Effect<void, never, never>;
|
|
734
1007
|
//#endregion
|
|
735
|
-
export { AzureMetrics, AzureObservabilityLayer, AzureTracingLayer, FilesystemMetrics, FilesystemObservabilityLayer, FilesystemTracingLayer, FlowErrorCategory, FlowMetrics, FlowObservability, FlowObservabilityDisabled, FlowObservabilityLive, FlowObservabilityService, GCSMetrics, GCSObservabilityLayer, GCSTracingLayer, MetricsService, NoOpMetricsServiceLive, NodeSdkLive, Observability, ObservabilityDisabled, ObservabilityService, ObservabilityTestFixture, S3Metrics, S3ObservabilityLayer, S3TracingLayer, StorageErrorCategory, StorageMetrics, StorageObservability, StorageObservabilityDisabled, StorageObservabilityService, TracingService, UploadErrorCategory, UploadObservability, UploadObservabilityDisabled, UploadObservabilityLive, UploadObservabilityService, UploadObservabilityTest, UploadServerMetrics, WebSdkLive, WorkersSdkLive, azureActiveUploadsGauge, azureApiCallsTotal, azureFileSizeHistogram, azureMetrics, azurePartSizeHistogram, azurePartUploadDurationHistogram, azureUploadDurationHistogram, azureUploadErrorsTotal, azureUploadLatencySummary, azureUploadPartsTotal, azureUploadRequestsTotal, azureUploadSuccessTotal, azureUploadThroughputGauge, captureMetrics, classifyFlowError, classifyStorageError, classifyUploadError, createFlowMetrics, createStorageErrorClassifier, createStorageErrorTracker, createStorageMetrics, createStorageTracingLayer, createTestFixture, createTracingLayer, createUploadErrorClassifier, createUploadGauges, createUploadHistograms, createUploadMetrics, createUploadServerMetrics, createUploadSummaries, filesystemActiveUploadsGauge, filesystemApiCallsTotal, filesystemFileSizeHistogram, filesystemMetrics, filesystemPartSizeHistogram, filesystemPartUploadDurationHistogram, filesystemUploadDurationHistogram, filesystemUploadErrorsTotal, filesystemUploadLatencySummary, filesystemUploadPartsTotal, filesystemUploadRequestsTotal, filesystemUploadSuccessTotal, filesystemUploadThroughputGauge, flowMetrics, gcsActiveUploadsGauge, gcsApiCallsTotal, gcsFileSizeHistogram, gcsMetrics, gcsPartSizeHistogram, gcsPartUploadDurationHistogram, gcsUploadDurationHistogram, gcsUploadErrorsTotal, gcsUploadLatencySummary, gcsUploadPartsTotal, gcsUploadRequestsTotal, gcsUploadSuccessTotal, gcsUploadThroughputGauge, getFlowMetrics, getTestMetrics, getUploadMetrics, isObservabilityEnabled, logAzureContext, logAzureOperation, logAzureUploadCompletion, logAzureUploadProgress, logFilesystemContext, logFilesystemOperation, logFilesystemUploadCompletion, logFilesystemUploadProgress, logGCSContext, logGCSOperation, logGCSUploadCompletion, logGCSUploadProgress, logS3Context, logS3Operation, logS3UploadCompletion, logS3UploadProgress, logStorageOperation, logUploadCompletion, logUploadProgress, logWithContext, makeFlowObservabilityLayer, makeFlowObservabilityLive, makeObservabilityLayer, makeStorageObservabilityLayer, makeTestFlowObservability, makeTestFlowObservability$1 as makeTestFlowObservabilityUtil, makeTestStorageObservability, makeTestUploadObservability, makeUploadObservabilityLayer, makeUploadObservabilityLive, runWithTestFlowObservability, runWithTestObservability, s3ActiveUploadsGauge, s3ApiCallsTotal, s3FileSizeHistogram, s3Metrics, s3PartSizeHistogram, s3PartUploadDurationHistogram, s3UploadDurationHistogram, s3UploadErrorsTotal, s3UploadLatencySummary, s3UploadPartsTotal, s3UploadRequestsTotal, s3UploadSuccessTotal, s3UploadThroughputGauge, trackActiveFlow, trackActiveNode, trackAzureError, trackFileSize, trackFilesystemError, trackFlowError, trackGCSError, trackNodeError, trackPartSize, trackS3Error, trackStorageError, trackUploadError, uploadServerMetrics, validateMetricsExist, whenObservabilityEnabled, withActiveUploadTracking, withApiMetrics, withAzureApiMetrics, withAzureOperationMetrics, withAzureSpan, withAzureTimingMetrics, withAzureUploadMetrics, withChunkContext, withChunkDuration, withExecutionContext, withFilesystemApiMetrics, withFilesystemOperationMetrics, withFilesystemSpan, withFilesystemTimingMetrics, withFilesystemUploadMetrics, withFlowContext, withFlowDuration, withFlowSpan, withGCSApiMetrics, withGCSOperationMetrics, withGCSSpan, withGCSTimingMetrics, withGCSUploadMetrics, withMetricTracking, withNodeContext, withNodeDuration, withS3ApiMetrics, withS3OperationMetrics, withS3Span, withS3TimingMetrics, withS3UploadMetrics, withStorageOperationMetrics, withStorageSpan, withThroughputTracking, withTimingMetrics, withUploadContext, withUploadDuration, withUploadMetrics, withUploadSpan };
|
|
1008
|
+
export { AzureMetrics, AzureObservabilityLayer, AzureTracingLayer, CircuitBreakerTracingState, FilesystemMetrics, FilesystemObservabilityLayer, FilesystemTracingLayer, FlowErrorCategory, FlowMetrics, FlowObservability, FlowObservabilityDisabled, FlowObservabilityLive, FlowObservabilityService, GCSMetrics, GCSObservabilityLayer, GCSTracingLayer, MetricsService, NoOpMetricsServiceLive, NodeSdkLive, Observability, ObservabilityDisabled, ObservabilityService, ObservabilityTestFixture, OtlpExporterConfig, OtlpNodeSdkLive, OtlpSdkConfig, OtlpWebSdkLive, OtlpWorkersSdkLive, S3Metrics, S3ObservabilityLayer, S3TracingLayer, StorageErrorCategory, StorageMetrics, StorageObservability, StorageObservabilityDisabled, StorageObservabilityService, TracingService, UploadErrorCategory, UploadObservability, UploadObservabilityDisabled, UploadObservabilityLive, UploadObservabilityService, UploadObservabilityTest, UploadServerMetrics, WebSdkLive, WorkersSdkLive, annotateCircuitBreakerStateChange, azureActiveUploadsGauge, azureApiCallsTotal, azureFileSizeHistogram, azureMetrics, azurePartSizeHistogram, azurePartUploadDurationHistogram, azureUploadDurationHistogram, azureUploadErrorsTotal, azureUploadLatencySummary, azureUploadPartsTotal, azureUploadRequestsTotal, azureUploadSuccessTotal, azureUploadThroughputGauge, captureMetrics, classifyFlowError, classifyStorageError, classifyUploadError, createFlowMetrics, createOtlpMetricExporter, createOtlpNodeSdkLayer, createOtlpTraceExporter, createOtlpWebSdkLayer, createOtlpWorkersSdkLayer, createStorageErrorClassifier, createStorageErrorTracker, createStorageMetrics, createStorageTracingLayer, createTestFixture, createTracingLayer, createUploadErrorClassifier, createUploadGauges, createUploadHistograms, createUploadMetrics, createUploadServerMetrics, createUploadSummaries, filesystemActiveUploadsGauge, filesystemApiCallsTotal, filesystemFileSizeHistogram, filesystemMetrics, filesystemPartSizeHistogram, filesystemPartUploadDurationHistogram, filesystemUploadDurationHistogram, filesystemUploadErrorsTotal, filesystemUploadLatencySummary, filesystemUploadPartsTotal, filesystemUploadRequestsTotal, filesystemUploadSuccessTotal, filesystemUploadThroughputGauge, flowMetrics, gcsActiveUploadsGauge, gcsApiCallsTotal, gcsFileSizeHistogram, gcsMetrics, gcsPartSizeHistogram, gcsPartUploadDurationHistogram, gcsUploadDurationHistogram, gcsUploadErrorsTotal, gcsUploadLatencySummary, gcsUploadPartsTotal, gcsUploadRequestsTotal, gcsUploadSuccessTotal, gcsUploadThroughputGauge, getFlowMetrics, getOtlpEndpoint, getServiceName, getTestMetrics, getUploadMetrics, isObservabilityEnabled, isOtlpExportEnabled, logAzureContext, logAzureOperation, logAzureUploadCompletion, logAzureUploadProgress, logFilesystemContext, logFilesystemOperation, logFilesystemUploadCompletion, logFilesystemUploadProgress, logGCSContext, logGCSOperation, logGCSUploadCompletion, logGCSUploadProgress, logS3Context, logS3Operation, logS3UploadCompletion, logS3UploadProgress, logStorageOperation, logUploadCompletion, logUploadProgress, logWithContext, makeFlowObservabilityLayer, makeFlowObservabilityLive, makeObservabilityLayer, makeStorageObservabilityLayer, makeTestFlowObservability, makeTestFlowObservability$1 as makeTestFlowObservabilityUtil, makeTestStorageObservability, makeTestUploadObservability, makeUploadObservabilityLayer, makeUploadObservabilityLive, parseOtlpHeaders, parseResourceAttributes, runWithTestFlowObservability, runWithTestObservability, s3ActiveUploadsGauge, s3ApiCallsTotal, s3FileSizeHistogram, s3Metrics, s3PartSizeHistogram, s3PartUploadDurationHistogram, s3UploadDurationHistogram, s3UploadErrorsTotal, s3UploadLatencySummary, s3UploadPartsTotal, s3UploadRequestsTotal, s3UploadSuccessTotal, s3UploadThroughputGauge, trackActiveFlow, trackActiveNode, trackAzureError, trackFileSize, trackFilesystemError, trackFlowError, trackGCSError, trackNodeError, trackPartSize, trackS3Error, trackStorageError, trackUploadError, uploadServerMetrics, validateMetricsExist, whenObservabilityEnabled, withActiveUploadTracking, withApiMetrics, withAzureApiMetrics, withAzureOperationMetrics, withAzureSpan, withAzureTimingMetrics, withAzureUploadMetrics, withChunkContext, withChunkDuration, withCircuitBreakerContext, withCircuitBreakerSpan, withExecutionContext, withFilesystemApiMetrics, withFilesystemOperationMetrics, withFilesystemSpan, withFilesystemTimingMetrics, withFilesystemUploadMetrics, withFlowContext, withFlowDuration, withFlowSpan, withGCSApiMetrics, withGCSOperationMetrics, withGCSSpan, withGCSTimingMetrics, withGCSUploadMetrics, withMetricTracking, withNodeContext, withNodeDuration, withS3ApiMetrics, withS3OperationMetrics, withS3Span, withS3TimingMetrics, withS3UploadMetrics, withStorageOperationMetrics, withStorageSpan, withThroughputTracking, withTimingMetrics, withUploadContext, withUploadDuration, withUploadMetrics, withUploadSpan };
|
|
736
1009
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/core/metrics.ts","../src/core/errors.ts","../src/core/layers.ts","../src/core/logging.ts","../src/core/testing.ts","../src/core/tracing.ts","../src/core/utilities.ts","../src/flow/errors.ts","../src/flow/layers.ts","../src/flow/metrics.ts","../src/flow/testing.ts","../src/flow/tracing.ts","../src/service/metrics.ts","../src/storage/azure.ts","../src/storage/filesystem.ts","../src/storage/gcs.ts","../src/storage/s3.ts","../src/upload/metrics.ts","../src/upload/errors.ts","../src/upload/layers.ts","../src/upload/testing.ts","../src/upload/tracing.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/core/metrics.ts","../src/core/errors.ts","../src/core/exporters.ts","../src/core/layers.ts","../src/core/logging.ts","../src/core/testing.ts","../src/core/tracing.ts","../src/core/utilities.ts","../src/flow/errors.ts","../src/flow/layers.ts","../src/flow/metrics.ts","../src/flow/testing.ts","../src/flow/tracing.ts","../src/service/metrics.ts","../src/storage/azure.ts","../src/storage/filesystem.ts","../src/storage/gcs.ts","../src/storage/s3.ts","../src/upload/metrics.ts","../src/upload/errors.ts","../src/upload/layers.ts","../src/upload/testing.ts","../src/upload/tracing.ts"],"sourcesContent":[],"mappings":"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"}
|