UNPKG

@clipwhisperer/common

Version:

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

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