UNPKG

@erickluis00/otelviewer

Version:

Shared OpenTelemetry tracing utilities, types, and batch processor for Realtime OpenTelemetry Viewer [WIP]

59 lines 2.42 kB
"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