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
 |