UNPKG

venice-dev-tools

Version:

unOfficial SDK for the Venice AI API

109 lines (90 loc) 3.33 kB
import { ImageRequest, GenerateImageRequest, UpscaleImageParams } from '../../types/images'; import { BaseValidator } from './base-validator'; /** * Validator for image-related requests. */ export class ImageValidator extends BaseValidator { /** * Validate an image generation request. * @param request - The request to validate. * @throws VeniceValidationError if the request is invalid. */ public validateImageRequest(request: ImageRequest): void { this.validateRequired(request, 'request'); this.validateString(request.model, 'model'); if (request.n !== undefined) { this.validateNumber(request.n, 'n', 1, 10); } if (request.size !== undefined) { this.validateNumber(request.size, 'size', 256, 1024); } if (request.response_format !== undefined) { this.validateEnum(request.response_format, 'response_format', ['url', 'b64_json']); } if (request.user !== undefined) { this.validateString(request.user, 'user'); } if (request.prompt !== undefined) { this.validateString(request.prompt, 'prompt'); } if (request.negative_prompt !== undefined) { this.validateString(request.negative_prompt, 'negative_prompt'); } if (request.style !== undefined) { this.validateString(request.style, 'style'); } if (request.quality !== undefined) { this.validateEnum(request.quality, 'quality', ['standard', 'high', 'ultra']); } if (request.safety !== undefined) { this.validateEnum(request.safety, 'safety', ['low', 'medium', 'high']); } if (request.copyright !== undefined) { this.validateEnum(request.copyright, 'copyright', ['free', 'commercial']); } if (request.watermark !== undefined) { this.validateEnum(request.watermark, 'watermark', ['none', 'low', 'high']); } if (request.metadata !== undefined) { this.validateImageMetadata(request.metadata); } } /** * Validate a generate image request. * @param request - The request to validate. * @throws VeniceValidationError if the request is invalid. */ public validateGenerateImageRequest(request: GenerateImageRequest): void { this.validateImageRequest(request); // Add any additional validation specific to GenerateImageRequest here } /** * Validate an upscale image request. * @param params - The upscale parameters to validate. * @throws VeniceValidationError if the parameters are invalid. */ public validateUpscaleImageParams(params: UpscaleImageParams): void { this.validateRequired(params, 'params'); this.validateRequired(params.image, 'image'); if (params.scale !== undefined) { this.validateEnum(params.scale, 'scale', [2, 4]); } } /** * Validate image metadata. * @param metadata - The metadata to validate. * @throws VeniceValidationError if the metadata is invalid. */ private validateImageMetadata(metadata: { key: string; value: string }[]): void { this.validateNonEmptyArray(metadata, 'metadata'); metadata.forEach((item, index) => { this.validateString(item.key, `metadata[${index}].key`); this.validateString(item.value, `metadata[${index}].value`); }); } } export default ImageValidator;