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