@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
JavaScript
"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()),
});