import { IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces'; import { TContext, TGetNativeContextFactory, TNativeAudioContext, TNativeOfflineAudioContext } from '../types'; import { createInvalidStateError } from './invalid-state-error'; export const createGetNativeContext: TGetNativeContextFactory = (contextStore) => { return ( context: T ): T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? TNativeOfflineAudioContext : TNativeAudioContext => { const nativeContext = contextStore.get(context); if (nativeContext === undefined) { throw createInvalidStateError(); } return ( nativeContext ); }; };