]> zoso.dev Git - nano-pow.git/commitdiff
Cache NanoPow as puppeteer handle for further evaluate calls.
authorChris Duncan <chris@zoso.dev>
Tue, 22 Apr 2025 21:16:55 +0000 (14:16 -0700)
committerChris Duncan <chris@zoso.dev>
Tue, 22 Apr 2025 21:16:55 +0000 (14:16 -0700)
src/bin/server.ts

index 58808cb980252e229559b7ebf486248043532b6b..298d7777dfe7560bed6ea3ec3eaff1a2b11ed8b9 100755 (executable)
@@ -121,17 +121,17 @@ async function respond (res: http.ServerResponse, dataBuffer: Buffer[]): Promise
                }
                switch (action) {
                        case ('work_generate'): {
-                               response = JSON.stringify(await page.evaluate(async (hash: string, options: NanoPowOptions): Promise<WorkGenerateResponse | WorkValidateResponse> => {
-                                       if (window.NanoPow == null) throw new Error('NanoPow not found')
-                                       return await window.NanoPow.work_generate(hash, options)
-                               }, hash, options))
+                               response = JSON.stringify(await page.evaluate(async (np, hash: string, options: NanoPowOptions): Promise<WorkGenerateResponse | WorkValidateResponse> => {
+                                       if (np == null) throw new Error('NanoPow not found')
+                                       return await np.work_generate(hash, options)
+                               }, npHandle, hash, options))
                                break
                        }
                        case ('work_validate'): {
-                               response = JSON.stringify(await page.evaluate(async (work: string, hash: string, options: NanoPowOptions): Promise<WorkGenerateResponse | WorkValidateResponse> => {
-                                       if (window.NanoPow == null) throw new Error('NanoPow not found')
-                                       return await window.NanoPow.work_validate(work, hash, options)
-                               }, work, hash, options))
+                               response = JSON.stringify(await page.evaluate(async (np, work: string, hash: string, options: NanoPowOptions): Promise<WorkGenerateResponse | WorkValidateResponse> => {
+                                       if (np == null) throw new Error('NanoPow not found')
+                                       return await np.work_validate(work, hash, options)
+                               }, npHandle, work, hash, options))
                                break
                        }
                        default: {
@@ -289,6 +289,7 @@ await page.goto('https://nanopow.invalid/')
 await page.waitForFunction(async (): Promise<boolean> => {
        return window.NanoPow != null
 })
+const npHandle = await page.evaluateHandle(() => window.NanoPow)
 
 log('Puppeteer initialized')