main
ts 25 lines 749 Bytes
Raw
1 import { getBrowserInstance } from './get-browser.js'
2
3 const browser = getBrowserInstance()
4
5 export async function evalOnPage <R, T = R> (src: string, transform: (arg: R) => T = (o: any) => o): Promise<T> {
6 const deferred = Promise.withResolvers<T>()
7
8 // test to make sure @ipshipyard/libp2p-inspector-metrics is present on the page
9 browser.devtools.inspectedWindow.eval<R>(src, (result, isException) => {
10 if (isException != null) {
11 // eslint-disable-next-line no-console
12 console.error('could not eval', src, isException)
13 deferred.reject(new Error('Exception'))
14 return
15 }
16
17 try {
18 deferred.resolve(transform(result))
19 } catch (err) {
20 deferred.reject(err)
21 }
22 })
23
24 return deferred.promise
25 }