@uploadista/observability 0.1.2 → 0.1.3-beta.3
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 +86 -101
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +14 -29
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +16 -16
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e=require(`effect`),t=require(`@opentelemetry/exporter-logs-otlp-http`),n=require(`@opentelemetry/exporter-metrics-otlp-http`),r=require(`@opentelemetry/exporter-trace-otlp-http`),i=require(`@opentelemetry/sdk-logs`),a=require(`@opentelemetry/sdk-metrics`),o=require(`@opentelemetry/api`),s=require(`@opentelemetry/api-logs`),c=require(`@effect/opentelemetry`),l=require(`@opentelemetry/sdk-trace-base`);const u=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`},ee=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return u(e)},te=(t,n,r,i,a={},o=u)=>e.Effect.gen(function*(){let s=o(i);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,r),e.Metric.tagged(`error_category`,s))(e.Effect.succeed(1));let c={storage_type:t,operation:r,error_category:s,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,...a};yield*e.Effect.logError(`${t.toUpperCase()} ${r} failed`).pipe(e.Effect.annotateLogs(c))}),d=(e,t,n)=>{let r=ee(e,n);return(n,i,a={})=>te(e,t,n,i,a,r)};function f(){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 p(e,t){if(t)return t;if(typeof process<`u`){let t;switch(e){case`traces`:t=process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;break;case`metrics`:t=process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;break;case`logs`:t=process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT;break}if(t)return t;if(process.env.OTEL_EXPORTER_OTLP_ENDPOINT)return process.env.OTEL_EXPORTER_OTLP_ENDPOINT}return`http://localhost:4318`}function ne(e={}){let t=p(`traces`,e.endpoint),n=e.headers??f(),i=e.timeoutMillis??3e4;return new r.OTLPTraceExporter({url:`${t}/v1/traces`,headers:n,timeoutMillis:i})}function re(e={}){let t=p(`metrics`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new n.OTLPMetricExporter({url:`${t}/v1/metrics`,headers:r,timeoutMillis:i})}function m(){if(typeof process<`u`){let e=process.env.UPLOADISTA_OBSERVABILITY_ENABLED;if(e!==void 0)return e.toLowerCase()!==`false`&&e!==`0`}return!0}function h(e=`uploadista`){return typeof process<`u`&&process.env.OTEL_SERVICE_NAME?process.env.OTEL_SERVICE_NAME:e}function ie(){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}function ae(e={}){let n=p(`logs`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new t.OTLPLogExporter({url:`${n}/v1/logs`,headers:r,timeoutMillis:i})}function oe(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_METRICS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_METRICS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 6e4}function se(e={}){return new a.MeterProvider({readers:[new a.PeriodicExportingMetricReader({exporter:re(e),exportIntervalMillis:oe(e.exportIntervalMillis),exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}function ce(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_LOGS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_LOGS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 5e3}function le(e={}){let t=ae(e),n=ce(e.scheduledDelayMillis);return new i.LoggerProvider({processors:[new i.BatchLogRecordProcessor(t,{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:n,exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}var g=class extends e.Context.Tag(`OtelLogger`)(){};function _(e){switch(e.toLowerCase()){case`debug`:case`trace`:return s.SeverityNumber.DEBUG;case`info`:return s.SeverityNumber.INFO;case`warning`:case`warn`:return s.SeverityNumber.WARN;case`error`:return s.SeverityNumber.ERROR;case`fatal`:case`critical`:return s.SeverityNumber.FATAL;default:return s.SeverityNumber.INFO}}function ue(e){return e<=s.SeverityNumber.DEBUG?`DEBUG`:e<=s.SeverityNumber.INFO?`INFO`:e<=s.SeverityNumber.WARN?`WARN`:e<=s.SeverityNumber.ERROR?`ERROR`:`FATAL`}function v(){let e=o.trace.getActiveSpan();if(!e)return{};let t=e.spanContext();return t.traceId===`00000000000000000000000000000000`?{}:{trace_id:t.traceId,span_id:t.spanId,trace_flags:String(t.traceFlags)}}function y(t={}){return e.Layer.scoped(g,e.Effect.gen(function*(){if(!m()){let{LoggerProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-logs`)),n=new t;return{logger:n.getLogger(h(`uploadista`)),provider:n}}let n=le(t),r=t.serviceName??h(`uploadista`),i=n.getLogger(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down LoggerProvider:`,e)}})),{logger:i,provider:n}}))}const de=y();function fe(e={}){return y(e)}const pe=y();function me(e={}){return y(e)}const he=y({serviceName:h(`uploadista-workers`)});function ge(e={}){return y({serviceName:h(`uploadista-workers`),...e})}const _e=t=>e.Logger.make(({logLevel:e,message:n,annotations:r})=>{let i=_(e.label);if(t!==void 0&&i<t)return;let a={...v()};for(let[e,t]of r)typeof t==`string`||typeof t==`number`||typeof t==`boolean`?a[e]=t:a[e]=String(t);(i>=s.SeverityNumber.ERROR?console.error:i>=s.SeverityNumber.WARN?console.warn:console.log)(`[${e.label}] ${String(n)}`,a)}),b=(t,n,r)=>e.Effect.gen(function*(){let{logger:e}=yield*g,i=_(t),a=v();e.emit({severityNumber:i,severityText:ue(i),body:n,attributes:{...a,...r}})}),ve=(e,t)=>b(`debug`,e,t),ye=(e,t)=>b(`info`,e,t),be=(e,t)=>b(`warn`,e,t),xe=(e,t)=>b(`error`,e,t),Se=(e,t)=>b(`fatal`,e,t);var x=class extends e.Context.Tag(`OtelMeter`)(){};function S(t={}){return e.Layer.scoped(x,e.Effect.gen(function*(){if(!m()){let{MeterProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-metrics`)),n=new t;return{meter:n.getMeter(h(`uploadista`)),provider:n}}let n=se(t),r=t.serviceName??h(`uploadista`),i=n.getMeter(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down MeterProvider:`,e)}})),{meter:i,provider:n}}))}const Ce=S();function we(e={}){return S(e)}const Te=S();function Ee(e={}){return S(e)}const De=S({serviceName:h(`uploadista-workers`)});function Oe(e={}){return S({serviceName:h(`uploadista-workers`),...e})}const ke=(t,n=1,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createCounter(t).add(n,r)}),Ae=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createHistogram(t).record(n,r)}),je=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createObservableGauge(t,{description:t}).addCallback(e=>{e.observe(n(),r)})}),Me=e.Context.GenericTag(`TracingService`),Ne=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(Me,{serviceName:n})},C=e=>Ne({serviceName:`uploadista-${e}-store`}),w=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${n}-${t}`,{attributes:{"storage.type":n,operation:t,...r}})),Pe=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Fe=c.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Ie=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)}));function T(e={}){return new l.BatchSpanProcessor(ne(),{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:e.scheduledDelayMillis??5e3,exportTimeoutMillis:e.exportTimeoutMillis??3e4})}function E(e={}){let t=e.serviceName??h(`uploadista`),n=ie(),r=e.resourceAttributes??{};return{serviceName:t,...n,...r}}const Le=c.NodeSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Re(e={}){return c.NodeSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const ze=c.WebSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Be(e={}){return c.WebSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const Ve=c.WebSdk.layer(()=>{let e={serviceName:h(`uploadista-workers`)};return m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)}});function He(e={}){return c.WebSdk.layer(()=>{let t={serviceName:h(`uploadista-workers`),...e};return m()?{resource:E(t),spanProcessor:T(t)}:{resource:E(t)}})}function Ue(){let e=o.trace.getActiveSpan();if(!e)return;let t=e.spanContext();return{traceId:t.traceId,spanId:t.spanId,traceFlags:t.traceFlags}}const We=e.Effect.gen(function*(){let t=yield*e.Effect.currentSpan.pipe(e.Effect.option);return e.Option.match(t,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:e.sampled?1:0})})});function Ge(t){return e.Tracer.externalSpan({traceId:t.traceId,spanId:t.spanId,sampled:t.traceFlags===1})}function Ke(t){return n=>{let r=e.Tracer.externalSpan({traceId:t.traceId,spanId:t.spanId,sampled:t.traceFlags===1});return n.pipe(e.Effect.provideService(e.Tracer.ParentSpan,r))}}function qe(){let e=o.trace.getActiveSpan();return e?e.spanContext().traceId!==`00000000000000000000000000000000`:!1}const Je=e.Layer.mergeAll(Le,Ce,de);function Ye(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Re({serviceName:n,resourceAttributes:r,...t.traces}),we({serviceName:n,...t.metrics}),fe({serviceName:n,...t.logs}))}const Xe=e.Layer.mergeAll(ze,Te,pe);function Ze(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Be({serviceName:n,resourceAttributes:r,...t.traces}),Ee({serviceName:n,...t.metrics}),me({serviceName:n,...t.logs}))}const Qe=e.Layer.mergeAll(Ve,De,he);function $e(t={}){let n=t.serviceName??h(`uploadista-workers`),r=t.resourceAttributes;return e.Layer.mergeAll(He({serviceName:n,resourceAttributes:r,...t.traces}),Oe({serviceName:n,...t.metrics}),ge({serviceName:n,...t.logs}))}function D(){return typeof process<`u`&&process.versions?.node?`node`:typeof navigator<`u`&&typeof window<`u`?`web`:`workers`}const et=e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Je;case`web`:return Xe;case`workers`:return Qe}}));function tt(t={}){return e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Ye(t);case`web`:return Ze(t);case`workers`:return $e(t)}}))}var O=class extends e.Context.Tag(`Observability`)(){},k=class extends e.Context.Tag(`StorageObservability`)(){},A=class extends e.Context.Tag(`UploadObservability`)(){},j=class extends e.Context.Tag(`FlowObservability`)(){};const nt=(t,n=!0)=>e.Layer.succeed(O,{serviceName:t,enabled:n}),M=(t,n,r=!0)=>e.Layer.succeed(k,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),N=(t=!0)=>e.Layer.succeed(A,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),P=(t=!0)=>e.Layer.succeed(j,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),rt=nt(`uploadista-disabled`,!1),it=e=>M(e,{},!1),at=N(!1),ot=P(!1),st=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(O);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),ct=t=>e.Effect.gen(function*(){if(yield*st){let n=yield*t;return e.Option.some(n)}return e.Option.none()}),F=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),I=(e,t,n)=>F(`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}}),L=(e,t,n,r)=>F(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),R=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return F(`${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}})},lt=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}`})}),ut=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}`)}),dt=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}`})}),ft=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}`})}),z=e=>({...lt(e),...ut(e),...dt(e),...ft(e)}),pt=t=>{let n=z(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(k,r)},mt=()=>{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(A,t)},ht=()=>{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(j,t)},gt=t=>e.Effect.gen(function*(){let n=yield*t;return yield*e.Metric.snapshot,n}),_t=t=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let n=yield*t;return yield*e.Metric.snapshot,n}),vt=(e=`test-storage`)=>({storageObservability:pt(e),uploadObservability:mt(),flowObservability:ht()}),yt=(t,n=`test-storage`)=>{let r=vt(n);return t.pipe(e.Effect.provide(r.storageObservability),e.Effect.provide(r.uploadObservability),e.Effect.provide(r.flowObservability))},B=(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)))),V=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.apiCallsTotal.pipe(e.Metric.tagged(`operation`,n))(e.Effect.succeed(1)))),H=(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}),bt=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.fileSizeHistogram(e.Effect.succeed(n)))),xt=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.partSizeHistogram(e.Effect.succeed(n)))),St=(t,n)=>n.pipe(e.Effect.tap(()=>t.activeUploadsGauge(e.Effect.succeed(1))),e.Effect.ensuring(t.activeUploadsGauge(e.Effect.succeed(-1)))),Ct=(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}),U=(e,t,n,r,i)=>{let a=r.pipe(n=>V(e,t,n),t=>B(e,n,t),t=>H(e.uploadDurationHistogram,t),t=>St(e,t));return i!==void 0&&(a=a.pipe(t=>bt(e,i,t),t=>Ct(e,i,t))),a},W=()=>({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`})}),wt=W(),G=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`}},Tt=t=>{let n=W(),r=G(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)}))})},Et=(t,n,r)=>{let i=W(),a=G(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)}))})},Dt=(t=`uploadista-flow-engine`)=>{let n=W();return e.Layer.succeed(j,{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)}})},Ot=Dt(),kt=P(!1),At=e.Effect.gen(function*(){return(yield*j).metrics}),jt=t=>{let n=W();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`))},Mt=(t,n,r,i)=>{let a=W(),o=i??n;return e.Effect.gen(function*(){let t=Date.now(),n=yield*r,i=(Date.now()-t)/1e3;return yield*e.Metric.update(a.nodeDurationHistogram,i),yield*e.Metric.update(a.nodeLatencySummary,i),n}).pipe(e.Effect.withSpan(`node-${o}`,{attributes:{"node.id":t,"node.type":n,"node.type_id":i??n}}))},Nt=t=>{let n=W();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))})},Pt=t=>{let n=W();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))})},Ft=()=>{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(j,t)},It=t=>t.pipe(e.Effect.provide(Ft())),Lt=(t,n)=>r=>r.pipe(e.Effect.withSpan(`flow-${t}`,{attributes:{"flow.operation":t,...n}})),Rt=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`}),zt=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`}),Bt=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`}),Vt=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${t}-${n}`,{attributes:{"operation.domain":t,"operation.name":n,...r}})),Ht=t=>e.Effect.annotateCurrentSpan({"operation.domain":t.domain,"operation.name":t.operation,"operation.input_size":t.inputSize?.toString()??`unknown`,"operation.output_size":t.outputSize?.toString()??`unknown`}),Ut=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`circuit-breaker-${t}`,{attributes:{"circuit_breaker.node_type":t,"circuit_breaker.state":n,...r}})),Wt=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`}),Gt=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 Kt=class extends e.Context.Tag(`MetricsService`)(){};const qt=e.Layer.succeed(Kt,{recordUpload:(t,n)=>e.Effect.void}),K=`azure`,q=z(K),Jt=C(K),Yt=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}},Xt=d(K,q,Yt),Zt=e.Layer.mergeAll(Jt),Qt=(e,t)=>B(q,e,t),$t=(e,t)=>V(q,e,t),en=H,tn=(e,t,n,r)=>U(q,e,t,n,r),nn=(e,t)=>n=>w(e,K,t)(n),rn=L.bind(null,K),an=I.bind(null,K),on=R.bind(null,K),sn=F,{uploadRequestsTotal:cn,uploadPartsTotal:ln,uploadSuccessTotal:un,uploadErrorsTotal:dn,apiCallsTotal:fn,uploadDurationHistogram:pn,partUploadDurationHistogram:mn,fileSizeHistogram:hn,partSizeHistogram:gn,activeUploadsGauge:_n,uploadThroughputGauge:vn,uploadLatencySummary:yn}=q,J=`filesystem`,Y=z(J),bn=C(J),xn=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}},Sn=d(J,Y,xn),Cn=e.Layer.mergeAll(bn),wn=(e,t)=>B(Y,e,t),Tn=(e,t)=>V(Y,e,t),En=H,Dn=(e,t,n,r)=>U(Y,e,t,n,r),On=(e,t)=>n=>w(e,J,t)(n),kn=L.bind(null,J),An=I.bind(null,J),jn=R.bind(null,J),Mn=F,{uploadRequestsTotal:Nn,uploadPartsTotal:Pn,uploadSuccessTotal:Fn,uploadErrorsTotal:In,apiCallsTotal:Ln,uploadDurationHistogram:Rn,partUploadDurationHistogram:zn,fileSizeHistogram:Bn,partSizeHistogram:Vn,activeUploadsGauge:Hn,uploadThroughputGauge:Un,uploadLatencySummary:Wn}=Y,Gn=`gcs`,X=z(`gcs`),Kn=C(`gcs`),qn=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}},Jn=d(`gcs`,X,qn),Yn=e.Layer.mergeAll(Kn),Xn=(e,t)=>B(X,e,t),Zn=(e,t)=>V(X,e,t),Qn=H,$n=(e,t,n,r)=>U(X,e,t,n,r),er=(e,t)=>n=>w(e,`gcs`,t)(n),tr=L.bind(null,`gcs`),nr=I.bind(null,`gcs`),rr=R.bind(null,`gcs`),ir=F,{uploadRequestsTotal:ar,uploadPartsTotal:or,uploadSuccessTotal:sr,uploadErrorsTotal:cr,apiCallsTotal:lr,uploadDurationHistogram:ur,partUploadDurationHistogram:dr,fileSizeHistogram:fr,partSizeHistogram:pr,activeUploadsGauge:mr,uploadThroughputGauge:hr,uploadLatencySummary:gr}=X,_r=`s3`,Z=z(`s3`),vr=C(`s3`),yr=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}},br=d(`s3`,Z,yr),xr=e.Layer.mergeAll(vr),Sr=(e,t)=>B(Z,e,t),Cr=(e,t)=>V(Z,e,t),wr=H,Tr=(e,t,n,r)=>U(Z,e,t,n,r),Er=(e,t)=>n=>w(e,`s3`,t)(n),Dr=L.bind(null,`s3`),Or=I.bind(null,`s3`),kr=R.bind(null,`s3`),Ar=F,{uploadRequestsTotal:jr,uploadPartsTotal:Mr,uploadSuccessTotal:Nr,uploadErrorsTotal:Pr,apiCallsTotal:Fr,uploadDurationHistogram:Ir,partUploadDurationHistogram:Lr,fileSizeHistogram:Rr,partSizeHistogram:zr,activeUploadsGauge:Br,uploadThroughputGauge:Vr,uploadLatencySummary:Hr}=Z,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`},Ur=(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))}),Wr=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`})}),Gr=$(),Kr=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(A,{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)))}})},qr=Kr(),Jr=N(!1),Yr=e.Effect.gen(function*(){return(yield*A).metrics}),Xr=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`))},Zr=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`))},Qr=e.Layer.succeed(A,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),$r=()=>$(),ei=()=>{let e=$r(),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},ti=(t,n)=>r=>r.pipe(e.Effect.withSpan(`upload-${t}`,{attributes:{"upload.operation":t,...n}})),ni=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`}),ri=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=Zt,exports.AzureTracingLayer=Jt,Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return i.BatchLogRecordProcessor}}),exports.FilesystemObservabilityLayer=Cn,exports.FilesystemTracingLayer=bn,exports.FlowObservability=j,exports.FlowObservabilityDisabled=ot,exports.FlowObservabilityLive=Ot,exports.GCSObservabilityLayer=Yn,exports.GCSTracingLayer=Kn,Object.defineProperty(exports,`LoggerProvider`,{enumerable:!0,get:function(){return i.LoggerProvider}}),Object.defineProperty(exports,`MeterProvider`,{enumerable:!0,get:function(){return a.MeterProvider}}),exports.MetricsService=Kt,exports.NoOpMetricsServiceLive=qt,exports.NodeSdkLive=Fe,Object.defineProperty(exports,`OTLPLogExporter`,{enumerable:!0,get:function(){return t.OTLPLogExporter}}),Object.defineProperty(exports,`OTLPMetricExporter`,{enumerable:!0,get:function(){return n.OTLPMetricExporter}}),exports.Observability=O,exports.ObservabilityDisabled=rt,exports.OtelLogger=g,exports.OtelMeter=x,exports.OtlpAutoSdkLive=et,exports.OtlpFullObservabilityNodeSdkLive=Je,exports.OtlpFullObservabilityWebSdkLive=Xe,exports.OtlpFullObservabilityWorkersSdkLive=Qe,exports.OtlpLogsNodeSdkLive=de,exports.OtlpLogsWebSdkLive=pe,exports.OtlpLogsWorkersSdkLive=he,exports.OtlpMetricsNodeSdkLive=Ce,exports.OtlpMetricsWebSdkLive=Te,exports.OtlpMetricsWorkersSdkLive=De,exports.OtlpNodeSdkLive=Le,exports.OtlpWebSdkLive=ze,exports.OtlpWorkersSdkLive=Ve,Object.defineProperty(exports,`PeriodicExportingMetricReader`,{enumerable:!0,get:function(){return a.PeriodicExportingMetricReader}}),exports.S3ObservabilityLayer=xr,exports.S3TracingLayer=vr,Object.defineProperty(exports,`SeverityNumber`,{enumerable:!0,get:function(){return s.SeverityNumber}}),exports.StorageObservability=k,exports.StorageObservabilityDisabled=it,exports.TracingService=Me,exports.UploadObservability=A,exports.UploadObservabilityDisabled=at,exports.UploadObservabilityLive=qr,exports.UploadObservabilityTest=Qr,exports.WebSdkLive=Pe,exports.WorkersSdkLive=Ie,exports.annotateCircuitBreakerStateChange=Gt,exports.azureActiveUploadsGauge=_n,exports.azureApiCallsTotal=fn,exports.azureFileSizeHistogram=hn,exports.azureMetrics=q,exports.azurePartSizeHistogram=gn,exports.azurePartUploadDurationHistogram=mn,exports.azureUploadDurationHistogram=pn,exports.azureUploadErrorsTotal=dn,exports.azureUploadLatencySummary=yn,exports.azureUploadPartsTotal=ln,exports.azureUploadRequestsTotal=cn,exports.azureUploadSuccessTotal=un,exports.azureUploadThroughputGauge=vn,exports.captureMetrics=gt,exports.captureTraceContext=Ue,exports.captureTraceContextEffect=We,exports.classifyFlowError=G,exports.classifyStorageError=u,exports.classifyUploadError=Q,exports.createExternalSpan=Ge,exports.createFlowMetrics=W,exports.createGauge=je,exports.createOtlpAutoSdkLayer=tt,exports.createOtlpEffectLogger=_e,exports.createOtlpFullObservabilityNodeSdkLayer=Ye,exports.createOtlpFullObservabilityWebSdkLayer=Ze,exports.createOtlpFullObservabilityWorkersSdkLayer=$e,exports.createOtlpLogExporter=ae,exports.createOtlpLoggerProvider=le,exports.createOtlpLogsNodeSdkLayer=fe,exports.createOtlpLogsWebSdkLayer=me,exports.createOtlpLogsWorkersSdkLayer=ge,exports.createOtlpMeterProvider=se,exports.createOtlpMetricExporter=re,exports.createOtlpMetricsNodeSdkLayer=we,exports.createOtlpMetricsWebSdkLayer=Ee,exports.createOtlpMetricsWorkersSdkLayer=Oe,exports.createOtlpNodeSdkLayer=Re,exports.createOtlpTraceExporter=ne,exports.createOtlpWebSdkLayer=Be,exports.createOtlpWorkersSdkLayer=He,exports.createStorageErrorClassifier=ee,exports.createStorageErrorTracker=d,exports.createStorageMetrics=z,exports.createStorageTracingLayer=C,exports.createTestFixture=vt,exports.createTracingLayer=Ne,exports.createUploadEngineMetrics=$,exports.createUploadErrorClassifier=Wr,exports.createUploadGauges=dt,exports.createUploadHistograms=ut,exports.createUploadMetrics=lt,exports.createUploadSummaries=ft,exports.detectEnvironment=D,exports.emitLog=b,exports.filesystemActiveUploadsGauge=Hn,exports.filesystemApiCallsTotal=Ln,exports.filesystemFileSizeHistogram=Bn,exports.filesystemMetrics=Y,exports.filesystemPartSizeHistogram=Vn,exports.filesystemPartUploadDurationHistogram=zn,exports.filesystemUploadDurationHistogram=Rn,exports.filesystemUploadErrorsTotal=In,exports.filesystemUploadLatencySummary=Wn,exports.filesystemUploadPartsTotal=Pn,exports.filesystemUploadRequestsTotal=Nn,exports.filesystemUploadSuccessTotal=Fn,exports.filesystemUploadThroughputGauge=Un,exports.flowMetrics=wt,exports.gcsActiveUploadsGauge=mr,exports.gcsApiCallsTotal=lr,exports.gcsFileSizeHistogram=fr,exports.gcsMetrics=X,exports.gcsPartSizeHistogram=pr,exports.gcsPartUploadDurationHistogram=dr,exports.gcsUploadDurationHistogram=ur,exports.gcsUploadErrorsTotal=cr,exports.gcsUploadLatencySummary=gr,exports.gcsUploadPartsTotal=or,exports.gcsUploadRequestsTotal=ar,exports.gcsUploadSuccessTotal=sr,exports.gcsUploadThroughputGauge=hr,exports.getFlowMetrics=At,exports.getLogsExportInterval=ce,exports.getMetricsExportInterval=oe,exports.getOtlpEndpoint=p,exports.getServiceName=h,exports.getTestMetrics=$r,exports.getTraceContext=v,exports.getUploadMetrics=Yr,exports.hasActiveTraceContext=qe,exports.isObservabilityEnabled=st,exports.isOtlpExportEnabled=m,exports.logAzureContext=sn,exports.logAzureOperation=rn,exports.logAzureUploadCompletion=on,exports.logAzureUploadProgress=an,exports.logDebug=ve,exports.logError=xe,exports.logFatal=Se,exports.logFilesystemContext=Mn,exports.logFilesystemOperation=kn,exports.logFilesystemUploadCompletion=jn,exports.logFilesystemUploadProgress=An,exports.logGCSContext=ir,exports.logGCSOperation=tr,exports.logGCSUploadCompletion=rr,exports.logGCSUploadProgress=nr,exports.logInfo=ye,exports.logS3Context=Ar,exports.logS3Operation=Dr,exports.logS3UploadCompletion=kr,exports.logS3UploadProgress=Or,exports.logStorageOperation=L,exports.logUploadCompletion=R,exports.logUploadProgress=I,exports.logWarn=be,exports.logWithContext=F,exports.makeFlowObservabilityLayer=P,exports.makeFlowObservabilityLive=Dt,exports.makeObservabilityLayer=nt,exports.makeStorageObservabilityLayer=M,exports.makeTestFlowObservability=ht,exports.makeTestFlowObservabilityUtil=Ft,exports.makeTestStorageObservability=pt,exports.makeTestUploadObservability=mt,exports.makeUploadObservabilityLayer=N,exports.makeUploadObservabilityLive=Kr,exports.mapLogLevelToSeverity=_,exports.parseOtlpHeaders=f,exports.parseResourceAttributes=ie,exports.recordCounter=ke,exports.recordHistogram=Ae,exports.runWithTestFlowObservability=It,exports.runWithTestObservability=yt,exports.s3ActiveUploadsGauge=Br,exports.s3ApiCallsTotal=Fr,exports.s3FileSizeHistogram=Rr,exports.s3Metrics=Z,exports.s3PartSizeHistogram=zr,exports.s3PartUploadDurationHistogram=Lr,exports.s3UploadDurationHistogram=Ir,exports.s3UploadErrorsTotal=Pr,exports.s3UploadLatencySummary=Hr,exports.s3UploadPartsTotal=Mr,exports.s3UploadRequestsTotal=jr,exports.s3UploadSuccessTotal=Nr,exports.s3UploadThroughputGauge=Vr,exports.severityToText=ue,exports.trackActiveFlow=Nt,exports.trackActiveNode=Pt,exports.trackAzureError=Xt,exports.trackFileSize=bt,exports.trackFilesystemError=Sn,exports.trackFlowError=Tt,exports.trackGCSError=Jn,exports.trackNodeError=Et,exports.trackPartSize=xt,exports.trackS3Error=br,exports.trackStorageError=te,exports.trackUploadError=Ur,exports.uploadEngineMetrics=Gr,exports.validateMetricsExist=ei,exports.whenObservabilityEnabled=ct,exports.withActiveUploadTracking=St,exports.withApiMetrics=V,exports.withAzureApiMetrics=$t,exports.withAzureOperationMetrics=tn,exports.withAzureSpan=nn,exports.withAzureTimingMetrics=en,exports.withAzureUploadMetrics=Qt,exports.withChunkContext=ri,exports.withChunkDuration=Zr,exports.withCircuitBreakerContext=Wt,exports.withCircuitBreakerSpan=Ut,exports.withExecutionContext=Bt,exports.withFilesystemApiMetrics=Tn,exports.withFilesystemOperationMetrics=Dn,exports.withFilesystemSpan=On,exports.withFilesystemTimingMetrics=En,exports.withFilesystemUploadMetrics=wn,exports.withFlowContext=Rt,exports.withFlowDuration=jt,exports.withFlowSpan=Lt,exports.withGCSApiMetrics=Zn,exports.withGCSOperationMetrics=$n,exports.withGCSSpan=er,exports.withGCSTimingMetrics=Qn,exports.withGCSUploadMetrics=Xn,exports.withMetricTracking=_t,exports.withNodeContext=zt,exports.withNodeDuration=Mt,exports.withOperationContext=Ht,exports.withOperationSpan=Vt,exports.withParentContext=Ke,exports.withS3ApiMetrics=Cr,exports.withS3OperationMetrics=Tr,exports.withS3Span=Er,exports.withS3TimingMetrics=wr,exports.withS3UploadMetrics=Sr,exports.withStorageOperationMetrics=U,exports.withStorageSpan=w,exports.withThroughputTracking=Ct,exports.withTimingMetrics=H,exports.withUploadContext=ni,exports.withUploadDuration=Xr,exports.withUploadMetrics=B,exports.withUploadSpan=ti;
|
|
1
|
+
let e=require(`effect`),t=require(`@opentelemetry/exporter-logs-otlp-http`),n=require(`@opentelemetry/exporter-metrics-otlp-http`),r=require(`@opentelemetry/exporter-trace-otlp-http`),i=require(`@opentelemetry/sdk-logs`),a=require(`@opentelemetry/sdk-metrics`),o=require(`@opentelemetry/api`),s=require(`@opentelemetry/api-logs`),c=require(`@effect/opentelemetry`),l=require(`@opentelemetry/sdk-trace-base`);const u=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`},ee=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return u(e)},te=(t,n,r,i,a={},o=u)=>e.Effect.gen(function*(){let s=o(i);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,r),e.Metric.tagged(`error_category`,s))(e.Effect.succeed(1));let c={storage_type:t,operation:r,error_category:s,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,...a};yield*e.Effect.logError(`${t.toUpperCase()} ${r} failed`).pipe(e.Effect.annotateLogs(c))}),d=(e,t,n)=>{let r=ee(e,n);return(n,i,a={})=>te(e,t,n,i,a,r)};function f(){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 p(e,t){if(t)return t;if(typeof process<`u`){let t;switch(e){case`traces`:t=process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;break;case`metrics`:t=process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;break;case`logs`:t=process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT;break}if(t)return t;if(process.env.OTEL_EXPORTER_OTLP_ENDPOINT)return process.env.OTEL_EXPORTER_OTLP_ENDPOINT}return`http://localhost:4318`}function ne(e={}){let t=p(`traces`,e.endpoint),n=e.headers??f(),i=e.timeoutMillis??3e4;return new r.OTLPTraceExporter({url:`${t}/v1/traces`,headers:n,timeoutMillis:i})}function re(e={}){let t=p(`metrics`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new n.OTLPMetricExporter({url:`${t}/v1/metrics`,headers:r,timeoutMillis:i})}function m(){if(typeof process<`u`){let e=process.env.UPLOADISTA_OBSERVABILITY_ENABLED;if(e!==void 0)return e.toLowerCase()!==`false`&&e!==`0`}return!0}function h(e=`uploadista`){return typeof process<`u`&&process.env.OTEL_SERVICE_NAME?process.env.OTEL_SERVICE_NAME:e}function ie(){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}function ae(e={}){let n=p(`logs`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new t.OTLPLogExporter({url:`${n}/v1/logs`,headers:r,timeoutMillis:i})}function oe(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_METRICS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_METRICS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 6e4}function se(e={}){return new a.MeterProvider({readers:[new a.PeriodicExportingMetricReader({exporter:re(e),exportIntervalMillis:oe(e.exportIntervalMillis),exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}function ce(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_LOGS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_LOGS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 5e3}function le(e={}){let t=ae(e),n=ce(e.scheduledDelayMillis);return new i.LoggerProvider({processors:[new i.BatchLogRecordProcessor(t,{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:n,exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}var g=class extends e.Context.Tag(`OtelLogger`)(){};function _(e){switch(e.toLowerCase()){case`debug`:case`trace`:return s.SeverityNumber.DEBUG;case`info`:return s.SeverityNumber.INFO;case`warning`:case`warn`:return s.SeverityNumber.WARN;case`error`:return s.SeverityNumber.ERROR;case`fatal`:case`critical`:return s.SeverityNumber.FATAL;default:return s.SeverityNumber.INFO}}function ue(e){return e<=s.SeverityNumber.DEBUG?`DEBUG`:e<=s.SeverityNumber.INFO?`INFO`:e<=s.SeverityNumber.WARN?`WARN`:e<=s.SeverityNumber.ERROR?`ERROR`:`FATAL`}function v(){let e=o.trace.getActiveSpan();if(!e)return{};let t=e.spanContext();return t.traceId===`00000000000000000000000000000000`?{}:{trace_id:t.traceId,span_id:t.spanId,trace_flags:String(t.traceFlags)}}function y(t={}){return e.Layer.scoped(g,e.Effect.gen(function*(){if(!m()){let{LoggerProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-logs`)),n=new t;return{logger:n.getLogger(h(`uploadista`)),provider:n}}let n=le(t),r=t.serviceName??h(`uploadista`),i=n.getLogger(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down LoggerProvider:`,e)}})),{logger:i,provider:n}}))}const de=y();function fe(e={}){return y(e)}const pe=y();function me(e={}){return y(e)}const he=y({serviceName:h(`uploadista-workers`)});function ge(e={}){return y({serviceName:h(`uploadista-workers`),...e})}const _e=t=>e.Logger.make(({logLevel:e,message:n,annotations:r})=>{let i=_(e.label);if(t!==void 0&&i<t)return;let a={...v()};for(let[e,t]of r)typeof t==`string`||typeof t==`number`||typeof t==`boolean`?a[e]=t:a[e]=String(t);(i>=s.SeverityNumber.ERROR?console.error:i>=s.SeverityNumber.WARN?console.warn:console.log)(`[${e.label}] ${String(n)}`,a)}),b=(t,n,r)=>e.Effect.gen(function*(){let{logger:e}=yield*g,i=_(t),a=v();e.emit({severityNumber:i,severityText:ue(i),body:n,attributes:{...a,...r}})}),ve=(e,t)=>b(`debug`,e,t),ye=(e,t)=>b(`info`,e,t),be=(e,t)=>b(`warn`,e,t),xe=(e,t)=>b(`error`,e,t),Se=(e,t)=>b(`fatal`,e,t);var x=class extends e.Context.Tag(`OtelMeter`)(){};function S(t={}){return e.Layer.scoped(x,e.Effect.gen(function*(){if(!m()){let{MeterProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-metrics`)),n=new t;return{meter:n.getMeter(h(`uploadista`)),provider:n}}let n=se(t),r=t.serviceName??h(`uploadista`),i=n.getMeter(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down MeterProvider:`,e)}})),{meter:i,provider:n}}))}const Ce=S();function we(e={}){return S(e)}const Te=S();function Ee(e={}){return S(e)}const De=S({serviceName:h(`uploadista-workers`)});function Oe(e={}){return S({serviceName:h(`uploadista-workers`),...e})}const ke=(t,n=1,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createCounter(t).add(n,r)}),Ae=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createHistogram(t).record(n,r)}),je=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createObservableGauge(t,{description:t}).addCallback(e=>{e.observe(n(),r)})}),Me=e.Context.GenericTag(`TracingService`),Ne=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(Me,{serviceName:n})},C=e=>Ne({serviceName:`uploadista-${e}-store`}),w=(e,t,n)=>r=>r.pipe(r.Effect.withSpan(`${t}-${e}`,{attributes:{"storage.type":t,operation:e,...n}})),Pe=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Fe=c.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Ie=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)}));function T(e={}){return new l.BatchSpanProcessor(ne(),{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:e.scheduledDelayMillis??5e3,exportTimeoutMillis:e.exportTimeoutMillis??3e4})}function E(e={}){let t=e.serviceName??h(`uploadista`),n=ie(),r=e.resourceAttributes??{};return{serviceName:t,...n,...r}}const Le=c.NodeSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Re(e={}){return c.NodeSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const ze=c.WebSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Be(e={}){return c.WebSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const Ve=c.WebSdk.layer(()=>{let e={serviceName:h(`uploadista-workers`)};return m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)}});function He(e={}){return c.WebSdk.layer(()=>{let t={serviceName:h(`uploadista-workers`),...e};return m()?{resource:E(t),spanProcessor:T(t)}:{resource:E(t)}})}function Ue(){let e=o.trace.getActiveSpan();if(!e)return;let t=e.spanContext();return{traceId:t.traceId,spanId:t.spanId,traceFlags:t.traceFlags}}const We=e.Effect.gen(function*(){let t=yield*e.Effect.currentSpan.pipe(e.Effect.option);return e.Option.match(t,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:e.sampled?1:0})})});function Ge(t){return e.Tracer.externalSpan({traceId:t.traceId,spanId:t.spanId,sampled:t.traceFlags===1})}function Ke(e){return t=>{let n=t.Tracer.externalSpan({traceId:e.traceId,spanId:e.spanId,sampled:e.traceFlags===1});return t.pipe(t.Effect.provideService(t.Tracer.ParentSpan,n))}}function qe(){let e=o.trace.getActiveSpan();return e?e.spanContext().traceId!==`00000000000000000000000000000000`:!1}const Je=e.Layer.mergeAll(Le,Ce,de);function Ye(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Re({serviceName:n,resourceAttributes:r,...t.traces}),we({serviceName:n,...t.metrics}),fe({serviceName:n,...t.logs}))}const Xe=e.Layer.mergeAll(ze,Te,pe);function Ze(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Be({serviceName:n,resourceAttributes:r,...t.traces}),Ee({serviceName:n,...t.metrics}),me({serviceName:n,...t.logs}))}const Qe=e.Layer.mergeAll(Ve,De,he);function $e(t={}){let n=t.serviceName??h(`uploadista-workers`),r=t.resourceAttributes;return e.Layer.mergeAll(He({serviceName:n,resourceAttributes:r,...t.traces}),Oe({serviceName:n,...t.metrics}),ge({serviceName:n,...t.logs}))}function D(){return typeof process<`u`&&process.versions?.node?`node`:typeof navigator<`u`&&typeof window<`u`?`web`:`workers`}const et=e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Je;case`web`:return Xe;case`workers`:return Qe}}));function tt(t={}){return e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Ye(t);case`web`:return Ze(t);case`workers`:return $e(t)}}))}var O=class extends e.Context.Tag(`Observability`)(){},k=class extends e.Context.Tag(`StorageObservability`)(){},A=class extends e.Context.Tag(`UploadObservability`)(){},j=class extends e.Context.Tag(`FlowObservability`)(){};const nt=(t,n=!0)=>e.Layer.succeed(O,{serviceName:t,enabled:n}),rt=(t,n,r=!0)=>e.Layer.succeed(k,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),M=(t=!0)=>e.Layer.succeed(A,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),N=(t=!0)=>e.Layer.succeed(j,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),it=nt(`uploadista-disabled`,!1),at=e=>rt(e,{},!1),ot=M(!1),st=N(!1),P=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(O);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),ct=e=>e.Effect.gen(function*(){if(yield*P){let t=yield*e;return e.Option.some(t)}return e.Option.none()}),F=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),I=(e,t,n)=>F(`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}}),L=(e,t,n,r)=>F(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),R=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return F(`${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}})},lt=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}`})}),ut=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}`)}),dt=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}`})}),ft=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}`})}),z=e=>({...lt(e),...ut(e),...dt(e),...ft(e)}),pt=t=>{let n=z(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(k,r)},mt=()=>{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(A,t)},ht=()=>{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(j,t)},gt=e=>e.Effect.gen(function*(){let t=yield*e;return yield*e.Metric.snapshot,t}),_t=e=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let t=yield*e;return yield*e.Metric.snapshot,t}),vt=(e=`test-storage`)=>({storageObservability:pt(e),uploadObservability:mt(),flowObservability:ht()}),yt=(e,t=`test-storage`)=>{let n=vt(t);return e.pipe(e.Effect.provide(n.storageObservability),e.Effect.provide(n.uploadObservability),e.Effect.provide(n.flowObservability))},B=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.uploadRequestsTotal.pipe(n.Metric.tagged(`upload_id`,t))(n.Effect.succeed(1))),n.Effect.tapError(()=>e.uploadErrorsTotal.pipe(n.Metric.tagged(`upload_id`,t))(n.Effect.succeed(1))),n.Effect.tap(()=>e.uploadSuccessTotal.pipe(n.Metric.tagged(`upload_id`,t))(n.Effect.succeed(1)))),V=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.apiCallsTotal.pipe(n.Metric.tagged(`operation`,t))(n.Effect.succeed(1)))),H=(e,t)=>t.Effect.gen(function*(){let n=yield*t.Effect.sync(()=>Date.now()),r=yield*t,i=((yield*t.Effect.sync(()=>Date.now()))-n)/1e3;return yield*e(t.Effect.succeed(i)),r}),bt=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.fileSizeHistogram(n.Effect.succeed(t)))),xt=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.partSizeHistogram(n.Effect.succeed(t)))),St=(e,t)=>t.pipe(t.Effect.tap(()=>e.activeUploadsGauge(t.Effect.succeed(1))),t.Effect.ensuring(e.activeUploadsGauge(t.Effect.succeed(-1)))),Ct=(e,t,n)=>n.Effect.gen(function*(){let r=yield*n.Effect.sync(()=>Date.now()),i=yield*n,a=((yield*n.Effect.sync(()=>Date.now()))-r)/1e3,o=a>0?t/a:0;return yield*e.uploadThroughputGauge(n.Effect.succeed(o)),i}),U=(e,t,n,r,i)=>{let a=r.pipe(n=>V(e,t,n),t=>B(e,n,t),t=>H(e.uploadDurationHistogram,t),t=>St(e,t));return i!==void 0&&(a=a.pipe(t=>bt(e,i,t),t=>Ct(e,i,t))),a},W=()=>({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`})}),wt=W(),G=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`}},Tt=t=>{let n=W(),r=G(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)}))})},Et=(t,n,r)=>{let i=W(),a=G(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)}))})},Dt=(t=`uploadista-flow-engine`)=>{let n=W();return e.Layer.succeed(j,{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)}})},Ot=Dt();N(!1);const kt=e.Effect.gen(function*(){return(yield*j).metrics}),At=e=>{let t=W();return e.Effect.gen(function*(){let n=Date.now(),r=yield*e,i=(Date.now()-n)/1e3;return yield*e.Metric.update(t.flowDurationHistogram,i),yield*e.Metric.update(t.flowLatencySummary,i),r}).pipe(e.Effect.withSpan(`flow-execution`))},jt=(e,t,n,r)=>{let i=W(),a=r??t;return n.Effect.gen(function*(){let e=Date.now(),t=yield*n,r=(Date.now()-e)/1e3;return yield*n.Metric.update(i.nodeDurationHistogram,r),yield*n.Metric.update(i.nodeLatencySummary,r),t}).pipe(n.Effect.withSpan(`node-${a}`,{attributes:{"node.id":e,"node.type":t,"node.type_id":r??t}}))},Mt=e=>{let t=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(t.activeFlowsGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>e,()=>e.Metric.set(t.activeFlowsGauge,-1))})},Nt=e=>{let t=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(t.activeNodesGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>e,()=>e.Metric.set(t.activeNodesGauge,-1))})},Pt=()=>{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(j,t)},Ft=e=>e.pipe(e.Effect.provide(Pt())),It=(e,t)=>n=>n.pipe(n.Effect.withSpan(`flow-${e}`,{attributes:{"flow.operation":e,...t}})),Lt=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`}),Rt=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`}),zt=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`}),Bt=(e,t,n)=>r=>r.pipe(r.Effect.withSpan(`${e}-${t}`,{attributes:{"operation.domain":e,"operation.name":t,...n}})),Vt=t=>e.Effect.annotateCurrentSpan({"operation.domain":t.domain,"operation.name":t.operation,"operation.input_size":t.inputSize?.toString()??`unknown`,"operation.output_size":t.outputSize?.toString()??`unknown`}),Ht=(e,t,n)=>r=>r.pipe(r.Effect.withSpan(`circuit-breaker-${e}`,{attributes:{"circuit_breaker.node_type":e,"circuit_breaker.state":t,...n}})),Ut=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`}),Wt=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 Gt=class extends e.Context.Tag(`MetricsService`)(){};const Kt=e.Layer.succeed(Gt,{recordUpload:(t,n)=>e.Effect.void}),K=`azure`,q=z(K),qt=C(K),Jt=d(K,q,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}}),Yt=e.Layer.mergeAll(qt),Xt=(e,t)=>B(q,e,t),Zt=(e,t)=>V(q,e,t),Qt=H,$t=(e,t,n,r)=>U(q,e,t,n,r),en=(e,t)=>n=>w(e,K,t)(n),tn=L.bind(null,K),nn=I.bind(null,K),rn=R.bind(null,K),an=F,{uploadRequestsTotal:on,uploadPartsTotal:sn,uploadSuccessTotal:cn,uploadErrorsTotal:ln,apiCallsTotal:un,uploadDurationHistogram:dn,partUploadDurationHistogram:fn,fileSizeHistogram:pn,partSizeHistogram:mn,activeUploadsGauge:hn,uploadThroughputGauge:gn,uploadLatencySummary:_n}=q,J=`filesystem`,Y=z(J),vn=C(J),yn=d(J,Y,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}}),bn=e.Layer.mergeAll(vn),xn=(e,t)=>B(Y,e,t),Sn=(e,t)=>V(Y,e,t),Cn=H,wn=(e,t,n,r)=>U(Y,e,t,n,r),Tn=(e,t)=>n=>w(e,J,t)(n),En=L.bind(null,J),Dn=I.bind(null,J),On=R.bind(null,J),kn=F,{uploadRequestsTotal:An,uploadPartsTotal:jn,uploadSuccessTotal:Mn,uploadErrorsTotal:Nn,apiCallsTotal:Pn,uploadDurationHistogram:Fn,partUploadDurationHistogram:In,fileSizeHistogram:Ln,partSizeHistogram:Rn,activeUploadsGauge:zn,uploadThroughputGauge:Bn,uploadLatencySummary:Vn}=Y,X=z(`gcs`),Hn=C(`gcs`),Un=d(`gcs`,X,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}}),Wn=e.Layer.mergeAll(Hn),Gn=(e,t)=>B(X,e,t),Kn=(e,t)=>V(X,e,t),qn=H,Jn=(e,t,n,r)=>U(X,e,t,n,r),Yn=(e,t)=>n=>w(e,`gcs`,t)(n),Xn=L.bind(null,`gcs`),Zn=I.bind(null,`gcs`),Qn=R.bind(null,`gcs`),$n=F,{uploadRequestsTotal:er,uploadPartsTotal:tr,uploadSuccessTotal:nr,uploadErrorsTotal:rr,apiCallsTotal:ir,uploadDurationHistogram:ar,partUploadDurationHistogram:or,fileSizeHistogram:sr,partSizeHistogram:cr,activeUploadsGauge:lr,uploadThroughputGauge:ur,uploadLatencySummary:dr}=X,Z=z(`s3`),fr=C(`s3`),pr=d(`s3`,Z,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}}),mr=e.Layer.mergeAll(fr),hr=(e,t)=>B(Z,e,t),gr=(e,t)=>V(Z,e,t),_r=H,vr=(e,t,n,r)=>U(Z,e,t,n,r),yr=(e,t)=>n=>w(e,`s3`,t)(n),br=L.bind(null,`s3`),xr=I.bind(null,`s3`),Sr=R.bind(null,`s3`),Cr=F,{uploadRequestsTotal:wr,uploadPartsTotal:Tr,uploadSuccessTotal:Er,uploadErrorsTotal:Dr,apiCallsTotal:Or,uploadDurationHistogram:kr,partUploadDurationHistogram:Ar,fileSizeHistogram:jr,partSizeHistogram:Mr,activeUploadsGauge:Nr,uploadThroughputGauge:Pr,uploadLatencySummary:Fr}=Z,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`},Ir=(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))}),Lr=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`})}),Rr=$(),zr=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(A,{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)))}})},Br=zr();M(!1);const Vr=e.Effect.gen(function*(){return(yield*A).metrics}),Hr=e=>{let t=$();return e.Effect.gen(function*(){let n=Date.now(),r=yield*e,i=(Date.now()-n)/1e3;return yield*e.Metric.update(t.uploadDurationHistogram,i),r}).pipe(e.Effect.withSpan(`upload-operation`))},Ur=e=>{let t=$();return e.Effect.gen(function*(){let n=Date.now(),r=yield*e,i=(Date.now()-n)/1e3;return yield*e.Metric.update(t.chunkUploadDurationHistogram,i),r}).pipe(e.Effect.withSpan(`chunk-upload`))},Wr=e.Layer.succeed(A,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),Gr=()=>$(),Kr=()=>{let e=Gr(),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},qr=(e,t)=>n=>n.pipe(n.Effect.withSpan(`upload-${e}`,{attributes:{"upload.operation":e,...t}})),Jr=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`}),Yr=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=Yt,exports.AzureTracingLayer=qt,Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return i.BatchLogRecordProcessor}}),exports.FilesystemObservabilityLayer=bn,exports.FilesystemTracingLayer=vn,exports.FlowObservability=j,exports.FlowObservabilityDisabled=st,exports.FlowObservabilityLive=Ot,exports.GCSObservabilityLayer=Wn,exports.GCSTracingLayer=Hn,Object.defineProperty(exports,`LoggerProvider`,{enumerable:!0,get:function(){return i.LoggerProvider}}),Object.defineProperty(exports,`MeterProvider`,{enumerable:!0,get:function(){return a.MeterProvider}}),exports.MetricsService=Gt,exports.NoOpMetricsServiceLive=Kt,exports.NodeSdkLive=Fe,Object.defineProperty(exports,`OTLPLogExporter`,{enumerable:!0,get:function(){return t.OTLPLogExporter}}),Object.defineProperty(exports,`OTLPMetricExporter`,{enumerable:!0,get:function(){return n.OTLPMetricExporter}}),exports.Observability=O,exports.ObservabilityDisabled=it,exports.OtelLogger=g,exports.OtelMeter=x,exports.OtlpAutoSdkLive=et,exports.OtlpFullObservabilityNodeSdkLive=Je,exports.OtlpFullObservabilityWebSdkLive=Xe,exports.OtlpFullObservabilityWorkersSdkLive=Qe,exports.OtlpLogsNodeSdkLive=de,exports.OtlpLogsWebSdkLive=pe,exports.OtlpLogsWorkersSdkLive=he,exports.OtlpMetricsNodeSdkLive=Ce,exports.OtlpMetricsWebSdkLive=Te,exports.OtlpMetricsWorkersSdkLive=De,exports.OtlpNodeSdkLive=Le,exports.OtlpWebSdkLive=ze,exports.OtlpWorkersSdkLive=Ve,Object.defineProperty(exports,`PeriodicExportingMetricReader`,{enumerable:!0,get:function(){return a.PeriodicExportingMetricReader}}),exports.S3ObservabilityLayer=mr,exports.S3TracingLayer=fr,Object.defineProperty(exports,`SeverityNumber`,{enumerable:!0,get:function(){return s.SeverityNumber}}),exports.StorageObservability=k,exports.StorageObservabilityDisabled=at,exports.TracingService=Me,exports.UploadObservability=A,exports.UploadObservabilityDisabled=ot,exports.UploadObservabilityLive=Br,exports.UploadObservabilityTest=Wr,exports.WebSdkLive=Pe,exports.WorkersSdkLive=Ie,exports.annotateCircuitBreakerStateChange=Wt,exports.azureActiveUploadsGauge=hn,exports.azureApiCallsTotal=un,exports.azureFileSizeHistogram=pn,exports.azureMetrics=q,exports.azurePartSizeHistogram=mn,exports.azurePartUploadDurationHistogram=fn,exports.azureUploadDurationHistogram=dn,exports.azureUploadErrorsTotal=ln,exports.azureUploadLatencySummary=_n,exports.azureUploadPartsTotal=sn,exports.azureUploadRequestsTotal=on,exports.azureUploadSuccessTotal=cn,exports.azureUploadThroughputGauge=gn,exports.captureMetrics=gt,exports.captureTraceContext=Ue,exports.captureTraceContextEffect=We,exports.classifyFlowError=G,exports.classifyStorageError=u,exports.classifyUploadError=Q,exports.createExternalSpan=Ge,exports.createFlowMetrics=W,exports.createGauge=je,exports.createOtlpAutoSdkLayer=tt,exports.createOtlpEffectLogger=_e,exports.createOtlpFullObservabilityNodeSdkLayer=Ye,exports.createOtlpFullObservabilityWebSdkLayer=Ze,exports.createOtlpFullObservabilityWorkersSdkLayer=$e,exports.createOtlpLogExporter=ae,exports.createOtlpLoggerProvider=le,exports.createOtlpLogsNodeSdkLayer=fe,exports.createOtlpLogsWebSdkLayer=me,exports.createOtlpLogsWorkersSdkLayer=ge,exports.createOtlpMeterProvider=se,exports.createOtlpMetricExporter=re,exports.createOtlpMetricsNodeSdkLayer=we,exports.createOtlpMetricsWebSdkLayer=Ee,exports.createOtlpMetricsWorkersSdkLayer=Oe,exports.createOtlpNodeSdkLayer=Re,exports.createOtlpTraceExporter=ne,exports.createOtlpWebSdkLayer=Be,exports.createOtlpWorkersSdkLayer=He,exports.createStorageErrorClassifier=ee,exports.createStorageErrorTracker=d,exports.createStorageMetrics=z,exports.createStorageTracingLayer=C,exports.createTestFixture=vt,exports.createTracingLayer=Ne,exports.createUploadEngineMetrics=$,exports.createUploadErrorClassifier=Lr,exports.createUploadGauges=dt,exports.createUploadHistograms=ut,exports.createUploadMetrics=lt,exports.createUploadSummaries=ft,exports.detectEnvironment=D,exports.emitLog=b,exports.filesystemActiveUploadsGauge=zn,exports.filesystemApiCallsTotal=Pn,exports.filesystemFileSizeHistogram=Ln,exports.filesystemMetrics=Y,exports.filesystemPartSizeHistogram=Rn,exports.filesystemPartUploadDurationHistogram=In,exports.filesystemUploadDurationHistogram=Fn,exports.filesystemUploadErrorsTotal=Nn,exports.filesystemUploadLatencySummary=Vn,exports.filesystemUploadPartsTotal=jn,exports.filesystemUploadRequestsTotal=An,exports.filesystemUploadSuccessTotal=Mn,exports.filesystemUploadThroughputGauge=Bn,exports.flowMetrics=wt,exports.gcsActiveUploadsGauge=lr,exports.gcsApiCallsTotal=ir,exports.gcsFileSizeHistogram=sr,exports.gcsMetrics=X,exports.gcsPartSizeHistogram=cr,exports.gcsPartUploadDurationHistogram=or,exports.gcsUploadDurationHistogram=ar,exports.gcsUploadErrorsTotal=rr,exports.gcsUploadLatencySummary=dr,exports.gcsUploadPartsTotal=tr,exports.gcsUploadRequestsTotal=er,exports.gcsUploadSuccessTotal=nr,exports.gcsUploadThroughputGauge=ur,exports.getFlowMetrics=kt,exports.getLogsExportInterval=ce,exports.getMetricsExportInterval=oe,exports.getOtlpEndpoint=p,exports.getServiceName=h,exports.getTestMetrics=Gr,exports.getTraceContext=v,exports.getUploadMetrics=Vr,exports.hasActiveTraceContext=qe,exports.isObservabilityEnabled=P,exports.isOtlpExportEnabled=m,exports.logAzureContext=an,exports.logAzureOperation=tn,exports.logAzureUploadCompletion=rn,exports.logAzureUploadProgress=nn,exports.logDebug=ve,exports.logError=xe,exports.logFatal=Se,exports.logFilesystemContext=kn,exports.logFilesystemOperation=En,exports.logFilesystemUploadCompletion=On,exports.logFilesystemUploadProgress=Dn,exports.logGCSContext=$n,exports.logGCSOperation=Xn,exports.logGCSUploadCompletion=Qn,exports.logGCSUploadProgress=Zn,exports.logInfo=ye,exports.logS3Context=Cr,exports.logS3Operation=br,exports.logS3UploadCompletion=Sr,exports.logS3UploadProgress=xr,exports.logStorageOperation=L,exports.logUploadCompletion=R,exports.logUploadProgress=I,exports.logWarn=be,exports.logWithContext=F,exports.makeFlowObservabilityLayer=N,exports.makeFlowObservabilityLive=Dt,exports.makeObservabilityLayer=nt,exports.makeStorageObservabilityLayer=rt,exports.makeTestFlowObservability=ht,exports.makeTestFlowObservabilityUtil=Pt,exports.makeTestStorageObservability=pt,exports.makeTestUploadObservability=mt,exports.makeUploadObservabilityLayer=M,exports.makeUploadObservabilityLive=zr,exports.mapLogLevelToSeverity=_,exports.parseOtlpHeaders=f,exports.parseResourceAttributes=ie,exports.recordCounter=ke,exports.recordHistogram=Ae,exports.runWithTestFlowObservability=Ft,exports.runWithTestObservability=yt,exports.s3ActiveUploadsGauge=Nr,exports.s3ApiCallsTotal=Or,exports.s3FileSizeHistogram=jr,exports.s3Metrics=Z,exports.s3PartSizeHistogram=Mr,exports.s3PartUploadDurationHistogram=Ar,exports.s3UploadDurationHistogram=kr,exports.s3UploadErrorsTotal=Dr,exports.s3UploadLatencySummary=Fr,exports.s3UploadPartsTotal=Tr,exports.s3UploadRequestsTotal=wr,exports.s3UploadSuccessTotal=Er,exports.s3UploadThroughputGauge=Pr,exports.severityToText=ue,exports.trackActiveFlow=Mt,exports.trackActiveNode=Nt,exports.trackAzureError=Jt,exports.trackFileSize=bt,exports.trackFilesystemError=yn,exports.trackFlowError=Tt,exports.trackGCSError=Un,exports.trackNodeError=Et,exports.trackPartSize=xt,exports.trackS3Error=pr,exports.trackStorageError=te,exports.trackUploadError=Ir,exports.uploadEngineMetrics=Rr,exports.validateMetricsExist=Kr,exports.whenObservabilityEnabled=ct,exports.withActiveUploadTracking=St,exports.withApiMetrics=V,exports.withAzureApiMetrics=Zt,exports.withAzureOperationMetrics=$t,exports.withAzureSpan=en,exports.withAzureTimingMetrics=Qt,exports.withAzureUploadMetrics=Xt,exports.withChunkContext=Yr,exports.withChunkDuration=Ur,exports.withCircuitBreakerContext=Ut,exports.withCircuitBreakerSpan=Ht,exports.withExecutionContext=zt,exports.withFilesystemApiMetrics=Sn,exports.withFilesystemOperationMetrics=wn,exports.withFilesystemSpan=Tn,exports.withFilesystemTimingMetrics=Cn,exports.withFilesystemUploadMetrics=xn,exports.withFlowContext=Lt,exports.withFlowDuration=At,exports.withFlowSpan=It,exports.withGCSApiMetrics=Kn,exports.withGCSOperationMetrics=Jn,exports.withGCSSpan=Yn,exports.withGCSTimingMetrics=qn,exports.withGCSUploadMetrics=Gn,exports.withMetricTracking=_t,exports.withNodeContext=Rt,exports.withNodeDuration=jt,exports.withOperationContext=Vt,exports.withOperationSpan=Bt,exports.withParentContext=Ke,exports.withS3ApiMetrics=gr,exports.withS3OperationMetrics=vr,exports.withS3Span=yr,exports.withS3TimingMetrics=_r,exports.withS3UploadMetrics=hr,exports.withStorageOperationMetrics=U,exports.withStorageSpan=w,exports.withThroughputTracking=Ct,exports.withTimingMetrics=H,exports.withUploadContext=Jr,exports.withUploadDuration=Hr,exports.withUploadMetrics=B,exports.withUploadSpan=qr;
|
package/dist/index.d.cts
CHANGED
|
@@ -9,7 +9,7 @@ import { MeterProvider, MeterProvider as MeterProvider$1, PeriodicExportingMetri
|
|
|
9
9
|
import * as _effect_opentelemetry_Resource7 from "@effect/opentelemetry/Resource";
|
|
10
10
|
import { Meter } from "@opentelemetry/api";
|
|
11
11
|
import { Logger as Logger$1, SeverityNumber, SeverityNumber as SeverityNumber$1 } from "@opentelemetry/api-logs";
|
|
12
|
-
import * as
|
|
12
|
+
import * as effect_Metric49 from "effect/Metric";
|
|
13
13
|
|
|
14
14
|
//#region src/core/metrics.d.ts
|
|
15
15
|
declare const createUploadMetrics: (storageType: string) => {
|
|
@@ -626,11 +626,8 @@ declare const logFatal: (message: string, attributes?: Record<string, string | n
|
|
|
626
626
|
* ```
|
|
627
627
|
*/
|
|
628
628
|
type TraceContext = {
|
|
629
|
-
/** 128-bit trace identifier (32 hex characters) */
|
|
630
|
-
|
|
631
|
-
/** 64-bit span identifier (16 hex characters) */
|
|
632
|
-
spanId: string;
|
|
633
|
-
/** Trace flags (1 = sampled) */
|
|
629
|
+
/** 128-bit trace identifier (32 hex characters) */traceId: string; /** 64-bit span identifier (16 hex characters) */
|
|
630
|
+
spanId: string; /** Trace flags (1 = sampled) */
|
|
634
631
|
traceFlags: number;
|
|
635
632
|
};
|
|
636
633
|
//#endregion
|
|
@@ -1246,18 +1243,12 @@ declare const createFlowMetrics: () => {
|
|
|
1246
1243
|
activeNodesGauge: Metric.Metric.Gauge<number>;
|
|
1247
1244
|
pausedFlowsGauge: Metric.Metric.Gauge<number>;
|
|
1248
1245
|
flowLatencySummary: Metric.Metric.Summary<number>;
|
|
1249
|
-
nodeLatencySummary: Metric.Metric.Summary<number>;
|
|
1250
|
-
/** Total number of times circuit breakers
|
|
1251
|
-
|
|
1252
|
-
/** Total number of times circuit breakers
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
|
|
1256
|
-
/** Total number of times circuit breakers transitioned to half-open */
|
|
1257
|
-
circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
|
|
1258
|
-
/** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
|
|
1259
|
-
circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
|
|
1260
|
-
/** Number of failures in circuit breaker sliding window */
|
|
1246
|
+
nodeLatencySummary: Metric.Metric.Summary<number>; /** Total number of times circuit breakers opened */
|
|
1247
|
+
circuitBreakerOpenTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers closed */
|
|
1248
|
+
circuitBreakerCloseTotal: Metric.Metric.Counter<number>; /** Total number of requests rejected by open circuit breakers */
|
|
1249
|
+
circuitBreakerRejectedTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers transitioned to half-open */
|
|
1250
|
+
circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>; /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
|
|
1251
|
+
circuitBreakerStateGauge: Metric.Metric.Gauge<number>; /** Number of failures in circuit breaker sliding window */
|
|
1261
1252
|
circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
|
|
1262
1253
|
};
|
|
1263
1254
|
/**
|
|
@@ -1285,18 +1276,12 @@ declare const flowMetrics: {
|
|
|
1285
1276
|
activeNodesGauge: Metric.Metric.Gauge<number>;
|
|
1286
1277
|
pausedFlowsGauge: Metric.Metric.Gauge<number>;
|
|
1287
1278
|
flowLatencySummary: Metric.Metric.Summary<number>;
|
|
1288
|
-
nodeLatencySummary: Metric.Metric.Summary<number>;
|
|
1289
|
-
/** Total number of times circuit breakers
|
|
1290
|
-
|
|
1291
|
-
/** Total number of times circuit breakers
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
|
|
1295
|
-
/** Total number of times circuit breakers transitioned to half-open */
|
|
1296
|
-
circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
|
|
1297
|
-
/** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
|
|
1298
|
-
circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
|
|
1299
|
-
/** Number of failures in circuit breaker sliding window */
|
|
1279
|
+
nodeLatencySummary: Metric.Metric.Summary<number>; /** Total number of times circuit breakers opened */
|
|
1280
|
+
circuitBreakerOpenTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers closed */
|
|
1281
|
+
circuitBreakerCloseTotal: Metric.Metric.Counter<number>; /** Total number of requests rejected by open circuit breakers */
|
|
1282
|
+
circuitBreakerRejectedTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers transitioned to half-open */
|
|
1283
|
+
circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>; /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
|
|
1284
|
+
circuitBreakerStateGauge: Metric.Metric.Gauge<number>; /** Number of failures in circuit breaker sliding window */
|
|
1300
1285
|
circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
|
|
1301
1286
|
};
|
|
1302
1287
|
//#endregion
|
|
@@ -1433,18 +1418,18 @@ declare const NoOpMetricsServiceLive: Layer.Layer<MetricsService>;
|
|
|
1433
1418
|
//#endregion
|
|
1434
1419
|
//#region src/storage/azure.d.ts
|
|
1435
1420
|
declare const azureMetrics: {
|
|
1436
|
-
uploadLatencySummary:
|
|
1437
|
-
activeUploadsGauge:
|
|
1438
|
-
uploadThroughputGauge:
|
|
1439
|
-
uploadDurationHistogram:
|
|
1440
|
-
partUploadDurationHistogram:
|
|
1441
|
-
fileSizeHistogram:
|
|
1442
|
-
partSizeHistogram:
|
|
1443
|
-
uploadRequestsTotal:
|
|
1444
|
-
uploadPartsTotal:
|
|
1445
|
-
uploadSuccessTotal:
|
|
1446
|
-
uploadErrorsTotal:
|
|
1447
|
-
apiCallsTotal:
|
|
1421
|
+
uploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1422
|
+
activeUploadsGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1423
|
+
uploadThroughputGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1424
|
+
uploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1425
|
+
partUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1426
|
+
fileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1427
|
+
partSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1428
|
+
uploadRequestsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1429
|
+
uploadPartsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1430
|
+
uploadSuccessTotal: effect_Metric49.Metric.Counter<number>;
|
|
1431
|
+
uploadErrorsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1432
|
+
apiCallsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1448
1433
|
};
|
|
1449
1434
|
declare const AzureTracingLayer: Layer.Layer<{
|
|
1450
1435
|
serviceName: string;
|
|
@@ -1455,7 +1440,7 @@ declare const AzureObservabilityLayer: Layer.Layer<{
|
|
|
1455
1440
|
}, never, never>;
|
|
1456
1441
|
declare const withAzureUploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1457
1442
|
declare const withAzureApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1458
|
-
declare const withAzureTimingMetrics: <A, E, R>(metric:
|
|
1443
|
+
declare const withAzureTimingMetrics: <A, E, R>(metric: effect_Metric49.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1459
1444
|
declare const withAzureOperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
1460
1445
|
declare const withAzureSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
1461
1446
|
declare const logAzureOperation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
@@ -1474,23 +1459,23 @@ declare const logAzureUploadCompletion: (uploadId: string, metrics: {
|
|
|
1474
1459
|
retryCount?: number;
|
|
1475
1460
|
}) => Effect.Effect<void, never, never>;
|
|
1476
1461
|
declare const logAzureContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
1477
|
-
declare const azureUploadRequestsTotal:
|
|
1462
|
+
declare const azureUploadRequestsTotal: effect_Metric49.Metric.Counter<number>, azureUploadPartsTotal: effect_Metric49.Metric.Counter<number>, azureUploadSuccessTotal: effect_Metric49.Metric.Counter<number>, azureUploadErrorsTotal: effect_Metric49.Metric.Counter<number>, azureApiCallsTotal: effect_Metric49.Metric.Counter<number>, azureUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azurePartUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azureFileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azurePartSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azureActiveUploadsGauge: effect_Metric49.Metric.Gauge<number>, azureUploadThroughputGauge: effect_Metric49.Metric.Gauge<number>, azureUploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1478
1463
|
type AzureMetrics = StorageMetrics;
|
|
1479
1464
|
//#endregion
|
|
1480
1465
|
//#region src/storage/filesystem.d.ts
|
|
1481
1466
|
declare const filesystemMetrics: {
|
|
1482
|
-
uploadLatencySummary:
|
|
1483
|
-
activeUploadsGauge:
|
|
1484
|
-
uploadThroughputGauge:
|
|
1485
|
-
uploadDurationHistogram:
|
|
1486
|
-
partUploadDurationHistogram:
|
|
1487
|
-
fileSizeHistogram:
|
|
1488
|
-
partSizeHistogram:
|
|
1489
|
-
uploadRequestsTotal:
|
|
1490
|
-
uploadPartsTotal:
|
|
1491
|
-
uploadSuccessTotal:
|
|
1492
|
-
uploadErrorsTotal:
|
|
1493
|
-
apiCallsTotal:
|
|
1467
|
+
uploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1468
|
+
activeUploadsGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1469
|
+
uploadThroughputGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1470
|
+
uploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1471
|
+
partUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1472
|
+
fileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1473
|
+
partSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1474
|
+
uploadRequestsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1475
|
+
uploadPartsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1476
|
+
uploadSuccessTotal: effect_Metric49.Metric.Counter<number>;
|
|
1477
|
+
uploadErrorsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1478
|
+
apiCallsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1494
1479
|
};
|
|
1495
1480
|
declare const FilesystemTracingLayer: Layer.Layer<{
|
|
1496
1481
|
serviceName: string;
|
|
@@ -1501,7 +1486,7 @@ declare const FilesystemObservabilityLayer: Layer.Layer<{
|
|
|
1501
1486
|
}, never, never>;
|
|
1502
1487
|
declare const withFilesystemUploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1503
1488
|
declare const withFilesystemApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1504
|
-
declare const withFilesystemTimingMetrics: <A, E, R>(metric:
|
|
1489
|
+
declare const withFilesystemTimingMetrics: <A, E, R>(metric: effect_Metric49.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1505
1490
|
declare const withFilesystemOperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
1506
1491
|
declare const withFilesystemSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
1507
1492
|
declare const logFilesystemOperation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
@@ -1520,23 +1505,23 @@ declare const logFilesystemUploadCompletion: (uploadId: string, metrics: {
|
|
|
1520
1505
|
retryCount?: number;
|
|
1521
1506
|
}) => Effect.Effect<void, never, never>;
|
|
1522
1507
|
declare const logFilesystemContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
1523
|
-
declare const filesystemUploadRequestsTotal:
|
|
1508
|
+
declare const filesystemUploadRequestsTotal: effect_Metric49.Metric.Counter<number>, filesystemUploadPartsTotal: effect_Metric49.Metric.Counter<number>, filesystemUploadSuccessTotal: effect_Metric49.Metric.Counter<number>, filesystemUploadErrorsTotal: effect_Metric49.Metric.Counter<number>, filesystemApiCallsTotal: effect_Metric49.Metric.Counter<number>, filesystemUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemPartUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemFileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemPartSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemActiveUploadsGauge: effect_Metric49.Metric.Gauge<number>, filesystemUploadThroughputGauge: effect_Metric49.Metric.Gauge<number>, filesystemUploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1524
1509
|
type FilesystemMetrics = StorageMetrics;
|
|
1525
1510
|
//#endregion
|
|
1526
1511
|
//#region src/storage/gcs.d.ts
|
|
1527
1512
|
declare const gcsMetrics: {
|
|
1528
|
-
uploadLatencySummary:
|
|
1529
|
-
activeUploadsGauge:
|
|
1530
|
-
uploadThroughputGauge:
|
|
1531
|
-
uploadDurationHistogram:
|
|
1532
|
-
partUploadDurationHistogram:
|
|
1533
|
-
fileSizeHistogram:
|
|
1534
|
-
partSizeHistogram:
|
|
1535
|
-
uploadRequestsTotal:
|
|
1536
|
-
uploadPartsTotal:
|
|
1537
|
-
uploadSuccessTotal:
|
|
1538
|
-
uploadErrorsTotal:
|
|
1539
|
-
apiCallsTotal:
|
|
1513
|
+
uploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1514
|
+
activeUploadsGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1515
|
+
uploadThroughputGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1516
|
+
uploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1517
|
+
partUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1518
|
+
fileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1519
|
+
partSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1520
|
+
uploadRequestsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1521
|
+
uploadPartsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1522
|
+
uploadSuccessTotal: effect_Metric49.Metric.Counter<number>;
|
|
1523
|
+
uploadErrorsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1524
|
+
apiCallsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1540
1525
|
};
|
|
1541
1526
|
declare const GCSTracingLayer: Layer.Layer<{
|
|
1542
1527
|
serviceName: string;
|
|
@@ -1547,7 +1532,7 @@ declare const GCSObservabilityLayer: Layer.Layer<{
|
|
|
1547
1532
|
}, never, never>;
|
|
1548
1533
|
declare const withGCSUploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1549
1534
|
declare const withGCSApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1550
|
-
declare const withGCSTimingMetrics: <A, E, R>(metric:
|
|
1535
|
+
declare const withGCSTimingMetrics: <A, E, R>(metric: effect_Metric49.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1551
1536
|
declare const withGCSOperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
1552
1537
|
declare const withGCSSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
1553
1538
|
declare const logGCSOperation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
@@ -1566,23 +1551,23 @@ declare const logGCSUploadCompletion: (uploadId: string, metrics: {
|
|
|
1566
1551
|
retryCount?: number;
|
|
1567
1552
|
}) => Effect.Effect<void, never, never>;
|
|
1568
1553
|
declare const logGCSContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
1569
|
-
declare const gcsUploadRequestsTotal:
|
|
1554
|
+
declare const gcsUploadRequestsTotal: effect_Metric49.Metric.Counter<number>, gcsUploadPartsTotal: effect_Metric49.Metric.Counter<number>, gcsUploadSuccessTotal: effect_Metric49.Metric.Counter<number>, gcsUploadErrorsTotal: effect_Metric49.Metric.Counter<number>, gcsApiCallsTotal: effect_Metric49.Metric.Counter<number>, gcsUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsPartUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsFileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsPartSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsActiveUploadsGauge: effect_Metric49.Metric.Gauge<number>, gcsUploadThroughputGauge: effect_Metric49.Metric.Gauge<number>, gcsUploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1570
1555
|
type GCSMetrics = StorageMetrics;
|
|
1571
1556
|
//#endregion
|
|
1572
1557
|
//#region src/storage/s3.d.ts
|
|
1573
1558
|
declare const s3Metrics: {
|
|
1574
|
-
uploadLatencySummary:
|
|
1575
|
-
activeUploadsGauge:
|
|
1576
|
-
uploadThroughputGauge:
|
|
1577
|
-
uploadDurationHistogram:
|
|
1578
|
-
partUploadDurationHistogram:
|
|
1579
|
-
fileSizeHistogram:
|
|
1580
|
-
partSizeHistogram:
|
|
1581
|
-
uploadRequestsTotal:
|
|
1582
|
-
uploadPartsTotal:
|
|
1583
|
-
uploadSuccessTotal:
|
|
1584
|
-
uploadErrorsTotal:
|
|
1585
|
-
apiCallsTotal:
|
|
1559
|
+
uploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1560
|
+
activeUploadsGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1561
|
+
uploadThroughputGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1562
|
+
uploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1563
|
+
partUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1564
|
+
fileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1565
|
+
partSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1566
|
+
uploadRequestsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1567
|
+
uploadPartsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1568
|
+
uploadSuccessTotal: effect_Metric49.Metric.Counter<number>;
|
|
1569
|
+
uploadErrorsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1570
|
+
apiCallsTotal: effect_Metric49.Metric.Counter<number>;
|
|
1586
1571
|
};
|
|
1587
1572
|
declare const S3TracingLayer: Layer.Layer<{
|
|
1588
1573
|
serviceName: string;
|
|
@@ -1593,7 +1578,7 @@ declare const S3ObservabilityLayer: Layer.Layer<{
|
|
|
1593
1578
|
}, never, never>;
|
|
1594
1579
|
declare const withS3UploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1595
1580
|
declare const withS3ApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1596
|
-
declare const withS3TimingMetrics: <A, E, R>(metric:
|
|
1581
|
+
declare const withS3TimingMetrics: <A, E, R>(metric: effect_Metric49.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
1597
1582
|
declare const withS3OperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
1598
1583
|
declare const withS3Span: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
1599
1584
|
declare const logS3Operation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
@@ -1612,7 +1597,7 @@ declare const logS3UploadCompletion: (uploadId: string, metrics: {
|
|
|
1612
1597
|
retryCount?: number;
|
|
1613
1598
|
}) => Effect.Effect<void, never, never>;
|
|
1614
1599
|
declare const logS3Context: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
1615
|
-
declare const s3UploadRequestsTotal:
|
|
1600
|
+
declare const s3UploadRequestsTotal: effect_Metric49.Metric.Counter<number>, s3UploadPartsTotal: effect_Metric49.Metric.Counter<number>, s3UploadSuccessTotal: effect_Metric49.Metric.Counter<number>, s3UploadErrorsTotal: effect_Metric49.Metric.Counter<number>, s3ApiCallsTotal: effect_Metric49.Metric.Counter<number>, s3UploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3PartUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3FileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3PartSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3ActiveUploadsGauge: effect_Metric49.Metric.Gauge<number>, s3UploadThroughputGauge: effect_Metric49.Metric.Gauge<number>, s3UploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1616
1601
|
type S3Metrics = StorageMetrics;
|
|
1617
1602
|
//#endregion
|
|
1618
1603
|
//#region src/upload/metrics.d.ts
|
|
@@ -1713,21 +1698,21 @@ declare const UploadObservabilityTest: Layer.Layer<UploadObservability, never, n
|
|
|
1713
1698
|
* Get metrics for validation (useful for testing metric definitions)
|
|
1714
1699
|
*/
|
|
1715
1700
|
declare const getTestMetrics: () => {
|
|
1716
|
-
uploadCreatedTotal:
|
|
1717
|
-
uploadCompletedTotal:
|
|
1718
|
-
uploadFailedTotal:
|
|
1719
|
-
chunkUploadedTotal:
|
|
1720
|
-
uploadFromUrlTotal:
|
|
1721
|
-
uploadFromUrlSuccessTotal:
|
|
1722
|
-
uploadFromUrlFailedTotal:
|
|
1723
|
-
uploadDurationHistogram:
|
|
1724
|
-
chunkUploadDurationHistogram:
|
|
1725
|
-
uploadFileSizeHistogram:
|
|
1726
|
-
chunkSizeHistogram:
|
|
1727
|
-
activeUploadsGauge:
|
|
1728
|
-
uploadThroughputGauge:
|
|
1729
|
-
uploadLatencySummary:
|
|
1730
|
-
chunkLatencySummary:
|
|
1701
|
+
uploadCreatedTotal: effect_Metric49.Metric.Counter<number>;
|
|
1702
|
+
uploadCompletedTotal: effect_Metric49.Metric.Counter<number>;
|
|
1703
|
+
uploadFailedTotal: effect_Metric49.Metric.Counter<number>;
|
|
1704
|
+
chunkUploadedTotal: effect_Metric49.Metric.Counter<number>;
|
|
1705
|
+
uploadFromUrlTotal: effect_Metric49.Metric.Counter<number>;
|
|
1706
|
+
uploadFromUrlSuccessTotal: effect_Metric49.Metric.Counter<number>;
|
|
1707
|
+
uploadFromUrlFailedTotal: effect_Metric49.Metric.Counter<number>;
|
|
1708
|
+
uploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1709
|
+
chunkUploadDurationHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1710
|
+
uploadFileSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1711
|
+
chunkSizeHistogram: effect_Metric49.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
|
|
1712
|
+
activeUploadsGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1713
|
+
uploadThroughputGauge: effect_Metric49.Metric.Gauge<number>;
|
|
1714
|
+
uploadLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1715
|
+
chunkLatencySummary: effect_Metric49.Metric.Summary<number>;
|
|
1731
1716
|
};
|
|
1732
1717
|
/**
|
|
1733
1718
|
* Validate that all required metrics exist
|