]> zoso.dev Git - nano-pow.git/commitdiff
Use switch-case to evaluate NanoPow work call instead of repeatedly serializing argum...
authorChris Duncan <chris@zoso.dev>
Tue, 22 Apr 2025 20:49:36 +0000 (13:49 -0700)
committerChris Duncan <chris@zoso.dev>
Tue, 22 Apr 2025 20:49:36 +0000 (13:49 -0700)
src/bin/server.ts

index a17fafcbeccd56b1106f322fb4ea1493d7eb0152..58808cb980252e229559b7ebf486248043532b6b 100755 (executable)
@@ -119,14 +119,25 @@ async function respond (res: http.ServerResponse, dataBuffer: Buffer[]): Promise
                        effort: CONFIG.EFFORT,
                        difficulty
                }
-               const args = []
-               if (work) args.push(work)
-               args.push(hash)
-               args.push(options)
-               response = JSON.stringify(await page.evaluate(async (action: string, args: (string | NanoPowOptions)[]): Promise<WorkGenerateResponse | WorkValidateResponse> => {
-                       if (window.NanoPow == null) throw new Error('NanoPow not found')
-                       return await window.NanoPow[action](...args)
-               }, action, args))
+               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))
+                               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))
+                               break
+                       }
+                       default: {
+                               throw new Error('Action must be work_generate or work_validate.')
+                       }
+               }
                statusCode = 200
        } catch (err) {
                log(err)