ai
Version:
AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.
37 lines (31 loc) • 1.23 kB
text/typescript
import { vi } from 'vitest';
import type { RealtimeModel, RealtimeServerEvent } from '../../types/realtime-model';
export class FakeTrack extends EventTarget {
enabled = true;
muted = false;
readyState = 'live';
stop = vi.fn(() => { this.readyState = 'ended'; });
}
export function fakeStream() {
const track = new FakeTrack();
return { track, stream: { getTracks: () => [track], getAudioTracks: () => [track] } as unknown as MediaStream };
}
export function liveModel(): RealtimeModel {
return {
specificationVersion: 'v4', provider: 'test', modelId: 'live',
capabilities: { conversation: 'continuous', transports: ['websocket'], connections: ['server-websocket'], startup: 'session-start', finalization: 'session-close' },
getWebSocketConfig: vi.fn(),
doCreateClientSecret: vi.fn(),
buildSessionConfig: vi.fn(),
parseServerEvent: event => event as RealtimeServerEvent,
serializeClientEvent: async event => event,
};
}
export async function flushEvents() {
for (let i = 0; i < 100; i++) await Promise.resolve();
}
export function deferred<T>() {
let resolve: (value: T) => void = () => {};
const promise = new Promise<T>(r => { resolve = r; });
return { promise, resolve };
}