{"version":3,"sources":["../src/models.ts","../src/exceptions.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * Data models for LangVoice SDK\r\n */\r\n\r\n// ============================================\r\n// Type Definitions\r\n// ============================================\r\n\r\nexport interface VoiceData {\r\n  id: string;\r\n  name: string;\r\n  gender?: string;\r\n  language?: string;\r\n  description?: string;\r\n}\r\n\r\nexport interface LanguageData {\r\n  id: string;\r\n  name: string;\r\n  voices?: string[];\r\n}\r\n\r\nexport interface GenerateRequestData {\r\n  text: string;\r\n  voice: string;\r\n  language: string;\r\n  speed: number;\r\n}\r\n\r\nexport interface MultiVoiceRequestData {\r\n  text: string;\r\n  language: string;\r\n  speed: number;\r\n}\r\n\r\nexport interface GenerateResponseData {\r\n  audioData: Buffer | ArrayBuffer;\r\n  duration?: number;\r\n  generationTime?: number;\r\n  charactersProcessed?: number;\r\n}\r\n\r\n// ============================================\r\n// Classes\r\n// ============================================\r\n\r\n/**\r\n * Voice model\r\n */\r\nexport class Voice implements VoiceData {\r\n  public readonly id: string;\r\n  public readonly name: string;\r\n  public readonly gender?: string;\r\n  public readonly language?: string;\r\n  public readonly description?: string;\r\n\r\n  constructor(data: VoiceData) {\r\n    this.id = data.id;\r\n    this.name = data.name;\r\n    this.gender = data.gender;\r\n    this.language = data.language;\r\n    this.description = data.description;\r\n  }\r\n\r\n  toJSON(): VoiceData {\r\n    return {\r\n      id: this.id,\r\n      name: this.name,\r\n      gender: this.gender,\r\n      language: this.language,\r\n      description: this.description,\r\n    };\r\n  }\r\n}\r\n\r\n/**\r\n * Language model\r\n */\r\nexport class Language implements LanguageData {\r\n  public readonly id: string;\r\n  public readonly name: string;\r\n  public readonly voices?: string[];\r\n\r\n  constructor(data: LanguageData) {\r\n    this.id = data.id;\r\n    this.name = data.name;\r\n    this.voices = data.voices;\r\n  }\r\n\r\n  toJSON(): LanguageData {\r\n    return {\r\n      id: this.id,\r\n      name: this.name,\r\n      voices: this.voices,\r\n    };\r\n  }\r\n}\r\n\r\n/**\r\n * Generate request model\r\n */\r\nexport class GenerateRequest implements GenerateRequestData {\r\n  public readonly text: string;\r\n  public readonly voice: string;\r\n  public readonly language: string;\r\n  public readonly speed: number;\r\n\r\n  constructor(data: Partial<GenerateRequestData> & { text: string }) {\r\n    if (!data.text || data.text.length === 0) {\r\n      throw new Error('Text is required');\r\n    }\r\n    if (data.text.length > 5000) {\r\n      throw new Error('Text must be 5000 characters or less');\r\n    }\r\n\r\n    this.text = data.text;\r\n    this.voice = data.voice || 'heart';\r\n    this.language = data.language || 'american_english';\r\n    this.speed = data.speed ?? 1.0;\r\n\r\n    if (this.speed < 0.5 || this.speed > 2.0) {\r\n      throw new Error('Speed must be between 0.5 and 2.0');\r\n    }\r\n  }\r\n\r\n  toJSON(): GenerateRequestData {\r\n    return {\r\n      text: this.text,\r\n      voice: this.voice,\r\n      language: this.language,\r\n      speed: this.speed,\r\n    };\r\n  }\r\n}\r\n\r\n/**\r\n * Multi-voice request model\r\n */\r\nexport class MultiVoiceRequest implements MultiVoiceRequestData {\r\n  public readonly text: string;\r\n  public readonly language: string;\r\n  public readonly speed: number;\r\n\r\n  constructor(data: Partial<MultiVoiceRequestData> & { text: string }) {\r\n    if (!data.text || data.text.length === 0) {\r\n      throw new Error('Text is required');\r\n    }\r\n    if (data.text.length > 5000) {\r\n      throw new Error('Text must be 5000 characters or less');\r\n    }\r\n\r\n    this.text = data.text;\r\n    this.language = data.language || 'american_english';\r\n    this.speed = data.speed ?? 1.0;\r\n\r\n    if (this.speed < 0.5 || this.speed > 2.0) {\r\n      throw new Error('Speed must be between 0.5 and 2.0');\r\n    }\r\n  }\r\n\r\n  toJSON(): MultiVoiceRequestData {\r\n    return {\r\n      text: this.text,\r\n      language: this.language,\r\n      speed: this.speed,\r\n    };\r\n  }\r\n}\r\n\r\n/**\r\n * Generate response model\r\n */\r\nexport class GenerateResponse implements GenerateResponseData {\r\n  public readonly audioData: Buffer;\r\n  public readonly duration?: number;\r\n  public readonly generationTime?: number;\r\n  public readonly charactersProcessed?: number;\r\n\r\n  constructor(data: GenerateResponseData) {\r\n    this.audioData = Buffer.isBuffer(data.audioData)\r\n      ? data.audioData\r\n      : Buffer.from(data.audioData);\r\n    this.duration = data.duration;\r\n    this.generationTime = data.generationTime;\r\n    this.charactersProcessed = data.charactersProcessed;\r\n  }\r\n\r\n  /**\r\n   * Get audio as base64 string\r\n   */\r\n  toBase64(): string {\r\n    return this.audioData.toString('base64');\r\n  }\r\n\r\n  /**\r\n   * Get audio as Uint8Array (for browser compatibility)\r\n   */\r\n  toUint8Array(): Uint8Array {\r\n    return new Uint8Array(this.audioData);\r\n  }\r\n\r\n  /**\r\n   * Get audio as ArrayBuffer (for browser compatibility)\r\n   */\r\n  toArrayBuffer(): ArrayBuffer {\r\n    const buffer = this.audioData.buffer.slice(\r\n      this.audioData.byteOffset,\r\n      this.audioData.byteOffset + this.audioData.byteLength\r\n    );\r\n    return buffer as ArrayBuffer;\r\n  }\r\n}\r\n\r\n/**\r\n * Voices response model\r\n */\r\nexport class VoicesResponse {\r\n  public readonly voices: Voice[];\r\n\r\n  constructor(data: { voices: VoiceData[] }) {\r\n    this.voices = data.voices.map((v) => new Voice(v));\r\n  }\r\n}\r\n\r\n/**\r\n * Languages response model\r\n */\r\nexport class LanguagesResponse {\r\n  public readonly languages: Language[];\r\n\r\n  constructor(data: { languages: LanguageData[] }) {\r\n    this.languages = data.languages.map((l) => new Language(l));\r\n  }\r\n}\r\n\r\n// ============================================\r\n// Constants\r\n// ============================================\r\n\r\nexport const AMERICAN_VOICES = [\r\n  'heart',\r\n  'bella',\r\n  'nicole',\r\n  'sarah',\r\n  'nova',\r\n  'sky',\r\n  'jessica',\r\n  'river',\r\n  'michael',\r\n  'fenrir',\r\n  'eric',\r\n  'liam',\r\n  'onyx',\r\n  'adam',\r\n] as const;\r\n\r\nexport const BRITISH_VOICES = [\r\n  'emma',\r\n  'isabella',\r\n  'alice',\r\n  'lily',\r\n  'george',\r\n  'fable',\r\n  'lewis',\r\n  'daniel',\r\n] as const;\r\n\r\nexport const ALL_VOICES = [...AMERICAN_VOICES, ...BRITISH_VOICES] as const;\r\n\r\nexport const LANGUAGES = [\r\n  'american_english',\r\n  'british_english',\r\n  'spanish',\r\n  'french',\r\n  'hindi',\r\n  'italian',\r\n  'japanese',\r\n  'brazilian_portuguese',\r\n  'mandarin_chinese',\r\n] as const;\r\n\r\nexport type VoiceId = (typeof ALL_VOICES)[number];\r\nexport type LanguageId = (typeof LANGUAGES)[number];\r\n","/**\r\n * Custom exceptions for LangVoice SDK\r\n */\r\n\r\n/**\r\n * Base exception for LangVoice SDK\r\n */\r\nexport class LangVoiceError extends Error {\r\n  public readonly statusCode?: number;\r\n\r\n  constructor(message: string, statusCode?: number) {\r\n    super(message);\r\n    this.name = 'LangVoiceError';\r\n    this.statusCode = statusCode;\r\n    Object.setPrototypeOf(this, LangVoiceError.prototype);\r\n  }\r\n}\r\n\r\n/**\r\n * Raised when API key is invalid or missing\r\n */\r\nexport class AuthenticationError extends LangVoiceError {\r\n  constructor(message: string = 'Invalid or missing API key') {\r\n    super(message, 401);\r\n    this.name = 'AuthenticationError';\r\n    Object.setPrototypeOf(this, AuthenticationError.prototype);\r\n  }\r\n}\r\n\r\n/**\r\n * Raised when rate limit is exceeded\r\n */\r\nexport class RateLimitError extends LangVoiceError {\r\n  constructor(message: string = 'Rate limit exceeded') {\r\n    super(message, 429);\r\n    this.name = 'RateLimitError';\r\n    Object.setPrototypeOf(this, RateLimitError.prototype);\r\n  }\r\n}\r\n\r\n/**\r\n * Raised when request validation fails\r\n */\r\nexport class ValidationError extends LangVoiceError {\r\n  constructor(message: string) {\r\n    super(message, 400);\r\n    this.name = 'ValidationError';\r\n    Object.setPrototypeOf(this, ValidationError.prototype);\r\n  }\r\n}\r\n\r\n/**\r\n * Raised when API returns an error\r\n */\r\nexport class APIError extends LangVoiceError {\r\n  constructor(message: string, statusCode?: number) {\r\n    super(message, statusCode);\r\n    this.name = 'APIError';\r\n    Object.setPrototypeOf(this, APIError.prototype);\r\n  }\r\n}\r\n\r\n/**\r\n * Check if an error is a LangVoice error\r\n */\r\nexport function isLangVoiceError(error: unknown): error is LangVoiceError {\r\n  return error instanceof LangVoiceError;\r\n}\r\n\r\n/**\r\n * Check if an error is an authentication error\r\n */\r\nexport function isAuthenticationError(error: unknown): error is AuthenticationError {\r\n  return error instanceof AuthenticationError;\r\n}\r\n\r\n/**\r\n * Check if an error is a rate limit error\r\n */\r\nexport function isRateLimitError(error: unknown): error is RateLimitError {\r\n  return error instanceof RateLimitError;\r\n}\r\n","/**\r\n * Main LangVoice API client\r\n */\r\n\r\nimport {\r\n  Voice,\r\n  Language,\r\n  GenerateRequest,\r\n  MultiVoiceRequest,\r\n  GenerateResponse,\r\n  VoicesResponse,\r\n  LanguagesResponse,\r\n  AMERICAN_VOICES,\r\n  BRITISH_VOICES,\r\n  ALL_VOICES,\r\n  LANGUAGES,\r\n} from './models';\r\n\r\nimport {\r\n  AuthenticationError,\r\n  RateLimitError,\r\n  ValidationError,\r\n  APIError,\r\n} from './exceptions';\r\n\r\n// ============================================\r\n// Types\r\n// ============================================\r\n\r\nexport interface LangVoiceClientOptions {\r\n  /** API key for authentication */\r\n  apiKey?: string;\r\n  /** Base URL for the API */\r\n  baseUrl?: string;\r\n  /** Request timeout in milliseconds */\r\n  timeout?: number;\r\n}\r\n\r\nexport interface GenerateOptions {\r\n  /** Text to convert to speech (max 5000 characters) */\r\n  text: string;\r\n  /** Voice ID (e.g., 'heart', 'michael') */\r\n  voice?: string;\r\n  /** Language code (e.g., 'american_english') */\r\n  language?: string;\r\n  /** Speech speed from 0.5 to 2.0 */\r\n  speed?: number;\r\n}\r\n\r\nexport interface MultiVoiceOptions {\r\n  /** Text with [voice] markers */\r\n  text: string;\r\n  /** Language code for all voices */\r\n  language?: string;\r\n  /** Speech speed from 0.5 to 2.0 */\r\n  speed?: number;\r\n}\r\n\r\n// ============================================\r\n// Client\r\n// ============================================\r\n\r\n/**\r\n * LangVoice API client for text-to-speech generation\r\n *\r\n * @example\r\n * ```typescript\r\n * import { LangVoiceClient } from 'langvoice-sdk';\r\n *\r\n * const client = new LangVoiceClient({ apiKey: 'your-api-key' });\r\n *\r\n * const response = await client.generate({\r\n *   text: 'Hello, world!',\r\n *   voice: 'heart',\r\n * });\r\n *\r\n * // Save to file (Node.js)\r\n * import { writeFileSync } from 'fs';\r\n * writeFileSync('output.mp3', response.audioData);\r\n * ```\r\n */\r\nexport class LangVoiceClient {\r\n  private readonly apiKey: string;\r\n  private readonly baseUrl: string;\r\n  private readonly timeout: number;\r\n\r\n  /** Available American voices */\r\n  static readonly AMERICAN_VOICES = AMERICAN_VOICES;\r\n  /** Available British voices */\r\n  static readonly BRITISH_VOICES = BRITISH_VOICES;\r\n  /** All available voices */\r\n  static readonly ALL_VOICES = ALL_VOICES;\r\n  /** Supported languages */\r\n  static readonly LANGUAGES = LANGUAGES;\r\n\r\n  constructor(options: LangVoiceClientOptions = {}) {\r\n    this.apiKey = options.apiKey || this.getEnvApiKey();\r\n\r\n    if (!this.apiKey) {\r\n      throw new AuthenticationError(\r\n        'API key is required. Pass apiKey in options or set LANGVOICE_API_KEY environment variable.'\r\n      );\r\n    }\r\n\r\n    this.baseUrl = options.baseUrl || 'https://www.langvoice.pro/api';\r\n    this.timeout = options.timeout || 60000;\r\n  }\r\n\r\n  /**\r\n   * Get API key from environment variable\r\n   */\r\n  private getEnvApiKey(): string {\r\n    // Node.js environment\r\n    if (typeof process !== 'undefined' && process.env) {\r\n      return process.env.LANGVOICE_API_KEY || '';\r\n    }\r\n    return '';\r\n  }\r\n\r\n  /**\r\n   * Make HTTP request\r\n   */\r\n  private async request<T>(\r\n    method: 'GET' | 'POST',\r\n    endpoint: string,\r\n    body?: Record<string, unknown>\r\n  ): Promise<{ data: T; headers: Headers }> {\r\n    const url = `${this.baseUrl}${endpoint}`;\r\n\r\n    const controller = new AbortController();\r\n    const timeoutId = setTimeout(() => controller.abort(), this.timeout);\r\n\r\n    try {\r\n      const response = await fetch(url, {\r\n        method,\r\n        headers: {\r\n          'X-API-Key': this.apiKey,\r\n          'Content-Type': 'application/json',\r\n        },\r\n        body: body ? JSON.stringify(body) : undefined,\r\n        signal: controller.signal,\r\n      });\r\n\r\n      clearTimeout(timeoutId);\r\n\r\n      await this.handleResponseErrors(response);\r\n\r\n      return {\r\n        data: (await response.json()) as T,\r\n        headers: response.headers,\r\n      };\r\n    } catch (error) {\r\n      clearTimeout(timeoutId);\r\n\r\n      if (error instanceof Error && error.name === 'AbortError') {\r\n        throw new APIError('Request timeout', 408);\r\n      }\r\n\r\n      throw error;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Make HTTP request for binary data\r\n   */\r\n  private async requestBinary(\r\n    method: 'POST',\r\n    endpoint: string,\r\n    body: object\r\n  ): Promise<{ data: ArrayBuffer; headers: Headers }> {\r\n    const url = `${this.baseUrl}${endpoint}`;\r\n\r\n    const controller = new AbortController();\r\n    const timeoutId = setTimeout(() => controller.abort(), this.timeout);\r\n\r\n    try {\r\n      const response = await fetch(url, {\r\n        method,\r\n        headers: {\r\n          'X-API-Key': this.apiKey,\r\n          'Content-Type': 'application/json',\r\n        },\r\n        body: JSON.stringify(body),\r\n        signal: controller.signal,\r\n      });\r\n\r\n      clearTimeout(timeoutId);\r\n\r\n      await this.handleResponseErrors(response);\r\n\r\n      return {\r\n        data: await response.arrayBuffer(),\r\n        headers: response.headers,\r\n      };\r\n    } catch (error) {\r\n      clearTimeout(timeoutId);\r\n\r\n      if (error instanceof Error && error.name === 'AbortError') {\r\n        throw new APIError('Request timeout', 408);\r\n      }\r\n\r\n      throw error;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Handle API response errors\r\n   */\r\n  private async handleResponseErrors(response: Response): Promise<void> {\r\n    if (response.ok) return;\r\n\r\n    let errorMessage: string;\r\n\r\n    try {\r\n      const errorData = (await response.json()) as { error?: string };\r\n      errorMessage = errorData.error || `API error: ${response.status}`;\r\n    } catch {\r\n      errorMessage = response.statusText || `API error: ${response.status}`;\r\n    }\r\n\r\n    switch (response.status) {\r\n      case 401:\r\n        throw new AuthenticationError(errorMessage);\r\n      case 429:\r\n        throw new RateLimitError(errorMessage);\r\n      case 400:\r\n        throw new ValidationError(errorMessage);\r\n      default:\r\n        throw new APIError(errorMessage, response.status);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Parse float header value\r\n   */\r\n  private parseFloatHeader(value: string | null): number | undefined {\r\n    if (!value) return undefined;\r\n    const parsed = parseFloat(value.replace('s', ''));\r\n    return isNaN(parsed) ? undefined : parsed;\r\n  }\r\n\r\n  /**\r\n   * Parse int header value\r\n   */\r\n  private parseIntHeader(value: string | null): number | undefined {\r\n    if (!value) return undefined;\r\n    const parsed = parseInt(value, 10);\r\n    return isNaN(parsed) ? undefined : parsed;\r\n  }\r\n\r\n  /**\r\n   * Generate speech from text\r\n   *\r\n   * @param options - Generation options\r\n   * @returns GenerateResponse with audio data and metadata\r\n   *\r\n   * @example\r\n   * ```typescript\r\n   * const response = await client.generate({\r\n   *   text: 'Hello world!',\r\n   *   voice: 'heart',\r\n   *   language: 'american_english',\r\n   *   speed: 1.0,\r\n   * });\r\n   *\r\n   * console.log(`Duration: ${response.duration}s`);\r\n   * ```\r\n   */\r\n  async generate(options: GenerateOptions): Promise<GenerateResponse> {\r\n    const request = new GenerateRequest({\r\n      text: options.text,\r\n      voice: options.voice,\r\n      language: options.language,\r\n      speed: options.speed,\r\n    });\r\n\r\n    const { data, headers } = await this.requestBinary(\r\n      'POST',\r\n      '/tts/generate',\r\n      request.toJSON()\r\n    );\r\n\r\n    return new GenerateResponse({\r\n      audioData: data,\r\n      duration: this.parseFloatHeader(headers.get('X-Audio-Duration')),\r\n      generationTime: this.parseFloatHeader(headers.get('X-Generation-Time')),\r\n      charactersProcessed: this.parseIntHeader(headers.get('X-Characters-Processed')),\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Generate speech with multiple voices\r\n   *\r\n   * @param options - Multi-voice options\r\n   * @returns GenerateResponse with audio data and metadata\r\n   *\r\n   * @example\r\n   * ```typescript\r\n   * const response = await client.generateMultiVoice({\r\n   *   text: '[heart] Hello! [michael] Hi there!',\r\n   *   language: 'american_english',\r\n   * });\r\n   * ```\r\n   */\r\n  async generateMultiVoice(options: MultiVoiceOptions): Promise<GenerateResponse> {\r\n    const request = new MultiVoiceRequest({\r\n      text: options.text,\r\n      language: options.language,\r\n      speed: options.speed,\r\n    });\r\n\r\n    const { data, headers } = await this.requestBinary(\r\n      'POST',\r\n      '/tts/multi-voice-text',\r\n      request.toJSON()\r\n    );\r\n\r\n    return new GenerateResponse({\r\n      audioData: data,\r\n      duration: this.parseFloatHeader(headers.get('X-Audio-Duration')),\r\n      generationTime: this.parseFloatHeader(headers.get('X-Generation-Time')),\r\n      charactersProcessed: this.parseIntHeader(headers.get('X-Characters-Processed')),\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Get all available voices\r\n   *\r\n   * @returns Array of Voice objects\r\n   *\r\n   * @example\r\n   * ```typescript\r\n   * const voices = await client.listVoices();\r\n   * voices.forEach(v => console.log(`${v.id}: ${v.name}`));\r\n   * ```\r\n   */\r\n  async listVoices(): Promise<Voice[]> {\r\n    const { data } = await this.request<{ voices: Voice[] }>('GET', '/tts/voices');\r\n    return new VoicesResponse(data).voices;\r\n  }\r\n\r\n  /**\r\n   * Get all supported languages\r\n   *\r\n   * @returns Array of Language objects\r\n   *\r\n   * @example\r\n   * ```typescript\r\n   * const languages = await client.listLanguages();\r\n   * languages.forEach(l => console.log(`${l.id}: ${l.name}`));\r\n   * ```\r\n   */\r\n  async listLanguages(): Promise<Language[]> {\r\n    const { data } = await this.request<{ languages: Language[] }>('GET', '/tts/languages');\r\n    return new LanguagesResponse(data).languages;\r\n  }\r\n\r\n  /**\r\n   * Simple method to convert text to speech and return audio buffer\r\n   *\r\n   * @param text - Text to convert\r\n   * @param voice - Voice ID\r\n   * @param language - Language code\r\n   * @param speed - Speech speed\r\n   * @returns Audio data as Buffer\r\n   *\r\n   * @example\r\n   * ```typescript\r\n   * const audioBuffer = await client.textToSpeech('Hello!', 'heart');\r\n   * ```\r\n   */\r\n  async textToSpeech(\r\n    text: string,\r\n    voice: string = 'heart',\r\n    language: string = 'american_english',\r\n    speed: number = 1.0\r\n  ): Promise<Buffer> {\r\n    const response = await this.generate({ text, voice, language, speed });\r\n    return response.audioData;\r\n  }\r\n\r\n  /**\r\n   * Get the API key (useful for passing to tools)\r\n   */\r\n  getApiKey(): string {\r\n    return this.apiKey;\r\n  }\r\n}\r\n"]}