import { ApiPromiseHandler, DefaultRouteShape, ThenArg, } from '@seleniumhq/side-api' import { sendMessage } from './DriverUtils' export const resolversByID: Record void> = {} const doAPI = async ( path: string, ...args: Parameters ): Promise>> => new Promise((resolve) => { const handler = (event: MessageEvent>>) => { console.log('event', event) if (event.data.path === `${path}.complete`) { window.removeEventListener('message', handler) resolve(event.data) } } console.debug('Emitting to server', path, 'with args', args) const id = sendMessage({ path, args }) resolversByID[id] = resolve }) const Handler = () => (path: string) => { return async ( ...args: Parameters ): Promise>> => { console.debug(path, 'api called', ...(args as any)) console.info('SELENIUM_IDE_COMMAND:', path, ...(args as any)) const result = await doAPI(path, ...args) console.debug(path, 'api complete', result) return result } } export default Handler