@uploadista/observability 0.0.3 → 0.0.4
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/.turbo/turbo-build.log +19 -2
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +736 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +735 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -14
- package/dist/index.js.map +1 -0
- package/package.json +4 -3
- package/tsdown.config.ts +11 -0
- package/dist/core/errors.d.ts +0 -8
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -108
- package/dist/core/index.d.ts +0 -8
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -8
- package/dist/core/layers.d.ts +0 -104
- package/dist/core/layers.d.ts.map +0 -1
- package/dist/core/layers.js +0 -110
- package/dist/core/logging.d.ts +0 -18
- package/dist/core/logging.d.ts.map +0 -1
- package/dist/core/logging.js +0 -41
- package/dist/core/metrics.d.ts +0 -37
- package/dist/core/metrics.d.ts.map +0 -1
- package/dist/core/metrics.js +0 -72
- package/dist/core/testing.d.ts +0 -43
- package/dist/core/testing.d.ts.map +0 -1
- package/dist/core/testing.js +0 -93
- package/dist/core/tracing.d.ts +0 -19
- package/dist/core/tracing.d.ts.map +0 -1
- package/dist/core/tracing.js +0 -43
- package/dist/core/utilities.d.ts +0 -11
- package/dist/core/utilities.d.ts.map +0 -1
- package/dist/core/utilities.js +0 -41
- package/dist/flow/errors.d.ts +0 -15
- package/dist/flow/errors.d.ts.map +0 -1
- package/dist/flow/errors.js +0 -66
- package/dist/flow/index.d.ts +0 -6
- package/dist/flow/index.d.ts.map +0 -1
- package/dist/flow/index.js +0 -6
- package/dist/flow/layers.d.ts +0 -40
- package/dist/flow/layers.d.ts.map +0 -1
- package/dist/flow/layers.js +0 -94
- package/dist/flow/metrics.d.ts +0 -52
- package/dist/flow/metrics.d.ts.map +0 -1
- package/dist/flow/metrics.js +0 -89
- package/dist/flow/testing.d.ts +0 -11
- package/dist/flow/testing.d.ts.map +0 -1
- package/dist/flow/testing.js +0 -27
- package/dist/flow/tracing.d.ts +0 -35
- package/dist/flow/tracing.d.ts.map +0 -1
- package/dist/flow/tracing.js +0 -42
- package/dist/service/metrics.d.ts +0 -23
- package/dist/service/metrics.d.ts.map +0 -1
- package/dist/service/metrics.js +0 -17
- package/dist/storage/azure.d.ts +0 -47
- package/dist/storage/azure.d.ts.map +0 -1
- package/dist/storage/azure.js +0 -89
- package/dist/storage/filesystem.d.ts +0 -47
- package/dist/storage/filesystem.d.ts.map +0 -1
- package/dist/storage/filesystem.js +0 -70
- package/dist/storage/gcs.d.ts +0 -47
- package/dist/storage/gcs.d.ts.map +0 -1
- package/dist/storage/gcs.js +0 -90
- package/dist/storage/index.d.ts +0 -5
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -5
- package/dist/storage/s3.d.ts +0 -47
- package/dist/storage/s3.d.ts.map +0 -1
- package/dist/storage/s3.js +0 -67
- package/dist/test-observability.d.ts +0 -12
- package/dist/test-observability.d.ts.map +0 -1
- package/dist/test-observability.js +0 -153
- package/dist/upload/errors.d.ts +0 -16
- package/dist/upload/errors.d.ts.map +0 -1
- package/dist/upload/errors.js +0 -107
- package/dist/upload/index.d.ts +0 -6
- package/dist/upload/index.d.ts.map +0 -1
- package/dist/upload/index.js +0 -6
- package/dist/upload/layers.d.ts +0 -32
- package/dist/upload/layers.d.ts.map +0 -1
- package/dist/upload/layers.js +0 -63
- package/dist/upload/metrics.d.ts +0 -46
- package/dist/upload/metrics.d.ts.map +0 -1
- package/dist/upload/metrics.js +0 -80
- package/dist/upload/testing.d.ts +0 -32
- package/dist/upload/testing.d.ts.map +0 -1
- package/dist/upload/testing.js +0 -52
- package/dist/upload/tracing.d.ts +0 -25
- package/dist/upload/tracing.d.ts.map +0 -1
- package/dist/upload/tracing.js +0 -35
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,736 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Metric, Option } from "effect";
|
|
2
|
+
import * as effect_MetricKeyType19 from "effect/MetricKeyType";
|
|
3
|
+
import * as effect_MetricState19 from "effect/MetricState";
|
|
4
|
+
import * as effect_Tracer0 from "effect/Tracer";
|
|
5
|
+
import * as _effect_opentelemetry_Resource0 from "@effect/opentelemetry/Resource";
|
|
6
|
+
import * as effect_Metric0 from "effect/Metric";
|
|
7
|
+
|
|
8
|
+
//#region src/core/metrics.d.ts
|
|
9
|
+
declare const createUploadMetrics: (storageType: string) => {
|
|
10
|
+
uploadRequestsTotal: Metric.Metric.Counter<number>;
|
|
11
|
+
uploadPartsTotal: Metric.Metric.Counter<number>;
|
|
12
|
+
uploadSuccessTotal: Metric.Metric.Counter<number>;
|
|
13
|
+
uploadErrorsTotal: Metric.Metric.Counter<number>;
|
|
14
|
+
apiCallsTotal: Metric.Metric.Counter<number>;
|
|
15
|
+
};
|
|
16
|
+
declare const createUploadHistograms: (storageType: string) => {
|
|
17
|
+
uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
18
|
+
partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
19
|
+
fileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
20
|
+
partSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
21
|
+
};
|
|
22
|
+
declare const createUploadGauges: (storageType: string) => {
|
|
23
|
+
activeUploadsGauge: Metric.Metric.Gauge<number>;
|
|
24
|
+
uploadThroughputGauge: Metric.Metric.Gauge<number>;
|
|
25
|
+
};
|
|
26
|
+
declare const createUploadSummaries: (storageType: string) => {
|
|
27
|
+
uploadLatencySummary: Metric.Metric.Summary<number>;
|
|
28
|
+
};
|
|
29
|
+
declare const createStorageMetrics: (storageType: string) => {
|
|
30
|
+
uploadLatencySummary: Metric.Metric.Summary<number>;
|
|
31
|
+
activeUploadsGauge: Metric.Metric.Gauge<number>;
|
|
32
|
+
uploadThroughputGauge: Metric.Metric.Gauge<number>;
|
|
33
|
+
uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
34
|
+
partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
35
|
+
fileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
36
|
+
partSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
37
|
+
uploadRequestsTotal: Metric.Metric.Counter<number>;
|
|
38
|
+
uploadPartsTotal: Metric.Metric.Counter<number>;
|
|
39
|
+
uploadSuccessTotal: Metric.Metric.Counter<number>;
|
|
40
|
+
uploadErrorsTotal: Metric.Metric.Counter<number>;
|
|
41
|
+
apiCallsTotal: Metric.Metric.Counter<number>;
|
|
42
|
+
};
|
|
43
|
+
type StorageMetrics = ReturnType<typeof createStorageMetrics>;
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/core/errors.d.ts
|
|
46
|
+
type StorageErrorCategory = "network_error" | "authentication_error" | "authorization_error" | "throttling_error" | "server_error" | "client_error" | "unknown_error";
|
|
47
|
+
declare const classifyStorageError: (error: unknown) => StorageErrorCategory;
|
|
48
|
+
declare const createStorageErrorClassifier: (storageType: string, customErrorMapping?: (error: unknown) => StorageErrorCategory | null) => (error: unknown) => StorageErrorCategory;
|
|
49
|
+
declare const trackStorageError: (storageType: string, metrics: StorageMetrics, operation: string, error: unknown, context?: Record<string, unknown>, errorClassifier?: (error: unknown) => StorageErrorCategory) => Effect.Effect<void, never, never>;
|
|
50
|
+
declare const createStorageErrorTracker: (storageType: string, metrics: StorageMetrics, customErrorClassifier?: (error: unknown) => StorageErrorCategory | null) => (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/core/layers.d.ts
|
|
53
|
+
/**
|
|
54
|
+
* Core observability service providing tracing, metrics, and logging capabilities
|
|
55
|
+
*/
|
|
56
|
+
interface ObservabilityService {
|
|
57
|
+
readonly serviceName: string;
|
|
58
|
+
readonly enabled: boolean;
|
|
59
|
+
}
|
|
60
|
+
declare const Observability_base: Context.TagClass<Observability, "Observability", ObservabilityService>;
|
|
61
|
+
/**
|
|
62
|
+
* Observability service tag for Effect Context
|
|
63
|
+
*/
|
|
64
|
+
declare class Observability extends Observability_base {}
|
|
65
|
+
/**
|
|
66
|
+
* Storage observability service extending base observability with storage-specific metrics
|
|
67
|
+
*/
|
|
68
|
+
interface StorageObservabilityService extends ObservabilityService {
|
|
69
|
+
readonly storageType: string;
|
|
70
|
+
readonly metrics: StorageMetrics;
|
|
71
|
+
}
|
|
72
|
+
declare const StorageObservability_base: Context.TagClass<StorageObservability, "StorageObservability", StorageObservabilityService>;
|
|
73
|
+
/**
|
|
74
|
+
* Storage observability service tag
|
|
75
|
+
*/
|
|
76
|
+
declare class StorageObservability extends StorageObservability_base {}
|
|
77
|
+
/**
|
|
78
|
+
* Upload observability service for upload-specific operations
|
|
79
|
+
*/
|
|
80
|
+
interface UploadObservabilityService extends ObservabilityService {
|
|
81
|
+
readonly metrics: {
|
|
82
|
+
uploadCreated: Effect.Effect<void>;
|
|
83
|
+
uploadCompleted: Effect.Effect<void>;
|
|
84
|
+
uploadFailed: Effect.Effect<void>;
|
|
85
|
+
chunkUploaded: Effect.Effect<void>;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
declare const UploadObservability_base: Context.TagClass<UploadObservability, "UploadObservability", UploadObservabilityService>;
|
|
89
|
+
/**
|
|
90
|
+
* Upload observability service tag
|
|
91
|
+
*/
|
|
92
|
+
declare class UploadObservability extends UploadObservability_base {}
|
|
93
|
+
/**
|
|
94
|
+
* Flow observability service for flow execution operations
|
|
95
|
+
*/
|
|
96
|
+
interface FlowObservabilityService extends ObservabilityService {
|
|
97
|
+
readonly metrics: {
|
|
98
|
+
flowStarted: Effect.Effect<void>;
|
|
99
|
+
flowCompleted: Effect.Effect<void>;
|
|
100
|
+
flowFailed: Effect.Effect<void>;
|
|
101
|
+
nodeExecuted: Effect.Effect<void>;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
declare const FlowObservability_base: Context.TagClass<FlowObservability, "FlowObservability", FlowObservabilityService>;
|
|
105
|
+
/**
|
|
106
|
+
* Flow observability service tag
|
|
107
|
+
*/
|
|
108
|
+
declare class FlowObservability extends FlowObservability_base {}
|
|
109
|
+
/**
|
|
110
|
+
* Create a base observability layer
|
|
111
|
+
*/
|
|
112
|
+
declare const makeObservabilityLayer: (serviceName: string, enabled?: boolean) => Layer.Layer<Observability>;
|
|
113
|
+
/**
|
|
114
|
+
* Create a storage observability layer
|
|
115
|
+
*/
|
|
116
|
+
declare const makeStorageObservabilityLayer: (storageType: string, metrics: StorageMetrics, enabled?: boolean) => Layer.Layer<StorageObservability>;
|
|
117
|
+
/**
|
|
118
|
+
* Create an upload observability layer
|
|
119
|
+
*/
|
|
120
|
+
declare const makeUploadObservabilityLayer: (enabled?: boolean) => Layer.Layer<UploadObservability>;
|
|
121
|
+
/**
|
|
122
|
+
* Create a flow observability layer
|
|
123
|
+
*/
|
|
124
|
+
declare const makeFlowObservabilityLayer: (enabled?: boolean) => Layer.Layer<FlowObservability>;
|
|
125
|
+
/**
|
|
126
|
+
* No-op observability layer (disabled)
|
|
127
|
+
*/
|
|
128
|
+
declare const ObservabilityDisabled: Layer.Layer<Observability, never, never>;
|
|
129
|
+
/**
|
|
130
|
+
* No-op storage observability layer
|
|
131
|
+
*/
|
|
132
|
+
declare const StorageObservabilityDisabled: (storageType: string) => Layer.Layer<StorageObservability, never, never>;
|
|
133
|
+
/**
|
|
134
|
+
* No-op upload observability layer
|
|
135
|
+
*/
|
|
136
|
+
declare const UploadObservabilityDisabled: Layer.Layer<UploadObservability, never, never>;
|
|
137
|
+
/**
|
|
138
|
+
* No-op flow observability layer
|
|
139
|
+
*/
|
|
140
|
+
declare const FlowObservabilityDisabled: Layer.Layer<FlowObservability, never, never>;
|
|
141
|
+
/**
|
|
142
|
+
* Check if observability is enabled in the current context
|
|
143
|
+
*/
|
|
144
|
+
declare const isObservabilityEnabled: Effect.Effect<boolean, never, never>;
|
|
145
|
+
/**
|
|
146
|
+
* Execute an effect only if observability is enabled
|
|
147
|
+
*/
|
|
148
|
+
declare const whenObservabilityEnabled: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R | Observability>;
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/core/logging.d.ts
|
|
151
|
+
declare const logWithContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
152
|
+
declare const logUploadProgress: (storageType: string, uploadId: string, progress: {
|
|
153
|
+
uploadedBytes: number;
|
|
154
|
+
totalBytes: number;
|
|
155
|
+
partNumber?: number;
|
|
156
|
+
speed?: number;
|
|
157
|
+
}) => Effect.Effect<void, never, never>;
|
|
158
|
+
declare const logStorageOperation: (storageType: string, operation: string, uploadId: string, metadata?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
159
|
+
declare const logUploadCompletion: (storageType: string, uploadId: string, metrics: {
|
|
160
|
+
fileSize: number;
|
|
161
|
+
totalDurationMs: number;
|
|
162
|
+
partsCount?: number;
|
|
163
|
+
averagePartSize?: number;
|
|
164
|
+
throughputBps?: number;
|
|
165
|
+
retryCount?: number;
|
|
166
|
+
}) => Effect.Effect<void, never, never>;
|
|
167
|
+
//#endregion
|
|
168
|
+
//#region src/core/testing.d.ts
|
|
169
|
+
/**
|
|
170
|
+
* Mock storage observability for testing
|
|
171
|
+
*/
|
|
172
|
+
declare const makeTestStorageObservability: (storageType: string) => Layer.Layer<StorageObservability>;
|
|
173
|
+
/**
|
|
174
|
+
* Mock upload observability for testing
|
|
175
|
+
*/
|
|
176
|
+
declare const makeTestUploadObservability: () => Layer.Layer<UploadObservability>;
|
|
177
|
+
/**
|
|
178
|
+
* Mock flow observability for testing
|
|
179
|
+
*/
|
|
180
|
+
declare const makeTestFlowObservability: () => Layer.Layer<FlowObservability>;
|
|
181
|
+
/**
|
|
182
|
+
* Capture metrics snapshot from an effect for testing
|
|
183
|
+
* Note: Metric snapshots are simplified - for full metric testing,
|
|
184
|
+
* use Effect's built-in metric testing utilities
|
|
185
|
+
*/
|
|
186
|
+
declare const captureMetrics: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
187
|
+
/**
|
|
188
|
+
* Test helper to capture metrics around effect execution
|
|
189
|
+
* This is a simplified version - for production testing,
|
|
190
|
+
* use Effect's metric testing utilities
|
|
191
|
+
*/
|
|
192
|
+
declare const withMetricTracking: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
193
|
+
/**
|
|
194
|
+
* Test fixture for observability testing
|
|
195
|
+
*/
|
|
196
|
+
interface ObservabilityTestFixture {
|
|
197
|
+
readonly storageObservability: Layer.Layer<StorageObservability>;
|
|
198
|
+
readonly uploadObservability: Layer.Layer<UploadObservability>;
|
|
199
|
+
readonly flowObservability: Layer.Layer<FlowObservability>;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Create a complete test fixture with all observability layers
|
|
203
|
+
*/
|
|
204
|
+
declare const createTestFixture: (storageType?: string) => ObservabilityTestFixture;
|
|
205
|
+
/**
|
|
206
|
+
* Run an effect with test observability layers
|
|
207
|
+
*/
|
|
208
|
+
declare const runWithTestObservability: <A, E>(effect: Effect.Effect<A, E, StorageObservability | UploadObservability | FlowObservability>, storageType?: string) => Effect.Effect<A, E>;
|
|
209
|
+
//#endregion
|
|
210
|
+
//#region src/core/tracing.d.ts
|
|
211
|
+
declare const TracingService: Context.Tag<{
|
|
212
|
+
serviceName: string;
|
|
213
|
+
}, {
|
|
214
|
+
serviceName: string;
|
|
215
|
+
}>;
|
|
216
|
+
declare const createTracingLayer: (options?: {
|
|
217
|
+
serviceName?: string;
|
|
218
|
+
}) => Layer.Layer<{
|
|
219
|
+
serviceName: string;
|
|
220
|
+
}, never, never>;
|
|
221
|
+
declare const createStorageTracingLayer: (storageType: string) => Layer.Layer<{
|
|
222
|
+
serviceName: string;
|
|
223
|
+
}, never, never>;
|
|
224
|
+
declare const withStorageSpan: <A, E, R>(operation: string, storageType: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, effect_Tracer0.ParentSpan>>;
|
|
225
|
+
declare const WebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
226
|
+
declare const NodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
227
|
+
declare const WorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
|
|
228
|
+
//#endregion
|
|
229
|
+
//#region src/core/utilities.d.ts
|
|
230
|
+
declare const withUploadMetrics: <A, E, R>(metrics: StorageMetrics, uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
231
|
+
declare const withApiMetrics: <A, E, R>(metrics: StorageMetrics, operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
232
|
+
declare const withTimingMetrics: <A, E, R>(metric: Metric.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
233
|
+
declare const trackFileSize: <A, E, R>(metrics: StorageMetrics, fileSize: number, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
234
|
+
declare const trackPartSize: <A, E, R>(metrics: StorageMetrics, partSize: number, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
235
|
+
declare const withActiveUploadTracking: <A, E, R>(metrics: StorageMetrics, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
236
|
+
declare const withThroughputTracking: <A, E, R>(metrics: StorageMetrics, bytes: number, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
237
|
+
declare const withStorageOperationMetrics: <A, E, R>(metrics: StorageMetrics, operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
238
|
+
//#endregion
|
|
239
|
+
//#region src/flow/metrics.d.ts
|
|
240
|
+
/**
|
|
241
|
+
* Flow engine metrics for tracking flow execution operations
|
|
242
|
+
*/
|
|
243
|
+
declare const createFlowMetrics: () => {
|
|
244
|
+
flowStartedTotal: Metric.Metric.Counter<number>;
|
|
245
|
+
flowCompletedTotal: Metric.Metric.Counter<number>;
|
|
246
|
+
flowFailedTotal: Metric.Metric.Counter<number>;
|
|
247
|
+
flowPausedTotal: Metric.Metric.Counter<number>;
|
|
248
|
+
flowResumedTotal: Metric.Metric.Counter<number>;
|
|
249
|
+
nodeExecutedTotal: Metric.Metric.Counter<number>;
|
|
250
|
+
nodeSuccessTotal: Metric.Metric.Counter<number>;
|
|
251
|
+
nodeFailedTotal: Metric.Metric.Counter<number>;
|
|
252
|
+
nodeSkippedTotal: Metric.Metric.Counter<number>;
|
|
253
|
+
flowDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
254
|
+
nodeDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
255
|
+
flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
256
|
+
parallelNodesHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
257
|
+
activeFlowsGauge: Metric.Metric.Gauge<number>;
|
|
258
|
+
activeNodesGauge: Metric.Metric.Gauge<number>;
|
|
259
|
+
pausedFlowsGauge: Metric.Metric.Gauge<number>;
|
|
260
|
+
flowLatencySummary: Metric.Metric.Summary<number>;
|
|
261
|
+
nodeLatencySummary: Metric.Metric.Summary<number>;
|
|
262
|
+
};
|
|
263
|
+
/**
|
|
264
|
+
* Type for flow metrics
|
|
265
|
+
*/
|
|
266
|
+
type FlowMetrics = ReturnType<typeof createFlowMetrics>;
|
|
267
|
+
/**
|
|
268
|
+
* Default flow metrics instance
|
|
269
|
+
*/
|
|
270
|
+
declare const flowMetrics: {
|
|
271
|
+
flowStartedTotal: Metric.Metric.Counter<number>;
|
|
272
|
+
flowCompletedTotal: Metric.Metric.Counter<number>;
|
|
273
|
+
flowFailedTotal: Metric.Metric.Counter<number>;
|
|
274
|
+
flowPausedTotal: Metric.Metric.Counter<number>;
|
|
275
|
+
flowResumedTotal: Metric.Metric.Counter<number>;
|
|
276
|
+
nodeExecutedTotal: Metric.Metric.Counter<number>;
|
|
277
|
+
nodeSuccessTotal: Metric.Metric.Counter<number>;
|
|
278
|
+
nodeFailedTotal: Metric.Metric.Counter<number>;
|
|
279
|
+
nodeSkippedTotal: Metric.Metric.Counter<number>;
|
|
280
|
+
flowDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
281
|
+
nodeDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
282
|
+
flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
283
|
+
parallelNodesHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
284
|
+
activeFlowsGauge: Metric.Metric.Gauge<number>;
|
|
285
|
+
activeNodesGauge: Metric.Metric.Gauge<number>;
|
|
286
|
+
pausedFlowsGauge: Metric.Metric.Gauge<number>;
|
|
287
|
+
flowLatencySummary: Metric.Metric.Summary<number>;
|
|
288
|
+
nodeLatencySummary: Metric.Metric.Summary<number>;
|
|
289
|
+
};
|
|
290
|
+
//#endregion
|
|
291
|
+
//#region src/flow/tracing.d.ts
|
|
292
|
+
/**
|
|
293
|
+
* Wrap an Effect with a flow operation span
|
|
294
|
+
*/
|
|
295
|
+
declare const withFlowSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
296
|
+
/**
|
|
297
|
+
* Add flow context to the current span
|
|
298
|
+
*/
|
|
299
|
+
declare const withFlowContext: (context: {
|
|
300
|
+
flowId?: string;
|
|
301
|
+
flowName?: string;
|
|
302
|
+
jobId?: string;
|
|
303
|
+
nodeCount?: number;
|
|
304
|
+
storageId?: string;
|
|
305
|
+
}) => Effect.Effect<void, never, never>;
|
|
306
|
+
/**
|
|
307
|
+
* Add node context to the current span
|
|
308
|
+
*/
|
|
309
|
+
declare const withNodeContext: (context: {
|
|
310
|
+
nodeId: string;
|
|
311
|
+
nodeType: string;
|
|
312
|
+
nodeName?: string;
|
|
313
|
+
flowId?: string;
|
|
314
|
+
jobId?: string;
|
|
315
|
+
}) => Effect.Effect<void, never, never>;
|
|
316
|
+
/**
|
|
317
|
+
* Add execution state context to the current span
|
|
318
|
+
*/
|
|
319
|
+
declare const withExecutionContext: (context: {
|
|
320
|
+
executionOrder?: string[];
|
|
321
|
+
currentIndex?: number;
|
|
322
|
+
totalNodes?: number;
|
|
323
|
+
parallelCount?: number;
|
|
324
|
+
}) => Effect.Effect<void, never, never>;
|
|
325
|
+
//#endregion
|
|
326
|
+
//#region src/flow/layers.d.ts
|
|
327
|
+
/**
|
|
328
|
+
* Create a live flow observability layer with full metrics
|
|
329
|
+
*/
|
|
330
|
+
declare const makeFlowObservabilityLive: (serviceName?: string) => Layer.Layer<FlowObservability>;
|
|
331
|
+
/**
|
|
332
|
+
* Default live flow observability layer
|
|
333
|
+
*/
|
|
334
|
+
declare const FlowObservabilityLive: Layer.Layer<FlowObservability, never, never>;
|
|
335
|
+
/**
|
|
336
|
+
* Helper to get flow metrics from context
|
|
337
|
+
*/
|
|
338
|
+
declare const getFlowMetrics: Effect.Effect<{
|
|
339
|
+
flowStarted: Effect.Effect<void>;
|
|
340
|
+
flowCompleted: Effect.Effect<void>;
|
|
341
|
+
flowFailed: Effect.Effect<void>;
|
|
342
|
+
nodeExecuted: Effect.Effect<void>;
|
|
343
|
+
}, never, FlowObservability>;
|
|
344
|
+
/**
|
|
345
|
+
* Helper to track flow duration
|
|
346
|
+
*/
|
|
347
|
+
declare const withFlowDuration: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
348
|
+
/**
|
|
349
|
+
* Helper to track node duration
|
|
350
|
+
*/
|
|
351
|
+
declare const withNodeDuration: <A, E, R>(nodeId: string, nodeType: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
352
|
+
/**
|
|
353
|
+
* Helper to track active flows
|
|
354
|
+
*/
|
|
355
|
+
declare const trackActiveFlow: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
356
|
+
/**
|
|
357
|
+
* Helper to track active nodes
|
|
358
|
+
*/
|
|
359
|
+
declare const trackActiveNode: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
360
|
+
//#endregion
|
|
361
|
+
//#region src/flow/errors.d.ts
|
|
362
|
+
type FlowErrorCategory = "flow_validation_error" | "node_execution_error" | "node_not_found_error" | "flow_timeout_error" | "flow_cancelled_error" | "unknown_flow_error";
|
|
363
|
+
/**
|
|
364
|
+
* Classify flow execution errors
|
|
365
|
+
*/
|
|
366
|
+
declare const classifyFlowError: (error: unknown) => FlowErrorCategory;
|
|
367
|
+
/**
|
|
368
|
+
* Track flow errors with classification
|
|
369
|
+
*/
|
|
370
|
+
declare const trackFlowError: <E>(error: E) => Effect.Effect<void, never, never>;
|
|
371
|
+
/**
|
|
372
|
+
* Track node errors with classification
|
|
373
|
+
*/
|
|
374
|
+
declare const trackNodeError: <E>(nodeId: string, nodeType: string, error: E) => Effect.Effect<void, never, never>;
|
|
375
|
+
//#endregion
|
|
376
|
+
//#region src/flow/testing.d.ts
|
|
377
|
+
/**
|
|
378
|
+
* Mock flow observability for testing
|
|
379
|
+
*/
|
|
380
|
+
declare const makeTestFlowObservability$1: () => Layer.Layer<FlowObservability>;
|
|
381
|
+
/**
|
|
382
|
+
* Run an effect with test flow observability
|
|
383
|
+
*/
|
|
384
|
+
declare const runWithTestFlowObservability: <A, E>(effect: Effect.Effect<A, E, FlowObservability>) => Effect.Effect<A, E>;
|
|
385
|
+
//#endregion
|
|
386
|
+
//#region src/service/metrics.d.ts
|
|
387
|
+
declare const MetricsService_base: Context.TagClass<MetricsService, "MetricsService", {
|
|
388
|
+
/**
|
|
389
|
+
* Record upload metrics for an organization
|
|
390
|
+
*/
|
|
391
|
+
readonly recordUpload: (clientId: string, bytes: number, metadata?: Record<string, unknown>) => Effect.Effect<void, never>;
|
|
392
|
+
}>;
|
|
393
|
+
/**
|
|
394
|
+
* Metrics Recording Service
|
|
395
|
+
*
|
|
396
|
+
* Provides access to metrics recording functionality throughout
|
|
397
|
+
* the upload and flow processing pipeline. The service is provided
|
|
398
|
+
* via Effect Layer and can be accessed using Effect.service().
|
|
399
|
+
*/
|
|
400
|
+
declare class MetricsService extends MetricsService_base {}
|
|
401
|
+
/**
|
|
402
|
+
* No-op implementation of MetricsService that does nothing.
|
|
403
|
+
* Used when metrics are disabled or database is not available.
|
|
404
|
+
*/
|
|
405
|
+
declare const NoOpMetricsServiceLive: Layer.Layer<MetricsService>;
|
|
406
|
+
//#endregion
|
|
407
|
+
//#region src/storage/s3.d.ts
|
|
408
|
+
declare const s3Metrics: {
|
|
409
|
+
uploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
410
|
+
activeUploadsGauge: effect_Metric0.Metric.Gauge<number>;
|
|
411
|
+
uploadThroughputGauge: effect_Metric0.Metric.Gauge<number>;
|
|
412
|
+
uploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
413
|
+
partUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
414
|
+
fileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
415
|
+
partSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
416
|
+
uploadRequestsTotal: effect_Metric0.Metric.Counter<number>;
|
|
417
|
+
uploadPartsTotal: effect_Metric0.Metric.Counter<number>;
|
|
418
|
+
uploadSuccessTotal: effect_Metric0.Metric.Counter<number>;
|
|
419
|
+
uploadErrorsTotal: effect_Metric0.Metric.Counter<number>;
|
|
420
|
+
apiCallsTotal: effect_Metric0.Metric.Counter<number>;
|
|
421
|
+
};
|
|
422
|
+
declare const S3TracingLayer: Layer.Layer<{
|
|
423
|
+
serviceName: string;
|
|
424
|
+
}, never, never>;
|
|
425
|
+
declare const trackS3Error: (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
426
|
+
declare const S3ObservabilityLayer: Layer.Layer<{
|
|
427
|
+
serviceName: string;
|
|
428
|
+
}, never, never>;
|
|
429
|
+
declare const withS3UploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
430
|
+
declare const withS3ApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
431
|
+
declare const withS3TimingMetrics: <A, E, R>(metric: effect_Metric0.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
432
|
+
declare const withS3OperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
433
|
+
declare const withS3Span: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
434
|
+
declare const logS3Operation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
435
|
+
declare const logS3UploadProgress: (uploadId: string, progress: {
|
|
436
|
+
uploadedBytes: number;
|
|
437
|
+
totalBytes: number;
|
|
438
|
+
partNumber?: number;
|
|
439
|
+
speed?: number;
|
|
440
|
+
}) => Effect.Effect<void, never, never>;
|
|
441
|
+
declare const logS3UploadCompletion: (uploadId: string, metrics: {
|
|
442
|
+
fileSize: number;
|
|
443
|
+
totalDurationMs: number;
|
|
444
|
+
partsCount?: number;
|
|
445
|
+
averagePartSize?: number;
|
|
446
|
+
throughputBps?: number;
|
|
447
|
+
retryCount?: number;
|
|
448
|
+
}) => Effect.Effect<void, never, never>;
|
|
449
|
+
declare const logS3Context: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
450
|
+
declare const s3UploadRequestsTotal: effect_Metric0.Metric.Counter<number>, s3UploadPartsTotal: effect_Metric0.Metric.Counter<number>, s3UploadSuccessTotal: effect_Metric0.Metric.Counter<number>, s3UploadErrorsTotal: effect_Metric0.Metric.Counter<number>, s3ApiCallsTotal: effect_Metric0.Metric.Counter<number>, s3UploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3PartUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3FileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3PartSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3ActiveUploadsGauge: effect_Metric0.Metric.Gauge<number>, s3UploadThroughputGauge: effect_Metric0.Metric.Gauge<number>, s3UploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
451
|
+
type S3Metrics = StorageMetrics;
|
|
452
|
+
//#endregion
|
|
453
|
+
//#region src/storage/azure.d.ts
|
|
454
|
+
declare const azureMetrics: {
|
|
455
|
+
uploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
456
|
+
activeUploadsGauge: effect_Metric0.Metric.Gauge<number>;
|
|
457
|
+
uploadThroughputGauge: effect_Metric0.Metric.Gauge<number>;
|
|
458
|
+
uploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
459
|
+
partUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
460
|
+
fileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
461
|
+
partSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
462
|
+
uploadRequestsTotal: effect_Metric0.Metric.Counter<number>;
|
|
463
|
+
uploadPartsTotal: effect_Metric0.Metric.Counter<number>;
|
|
464
|
+
uploadSuccessTotal: effect_Metric0.Metric.Counter<number>;
|
|
465
|
+
uploadErrorsTotal: effect_Metric0.Metric.Counter<number>;
|
|
466
|
+
apiCallsTotal: effect_Metric0.Metric.Counter<number>;
|
|
467
|
+
};
|
|
468
|
+
declare const AzureTracingLayer: Layer.Layer<{
|
|
469
|
+
serviceName: string;
|
|
470
|
+
}, never, never>;
|
|
471
|
+
declare const trackAzureError: (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
472
|
+
declare const AzureObservabilityLayer: Layer.Layer<{
|
|
473
|
+
serviceName: string;
|
|
474
|
+
}, never, never>;
|
|
475
|
+
declare const withAzureUploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
476
|
+
declare const withAzureApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
477
|
+
declare const withAzureTimingMetrics: <A, E, R>(metric: effect_Metric0.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
478
|
+
declare const withAzureOperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
479
|
+
declare const withAzureSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
480
|
+
declare const logAzureOperation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
481
|
+
declare const logAzureUploadProgress: (uploadId: string, progress: {
|
|
482
|
+
uploadedBytes: number;
|
|
483
|
+
totalBytes: number;
|
|
484
|
+
partNumber?: number;
|
|
485
|
+
speed?: number;
|
|
486
|
+
}) => Effect.Effect<void, never, never>;
|
|
487
|
+
declare const logAzureUploadCompletion: (uploadId: string, metrics: {
|
|
488
|
+
fileSize: number;
|
|
489
|
+
totalDurationMs: number;
|
|
490
|
+
partsCount?: number;
|
|
491
|
+
averagePartSize?: number;
|
|
492
|
+
throughputBps?: number;
|
|
493
|
+
retryCount?: number;
|
|
494
|
+
}) => Effect.Effect<void, never, never>;
|
|
495
|
+
declare const logAzureContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
496
|
+
declare const azureUploadRequestsTotal: effect_Metric0.Metric.Counter<number>, azureUploadPartsTotal: effect_Metric0.Metric.Counter<number>, azureUploadSuccessTotal: effect_Metric0.Metric.Counter<number>, azureUploadErrorsTotal: effect_Metric0.Metric.Counter<number>, azureApiCallsTotal: effect_Metric0.Metric.Counter<number>, azureUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azurePartUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azureFileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azurePartSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azureActiveUploadsGauge: effect_Metric0.Metric.Gauge<number>, azureUploadThroughputGauge: effect_Metric0.Metric.Gauge<number>, azureUploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
497
|
+
type AzureMetrics = StorageMetrics;
|
|
498
|
+
//#endregion
|
|
499
|
+
//#region src/storage/gcs.d.ts
|
|
500
|
+
declare const gcsMetrics: {
|
|
501
|
+
uploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
502
|
+
activeUploadsGauge: effect_Metric0.Metric.Gauge<number>;
|
|
503
|
+
uploadThroughputGauge: effect_Metric0.Metric.Gauge<number>;
|
|
504
|
+
uploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
505
|
+
partUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
506
|
+
fileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
507
|
+
partSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
508
|
+
uploadRequestsTotal: effect_Metric0.Metric.Counter<number>;
|
|
509
|
+
uploadPartsTotal: effect_Metric0.Metric.Counter<number>;
|
|
510
|
+
uploadSuccessTotal: effect_Metric0.Metric.Counter<number>;
|
|
511
|
+
uploadErrorsTotal: effect_Metric0.Metric.Counter<number>;
|
|
512
|
+
apiCallsTotal: effect_Metric0.Metric.Counter<number>;
|
|
513
|
+
};
|
|
514
|
+
declare const GCSTracingLayer: Layer.Layer<{
|
|
515
|
+
serviceName: string;
|
|
516
|
+
}, never, never>;
|
|
517
|
+
declare const trackGCSError: (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
518
|
+
declare const GCSObservabilityLayer: Layer.Layer<{
|
|
519
|
+
serviceName: string;
|
|
520
|
+
}, never, never>;
|
|
521
|
+
declare const withGCSUploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
522
|
+
declare const withGCSApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
523
|
+
declare const withGCSTimingMetrics: <A, E, R>(metric: effect_Metric0.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
524
|
+
declare const withGCSOperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
525
|
+
declare const withGCSSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
526
|
+
declare const logGCSOperation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
527
|
+
declare const logGCSUploadProgress: (uploadId: string, progress: {
|
|
528
|
+
uploadedBytes: number;
|
|
529
|
+
totalBytes: number;
|
|
530
|
+
partNumber?: number;
|
|
531
|
+
speed?: number;
|
|
532
|
+
}) => Effect.Effect<void, never, never>;
|
|
533
|
+
declare const logGCSUploadCompletion: (uploadId: string, metrics: {
|
|
534
|
+
fileSize: number;
|
|
535
|
+
totalDurationMs: number;
|
|
536
|
+
partsCount?: number;
|
|
537
|
+
averagePartSize?: number;
|
|
538
|
+
throughputBps?: number;
|
|
539
|
+
retryCount?: number;
|
|
540
|
+
}) => Effect.Effect<void, never, never>;
|
|
541
|
+
declare const logGCSContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
542
|
+
declare const gcsUploadRequestsTotal: effect_Metric0.Metric.Counter<number>, gcsUploadPartsTotal: effect_Metric0.Metric.Counter<number>, gcsUploadSuccessTotal: effect_Metric0.Metric.Counter<number>, gcsUploadErrorsTotal: effect_Metric0.Metric.Counter<number>, gcsApiCallsTotal: effect_Metric0.Metric.Counter<number>, gcsUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsPartUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsFileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsPartSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsActiveUploadsGauge: effect_Metric0.Metric.Gauge<number>, gcsUploadThroughputGauge: effect_Metric0.Metric.Gauge<number>, gcsUploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
543
|
+
type GCSMetrics = StorageMetrics;
|
|
544
|
+
//#endregion
|
|
545
|
+
//#region src/storage/filesystem.d.ts
|
|
546
|
+
declare const filesystemMetrics: {
|
|
547
|
+
uploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
548
|
+
activeUploadsGauge: effect_Metric0.Metric.Gauge<number>;
|
|
549
|
+
uploadThroughputGauge: effect_Metric0.Metric.Gauge<number>;
|
|
550
|
+
uploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
551
|
+
partUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
552
|
+
fileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
553
|
+
partSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
554
|
+
uploadRequestsTotal: effect_Metric0.Metric.Counter<number>;
|
|
555
|
+
uploadPartsTotal: effect_Metric0.Metric.Counter<number>;
|
|
556
|
+
uploadSuccessTotal: effect_Metric0.Metric.Counter<number>;
|
|
557
|
+
uploadErrorsTotal: effect_Metric0.Metric.Counter<number>;
|
|
558
|
+
apiCallsTotal: effect_Metric0.Metric.Counter<number>;
|
|
559
|
+
};
|
|
560
|
+
declare const FilesystemTracingLayer: Layer.Layer<{
|
|
561
|
+
serviceName: string;
|
|
562
|
+
}, never, never>;
|
|
563
|
+
declare const trackFilesystemError: (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
564
|
+
declare const FilesystemObservabilityLayer: Layer.Layer<{
|
|
565
|
+
serviceName: string;
|
|
566
|
+
}, never, never>;
|
|
567
|
+
declare const withFilesystemUploadMetrics: <A, E, R>(uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
568
|
+
declare const withFilesystemApiMetrics: <A, E, R>(operation: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
569
|
+
declare const withFilesystemTimingMetrics: <A, E, R>(metric: effect_Metric0.Metric.Histogram<number>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
570
|
+
declare const withFilesystemOperationMetrics: <A, E, R>(operation: string, uploadId: string, effect: Effect.Effect<A, E, R>, fileSize?: number) => Effect.Effect<A, E, R>;
|
|
571
|
+
declare const withFilesystemSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<unknown, unknown, unknown>;
|
|
572
|
+
declare const logFilesystemOperation: (operation: string, uploadId: string, metadata?: Record<string, unknown> | undefined) => Effect.Effect<void, never, never>;
|
|
573
|
+
declare const logFilesystemUploadProgress: (uploadId: string, progress: {
|
|
574
|
+
uploadedBytes: number;
|
|
575
|
+
totalBytes: number;
|
|
576
|
+
partNumber?: number;
|
|
577
|
+
speed?: number;
|
|
578
|
+
}) => Effect.Effect<void, never, never>;
|
|
579
|
+
declare const logFilesystemUploadCompletion: (uploadId: string, metrics: {
|
|
580
|
+
fileSize: number;
|
|
581
|
+
totalDurationMs: number;
|
|
582
|
+
partsCount?: number;
|
|
583
|
+
averagePartSize?: number;
|
|
584
|
+
throughputBps?: number;
|
|
585
|
+
retryCount?: number;
|
|
586
|
+
}) => Effect.Effect<void, never, never>;
|
|
587
|
+
declare const logFilesystemContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
588
|
+
declare const filesystemUploadRequestsTotal: effect_Metric0.Metric.Counter<number>, filesystemUploadPartsTotal: effect_Metric0.Metric.Counter<number>, filesystemUploadSuccessTotal: effect_Metric0.Metric.Counter<number>, filesystemUploadErrorsTotal: effect_Metric0.Metric.Counter<number>, filesystemApiCallsTotal: effect_Metric0.Metric.Counter<number>, filesystemUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemPartUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemFileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemPartSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemActiveUploadsGauge: effect_Metric0.Metric.Gauge<number>, filesystemUploadThroughputGauge: effect_Metric0.Metric.Gauge<number>, filesystemUploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
589
|
+
type FilesystemMetrics = StorageMetrics;
|
|
590
|
+
//#endregion
|
|
591
|
+
//#region src/upload/metrics.d.ts
|
|
592
|
+
/**
|
|
593
|
+
* Upload server metrics for tracking upload operations
|
|
594
|
+
*/
|
|
595
|
+
declare const createUploadServerMetrics: () => {
|
|
596
|
+
uploadCreatedTotal: Metric.Metric.Counter<number>;
|
|
597
|
+
uploadCompletedTotal: Metric.Metric.Counter<number>;
|
|
598
|
+
uploadFailedTotal: Metric.Metric.Counter<number>;
|
|
599
|
+
chunkUploadedTotal: Metric.Metric.Counter<number>;
|
|
600
|
+
uploadFromUrlTotal: Metric.Metric.Counter<number>;
|
|
601
|
+
uploadFromUrlSuccessTotal: Metric.Metric.Counter<number>;
|
|
602
|
+
uploadFromUrlFailedTotal: Metric.Metric.Counter<number>;
|
|
603
|
+
uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
604
|
+
chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
605
|
+
uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
606
|
+
chunkSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
607
|
+
activeUploadsGauge: Metric.Metric.Gauge<number>;
|
|
608
|
+
uploadThroughputGauge: Metric.Metric.Gauge<number>;
|
|
609
|
+
uploadLatencySummary: Metric.Metric.Summary<number>;
|
|
610
|
+
chunkLatencySummary: Metric.Metric.Summary<number>;
|
|
611
|
+
};
|
|
612
|
+
/**
|
|
613
|
+
* Type for upload server metrics
|
|
614
|
+
*/
|
|
615
|
+
type UploadServerMetrics = ReturnType<typeof createUploadServerMetrics>;
|
|
616
|
+
/**
|
|
617
|
+
* Default upload server metrics instance
|
|
618
|
+
*/
|
|
619
|
+
declare const uploadServerMetrics: {
|
|
620
|
+
uploadCreatedTotal: Metric.Metric.Counter<number>;
|
|
621
|
+
uploadCompletedTotal: Metric.Metric.Counter<number>;
|
|
622
|
+
uploadFailedTotal: Metric.Metric.Counter<number>;
|
|
623
|
+
chunkUploadedTotal: Metric.Metric.Counter<number>;
|
|
624
|
+
uploadFromUrlTotal: Metric.Metric.Counter<number>;
|
|
625
|
+
uploadFromUrlSuccessTotal: Metric.Metric.Counter<number>;
|
|
626
|
+
uploadFromUrlFailedTotal: Metric.Metric.Counter<number>;
|
|
627
|
+
uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
628
|
+
chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
629
|
+
uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
630
|
+
chunkSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
631
|
+
activeUploadsGauge: Metric.Metric.Gauge<number>;
|
|
632
|
+
uploadThroughputGauge: Metric.Metric.Gauge<number>;
|
|
633
|
+
uploadLatencySummary: Metric.Metric.Summary<number>;
|
|
634
|
+
chunkLatencySummary: Metric.Metric.Summary<number>;
|
|
635
|
+
};
|
|
636
|
+
//#endregion
|
|
637
|
+
//#region src/upload/tracing.d.ts
|
|
638
|
+
/**
|
|
639
|
+
* Wrap an Effect with an upload operation span
|
|
640
|
+
*/
|
|
641
|
+
declare const withUploadSpan: <A, E, R>(operation: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
642
|
+
/**
|
|
643
|
+
* Add upload context to the current span
|
|
644
|
+
*/
|
|
645
|
+
declare const withUploadContext: (context: {
|
|
646
|
+
uploadId?: string;
|
|
647
|
+
fileName?: string;
|
|
648
|
+
fileSize?: number;
|
|
649
|
+
storageId?: string;
|
|
650
|
+
mimeType?: string;
|
|
651
|
+
}) => Effect.Effect<void, never, never>;
|
|
652
|
+
/**
|
|
653
|
+
* Add chunk context to the current span
|
|
654
|
+
*/
|
|
655
|
+
declare const withChunkContext: (context: {
|
|
656
|
+
uploadId: string;
|
|
657
|
+
chunkSize: number;
|
|
658
|
+
offset: number;
|
|
659
|
+
totalSize?: number;
|
|
660
|
+
}) => Effect.Effect<void, never, never>;
|
|
661
|
+
//#endregion
|
|
662
|
+
//#region src/upload/layers.d.ts
|
|
663
|
+
/**
|
|
664
|
+
* Create a live upload observability layer with full metrics
|
|
665
|
+
*/
|
|
666
|
+
declare const makeUploadObservabilityLive: (serviceName?: string) => Layer.Layer<UploadObservability>;
|
|
667
|
+
/**
|
|
668
|
+
* Default live upload observability layer
|
|
669
|
+
*/
|
|
670
|
+
declare const UploadObservabilityLive: Layer.Layer<UploadObservability, never, never>;
|
|
671
|
+
/**
|
|
672
|
+
* Helper to get upload metrics from context
|
|
673
|
+
*/
|
|
674
|
+
declare const getUploadMetrics: Effect.Effect<{
|
|
675
|
+
uploadCreated: Effect.Effect<void>;
|
|
676
|
+
uploadCompleted: Effect.Effect<void>;
|
|
677
|
+
uploadFailed: Effect.Effect<void>;
|
|
678
|
+
chunkUploaded: Effect.Effect<void>;
|
|
679
|
+
}, never, UploadObservability>;
|
|
680
|
+
/**
|
|
681
|
+
* Helper to track upload duration
|
|
682
|
+
*/
|
|
683
|
+
declare const withUploadDuration: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | UploadObservability>;
|
|
684
|
+
/**
|
|
685
|
+
* Helper to track chunk upload duration
|
|
686
|
+
*/
|
|
687
|
+
declare const withChunkDuration: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
688
|
+
//#endregion
|
|
689
|
+
//#region src/upload/errors.d.ts
|
|
690
|
+
type UploadErrorCategory = "network_error" | "authentication_error" | "authorization_error" | "validation_error" | "size_limit_error" | "storage_error" | "abort_error" | "unknown_error";
|
|
691
|
+
/**
|
|
692
|
+
* Classify upload errors into standard categories
|
|
693
|
+
*/
|
|
694
|
+
declare const classifyUploadError: (error: unknown) => UploadErrorCategory;
|
|
695
|
+
/**
|
|
696
|
+
* Track upload errors with metrics and structured logging
|
|
697
|
+
*/
|
|
698
|
+
declare const trackUploadError: (metrics: UploadServerMetrics, operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
699
|
+
/**
|
|
700
|
+
* Create a custom error classifier for upload operations
|
|
701
|
+
*/
|
|
702
|
+
declare const createUploadErrorClassifier: (customErrorMapping?: (error: unknown) => UploadErrorCategory | null) => (error: unknown) => UploadErrorCategory;
|
|
703
|
+
//#endregion
|
|
704
|
+
//#region src/upload/testing.d.ts
|
|
705
|
+
/**
|
|
706
|
+
* Create a test upload observability layer that doesn't actually emit metrics
|
|
707
|
+
* but validates that the observability system is wired correctly
|
|
708
|
+
*/
|
|
709
|
+
declare const UploadObservabilityTest: Layer.Layer<UploadObservability, never, never>;
|
|
710
|
+
/**
|
|
711
|
+
* Get metrics for validation (useful for testing metric definitions)
|
|
712
|
+
*/
|
|
713
|
+
declare const getTestMetrics: () => {
|
|
714
|
+
uploadCreatedTotal: effect_Metric0.Metric.Counter<number>;
|
|
715
|
+
uploadCompletedTotal: effect_Metric0.Metric.Counter<number>;
|
|
716
|
+
uploadFailedTotal: effect_Metric0.Metric.Counter<number>;
|
|
717
|
+
chunkUploadedTotal: effect_Metric0.Metric.Counter<number>;
|
|
718
|
+
uploadFromUrlTotal: effect_Metric0.Metric.Counter<number>;
|
|
719
|
+
uploadFromUrlSuccessTotal: effect_Metric0.Metric.Counter<number>;
|
|
720
|
+
uploadFromUrlFailedTotal: effect_Metric0.Metric.Counter<number>;
|
|
721
|
+
uploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
722
|
+
chunkUploadDurationHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
723
|
+
uploadFileSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
724
|
+
chunkSizeHistogram: effect_Metric0.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
|
|
725
|
+
activeUploadsGauge: effect_Metric0.Metric.Gauge<number>;
|
|
726
|
+
uploadThroughputGauge: effect_Metric0.Metric.Gauge<number>;
|
|
727
|
+
uploadLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
728
|
+
chunkLatencySummary: effect_Metric0.Metric.Summary<number>;
|
|
729
|
+
};
|
|
730
|
+
/**
|
|
731
|
+
* Validate that all required metrics exist
|
|
732
|
+
*/
|
|
733
|
+
declare const validateMetricsExist: () => boolean;
|
|
734
|
+
//#endregion
|
|
735
|
+
export { AzureMetrics, AzureObservabilityLayer, AzureTracingLayer, FilesystemMetrics, FilesystemObservabilityLayer, FilesystemTracingLayer, FlowErrorCategory, FlowMetrics, FlowObservability, FlowObservabilityDisabled, FlowObservabilityLive, FlowObservabilityService, GCSMetrics, GCSObservabilityLayer, GCSTracingLayer, MetricsService, NoOpMetricsServiceLive, NodeSdkLive, Observability, ObservabilityDisabled, ObservabilityService, ObservabilityTestFixture, S3Metrics, S3ObservabilityLayer, S3TracingLayer, StorageErrorCategory, StorageMetrics, StorageObservability, StorageObservabilityDisabled, StorageObservabilityService, TracingService, UploadErrorCategory, UploadObservability, UploadObservabilityDisabled, UploadObservabilityLive, UploadObservabilityService, UploadObservabilityTest, UploadServerMetrics, WebSdkLive, WorkersSdkLive, azureActiveUploadsGauge, azureApiCallsTotal, azureFileSizeHistogram, azureMetrics, azurePartSizeHistogram, azurePartUploadDurationHistogram, azureUploadDurationHistogram, azureUploadErrorsTotal, azureUploadLatencySummary, azureUploadPartsTotal, azureUploadRequestsTotal, azureUploadSuccessTotal, azureUploadThroughputGauge, captureMetrics, classifyFlowError, classifyStorageError, classifyUploadError, createFlowMetrics, createStorageErrorClassifier, createStorageErrorTracker, createStorageMetrics, createStorageTracingLayer, createTestFixture, createTracingLayer, createUploadErrorClassifier, createUploadGauges, createUploadHistograms, createUploadMetrics, createUploadServerMetrics, createUploadSummaries, filesystemActiveUploadsGauge, filesystemApiCallsTotal, filesystemFileSizeHistogram, filesystemMetrics, filesystemPartSizeHistogram, filesystemPartUploadDurationHistogram, filesystemUploadDurationHistogram, filesystemUploadErrorsTotal, filesystemUploadLatencySummary, filesystemUploadPartsTotal, filesystemUploadRequestsTotal, filesystemUploadSuccessTotal, filesystemUploadThroughputGauge, flowMetrics, gcsActiveUploadsGauge, gcsApiCallsTotal, gcsFileSizeHistogram, gcsMetrics, gcsPartSizeHistogram, gcsPartUploadDurationHistogram, gcsUploadDurationHistogram, gcsUploadErrorsTotal, gcsUploadLatencySummary, gcsUploadPartsTotal, gcsUploadRequestsTotal, gcsUploadSuccessTotal, gcsUploadThroughputGauge, getFlowMetrics, getTestMetrics, getUploadMetrics, isObservabilityEnabled, logAzureContext, logAzureOperation, logAzureUploadCompletion, logAzureUploadProgress, logFilesystemContext, logFilesystemOperation, logFilesystemUploadCompletion, logFilesystemUploadProgress, logGCSContext, logGCSOperation, logGCSUploadCompletion, logGCSUploadProgress, logS3Context, logS3Operation, logS3UploadCompletion, logS3UploadProgress, logStorageOperation, logUploadCompletion, logUploadProgress, logWithContext, makeFlowObservabilityLayer, makeFlowObservabilityLive, makeObservabilityLayer, makeStorageObservabilityLayer, makeTestFlowObservability, makeTestFlowObservability$1 as makeTestFlowObservabilityUtil, makeTestStorageObservability, makeTestUploadObservability, makeUploadObservabilityLayer, makeUploadObservabilityLive, runWithTestFlowObservability, runWithTestObservability, s3ActiveUploadsGauge, s3ApiCallsTotal, s3FileSizeHistogram, s3Metrics, s3PartSizeHistogram, s3PartUploadDurationHistogram, s3UploadDurationHistogram, s3UploadErrorsTotal, s3UploadLatencySummary, s3UploadPartsTotal, s3UploadRequestsTotal, s3UploadSuccessTotal, s3UploadThroughputGauge, trackActiveFlow, trackActiveNode, trackAzureError, trackFileSize, trackFilesystemError, trackFlowError, trackGCSError, trackNodeError, trackPartSize, trackS3Error, trackStorageError, trackUploadError, uploadServerMetrics, validateMetricsExist, whenObservabilityEnabled, withActiveUploadTracking, withApiMetrics, withAzureApiMetrics, withAzureOperationMetrics, withAzureSpan, withAzureTimingMetrics, withAzureUploadMetrics, withChunkContext, withChunkDuration, withExecutionContext, withFilesystemApiMetrics, withFilesystemOperationMetrics, withFilesystemSpan, withFilesystemTimingMetrics, withFilesystemUploadMetrics, withFlowContext, withFlowDuration, withFlowSpan, withGCSApiMetrics, withGCSOperationMetrics, withGCSSpan, withGCSTimingMetrics, withGCSUploadMetrics, withMetricTracking, withNodeContext, withNodeDuration, withS3ApiMetrics, withS3OperationMetrics, withS3Span, withS3TimingMetrics, withS3UploadMetrics, withStorageOperationMetrics, withStorageSpan, withThroughputTracking, withTimingMetrics, withUploadContext, withUploadDuration, withUploadMetrics, withUploadSpan };
|
|
736
|
+
//# sourceMappingURL=index.d.cts.map
|