UNPKG

@clipwhisperer/common

Version:

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

73 lines (72 loc) 3.35 kB
"use strict"; /** * AWS Polly Zod Schemas * Centralized schema definitions for AWS Polly parameters */ Object.defineProperty(exports, "__esModule", { value: true }); exports.awsPollyConfigSchema = exports.speechSynthesisResponseSchema = exports.awsPollyMetadataSchema = exports.awsPollySynthesisInputSchema = exports.awsPollyRequestSchema = exports.awsPollyOutputFormatSchema = exports.awsPollyEngineSchema = exports.awsPollyVoiceSchema = void 0; const zod_1 = require("zod"); const awsPolly_1 = require("../constants/awsPolly"); const speechMarks_1 = require("../models/speechMarks"); /** * Base AWS Polly voice schema */ exports.awsPollyVoiceSchema = zod_1.z.string().default(awsPolly_1.AWS_POLLY_DEFAULTS.VOICE_ID); /** * Base AWS Polly engine schema */ exports.awsPollyEngineSchema = zod_1.z.string().default(awsPolly_1.AWS_POLLY_DEFAULTS.ENGINE); /** * Base AWS Polly output format schema */ exports.awsPollyOutputFormatSchema = zod_1.z.enum(awsPolly_1.AWS_POLLY_CONFIG.SUPPORTED_FORMATS).default(awsPolly_1.AWS_POLLY_DEFAULTS.OUTPUT_FORMAT); /** * Standard AWS Polly request schema */ exports.awsPollyRequestSchema = zod_1.z.object({ text: zod_1.z.string().min(1), voiceId: exports.awsPollyVoiceSchema.optional(), engine: exports.awsPollyEngineSchema.optional(), outputFormat: exports.awsPollyOutputFormatSchema.optional(), }); /** * AWS Polly synthesis input schema (for services) */ exports.awsPollySynthesisInputSchema = zod_1.z.object({ text: zod_1.z.string().min(1).describe("Text to synthesize"), voiceId: zod_1.z.string().optional().default(awsPolly_1.AWS_POLLY_DEFAULTS.VOICE_ID).describe("AWS Polly voice ID"), engine: zod_1.z.string().optional().default(awsPolly_1.AWS_POLLY_DEFAULTS.ENGINE).describe("AWS Polly engine"), outputFormat: zod_1.z.string().optional().default(awsPolly_1.AWS_POLLY_DEFAULTS.OUTPUT_FORMAT).describe("Audio output format"), }); /** * AWS Polly metadata schema */ exports.awsPollyMetadataSchema = zod_1.z.object({ voiceId: zod_1.z.string().describe("AWS Polly voice used"), engine: zod_1.z.string().describe("AWS Polly engine used"), outputFormat: zod_1.z.string().describe("Audio output format"), duration: zod_1.z.number().optional().describe("Audio duration in seconds"), fileSize: zod_1.z.number().optional().describe("Audio file size in bytes"), }); // Speech marks schema is imported from models/speechMarks.ts to avoid duplication /** * Speech synthesis response schema */ exports.speechSynthesisResponseSchema = zod_1.z.object({ audioId: zod_1.z.string().describe("Unique audio identifier"), audioUrl: zod_1.z.string().describe("URL to the synthesized audio"), speechMarks: zod_1.z.array(speechMarks_1.speechMarkSchema).optional().describe("Word-level timing data"), duration: zod_1.z.number().describe("Audio duration in seconds"), wordCount: zod_1.z.number().describe("Number of words synthesized"), metadata: exports.awsPollyMetadataSchema, }); /** * Reusable AWS Polly configuration object schema */ exports.awsPollyConfigSchema = zod_1.z.object({ voiceId: exports.awsPollyVoiceSchema, engine: exports.awsPollyEngineSchema, outputFormat: exports.awsPollyOutputFormatSchema, timeout: zod_1.z.number().optional().default(60000), retries: zod_1.z.number().optional().default(3), });