UNPKG

@clipwhisperer/common

Version:

ClipWhisperer Common - Shared library providing core utilities, database schemas, authentication, bucket management, and common functionality across all ClipWhisperer microservices

115 lines (114 loc) 4.24 kB
"use strict"; /** * Standardized Response Schemas * Common response patterns used across all services */ Object.defineProperty(exports, "__esModule", { value: true }); exports.batchOperationResponseSchema = exports.fileOperationResponseSchema = exports.workflowStatusResponseSchema = exports.performanceMetricsResponseSchema = exports.metadataResponseSchema = exports.jobResponseSchema = exports.healthResponseSchema = exports.errorResponseSchema = exports.successResponseSchema = void 0; const zod_1 = require("zod"); /** * Standard success response */ exports.successResponseSchema = zod_1.z.object({ success: zod_1.z.boolean().default(true), message: zod_1.z.string().optional(), timestamp: zod_1.z.string().optional().default(() => new Date().toISOString()), }); /** * Standard error response */ exports.errorResponseSchema = zod_1.z.object({ success: zod_1.z.boolean().default(false), error: zod_1.z.string(), message: zod_1.z.string().optional(), timestamp: zod_1.z.string().optional().default(() => new Date().toISOString()), }); /** * Health check response */ exports.healthResponseSchema = zod_1.z.object({ status: zod_1.z.enum(["healthy", "unhealthy"]), service: zod_1.z.string(), version: zod_1.z.string().optional(), timestamp: zod_1.z.string().default(() => new Date().toISOString()), uptime: zod_1.z.number().optional(), dependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.enum(["healthy", "unhealthy"])).optional(), }); /** * Job response (for queue operations) */ exports.jobResponseSchema = zod_1.z.object({ jobId: zod_1.z.string(), status: zod_1.z.enum(["queued", "processing", "completed", "failed"]).optional(), message: zod_1.z.string().optional(), timestamp: zod_1.z.string().default(() => new Date().toISOString()), }); /** * Metadata response wrapper */ exports.metadataResponseSchema = zod_1.z.object({ success: zod_1.z.boolean(), metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(), error: zod_1.z.string().optional(), timestamp: zod_1.z.string().default(() => new Date().toISOString()), }); /** * Performance metrics response */ exports.performanceMetricsResponseSchema = zod_1.z.object({ totalRequests: zod_1.z.number(), averageResponseTime: zod_1.z.number(), successRate: zod_1.z.number(), queueSize: zod_1.z.number(), memoryUsage: zod_1.z.object({ rss: zod_1.z.number(), heapTotal: zod_1.z.number(), heapUsed: zod_1.z.number(), external: zod_1.z.number(), arrayBuffers: zod_1.z.number(), }), uptime: zod_1.z.number(), timestamp: zod_1.z.string().default(() => new Date().toISOString()), }); /** * Workflow status response */ exports.workflowStatusResponseSchema = zod_1.z.object({ workflowId: zod_1.z.string(), status: zod_1.z.enum(["pending", "in_progress", "completed", "failed"]), currentStep: zod_1.z.string().optional(), totalSteps: zod_1.z.number().optional(), progress: zod_1.z.number().optional().describe("Progress percentage (0-100)"), message: zod_1.z.string().optional(), startTime: zod_1.z.string().optional(), endTime: zod_1.z.string().optional(), processingTime: zod_1.z.number().optional(), nextSteps: zod_1.z.string().optional(), }); /** * File operation response */ exports.fileOperationResponseSchema = zod_1.z.object({ success: zod_1.z.boolean(), filePath: zod_1.z.string().optional(), fileName: zod_1.z.string().optional(), fileSize: zod_1.z.number().optional(), mimeType: zod_1.z.string().optional(), url: zod_1.z.string().optional(), error: zod_1.z.string().optional(), timestamp: zod_1.z.string().default(() => new Date().toISOString()), }); /** * Batch operation response */ exports.batchOperationResponseSchema = zod_1.z.object({ success: zod_1.z.boolean(), processedCount: zod_1.z.number(), totalCount: zod_1.z.number(), successCount: zod_1.z.number(), failureCount: zod_1.z.number(), batchId: zod_1.z.string().optional(), errors: zod_1.z.array(zod_1.z.string()).optional(), processingTime: zod_1.z.number(), timestamp: zod_1.z.string().default(() => new Date().toISOString()), });