@erickluis00/otelviewer
Version:
Shared OpenTelemetry tracing utilities, types, and batch processor for Realtime OpenTelemetry Viewer [WIP]
59 lines • 2.42 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.paginatedResultSchema = exports.searchFiltersSchema = exports.traceSchema = exports.spansArraySchema = exports.spanSchema = exports.spanAttributesSchema = exports.spanStatusSchema = void 0;
const zod_1 = require("zod");
// Schema for span status
exports.spanStatusSchema = zod_1.z.object({
code: zod_1.z.enum(['OK', 'ERROR', 'UNSET']),
message: zod_1.z.string().optional(),
});
// Schema for span attributes (flexible to handle various OTEL attribute types)
exports.spanAttributesSchema = zod_1.z.record(zod_1.z.any()).default({});
// Schema for individual span (used for ingestion and internal processing)
exports.spanSchema = zod_1.z.object({
id: zod_1.z.string(),
kind: zod_1.z.enum(['SPAN', 'LOG']),
traceId: zod_1.z.string(),
parentId: zod_1.z.string().nullable(),
name: zod_1.z.string(),
startTime: zod_1.z.number(),
endTime: zod_1.z.number(),
status: exports.spanStatusSchema,
attributes: exports.spanAttributesSchema,
projectId: zod_1.z.string().optional(),
isPartial: zod_1.z.boolean().default(false),
isRealTime: zod_1.z.boolean().default(false),
});
// Schema for array of spans (used in ingest endpoint)
exports.spansArraySchema = zod_1.z.object({
spans: zod_1.z.array(exports.spanSchema),
});
// Schema for trace object
exports.traceSchema = zod_1.z.object({
traceId: zod_1.z.string(),
spans: zod_1.z.array(exports.spanSchema),
});
// Schema for search filters
exports.searchFiltersSchema = zod_1.z.object({
search: zod_1.z.string().optional(),
startDate: zod_1.z.number().optional(),
endDate: zod_1.z.number().optional(),
status: zod_1.z.enum(['success', 'error', 'warning', 'exception', 'running']).optional(),
page: zod_1.z.number().min(1).default(1),
limit: zod_1.z.number().min(1).max(100).default(25),
projectId: zod_1.z.string().optional(),
});
// Schema for paginated results
const paginatedResultSchema = (dataSchema) => zod_1.z.object({
data: zod_1.z.array(dataSchema),
pagination: zod_1.z.object({
page: zod_1.z.number(),
limit: zod_1.z.number(),
total: zod_1.z.number(),
totalPages: zod_1.z.number(),
hasNext: zod_1.z.boolean(),
hasPrev: zod_1.z.boolean(),
}),
});
exports.paginatedResultSchema = paginatedResultSchema;
//# sourceMappingURL=schemas.js.map