import { testAdapter } from '@jbrowse/core/util' import { getFileName, makeIndex, makeIndexType, } from '@jbrowse/core/util/tracks' import type PluginManager from '@jbrowse/core/PluginManager' import type { AdapterGuesser, TrackTypeGuesser, } from '@jbrowse/core/util/tracks' import type { FileLocation } from '@jbrowse/core/util/types' export default function GuessAdapterF(pluginManager: PluginManager) { pluginManager.addToExtensionPoint( 'Core-guessAdapterForLocation', (adapterGuesser: AdapterGuesser) => { return ( file: FileLocation, index?: FileLocation, adapterHint?: string, ) => { const fileName = getFileName(file) const indexName = index && getFileName(index) return testAdapter(fileName, /\.txt\.gz$/i, adapterHint, 'GWASAdapter') ? { type: 'GWASAdapter', bedGzLocation: file, index: { location: index || makeIndex(file, '.tbi'), indexType: makeIndexType(indexName, 'CSI', 'TBI'), }, } : adapterGuesser(file, index, adapterHint) } }, ) pluginManager.addToExtensionPoint( 'Core-guessTrackTypeForLocation', (trackTypeGuesser: TrackTypeGuesser) => { return (adapterName: string) => { return adapterName === 'GWASAdapter' ? 'GWASTrack' : trackTypeGuesser(adapterName) } }, ) }