48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import { EventEmitter } from "../../lib/EventEmitter.mjs"; | ||
|  | import { OpenAIError } from "../../error.mjs"; | ||
|  | import { AzureOpenAI } from "../../index.mjs"; | ||
|  | export class OpenAIRealtimeError extends OpenAIError { | ||
|  |     constructor(message, event) { | ||
|  |         super(message); | ||
|  |         this.error = event?.error; | ||
|  |         this.event_id = event?.event_id; | ||
|  |     } | ||
|  | } | ||
|  | export class OpenAIRealtimeEmitter extends EventEmitter { | ||
|  |     _onError(event, message, cause) { | ||
|  |         message = | ||
|  |             event?.error ? | ||
|  |                 `${event.error.message} code=${event.error.code} param=${event.error.param} type=${event.error.type} event_id=${event.error.event_id}` | ||
|  |                 : message ?? 'unknown error'; | ||
|  |         if (!this._hasListener('error')) { | ||
|  |             const error = new OpenAIRealtimeError(message + | ||
|  |                 `\n\nTo resolve these unhandled rejection errors you should bind an \`error\` callback, e.g. \`rt.on('error', (error) => ...)\` `, event); | ||
|  |             // @ts-ignore
 | ||
|  |             error.cause = cause; | ||
|  |             Promise.reject(error); | ||
|  |             return; | ||
|  |         } | ||
|  |         const error = new OpenAIRealtimeError(message, event); | ||
|  |         // @ts-ignore
 | ||
|  |         error.cause = cause; | ||
|  |         this._emit('error', error); | ||
|  |     } | ||
|  | } | ||
|  | export function isAzure(client) { | ||
|  |     return client instanceof AzureOpenAI; | ||
|  | } | ||
|  | export function buildRealtimeURL(client, model) { | ||
|  |     const path = '/realtime'; | ||
|  |     const baseURL = client.baseURL; | ||
|  |     const url = new URL(baseURL + (baseURL.endsWith('/') ? path.slice(1) : path)); | ||
|  |     url.protocol = 'wss'; | ||
|  |     if (isAzure(client)) { | ||
|  |         url.searchParams.set('api-version', client.apiVersion); | ||
|  |         url.searchParams.set('deployment', model); | ||
|  |     } | ||
|  |     else { | ||
|  |         url.searchParams.set('model', model); | ||
|  |     } | ||
|  |     return url; | ||
|  | } | ||
|  | //# sourceMappingURL=internal-base.mjs.map
 |