]> zoso.dev Git - nano-pow.git/commitdiff
Refactor Deno cli for puppeteer.
authorChris Duncan <chris@zoso.dev>
Sun, 9 Mar 2025 06:12:14 +0000 (22:12 -0800)
committerChris Duncan <chris@zoso.dev>
Sun, 9 Mar 2025 06:12:14 +0000 (22:12 -0800)
cli.js [changed mode: 0644->0755]
package-lock.json

diff --git a/cli.js b/cli.js
old mode 100644 (file)
new mode 100755 (executable)
index ec50b7a..0c1fc8f
--- a/cli.js
+++ b/cli.js
@@ -1,43 +1,72 @@
-import puppeteer from 'puppeteer'
-import { NanoPowGpu } from '../main.min.js'
+import * as puppeteer from 'puppeteer'
+import * as fs from 'node:fs/promises'
 
-const hash = Deno.args.pop()
+const args = process.argv.slice(2)
+const hash = args.pop()
 if (!/^[0-9A-Fa-f]{64}$/.test(hash)) throw new Error('Invalid block hash')
 
-const args = {}
-for (let i = 0; i < Deno.args.length; i++) {
-  switch (Deno.args[i]) {
+const options = {}
+for (let i = 0; i < args.length; i++) {
+  switch (args[i]) {
     case ('--threshold'):
     case ('-t'): {
-      if (Deno.args[i + 1] == null) throw new Error('Missing argument for threshold')
-      if (/^[0-9A-Fa-f]{,8}$/.test(Deno.args[i + 1])) throw new Error('Invalid threshold')
-      args['threshold'] = parseInt(Deno.args[i + 1], 16)
+      if (args[i + 1] == null) throw new Error('Missing argument for threshold')
+      if (/^[0-9A-Fa-f]{,8}$/.test(args[i + 1])) throw new Error('Invalid threshold')
+      options['threshold'] = parseInt(args[i + 1], 16)
       break
     }
     case ('--effort'):
     case ('-e'): {
-      if (Deno.args[i + 1] == null) throw new Error('Missing argument for effort')
-      if (/^[0-9]{,2}$/.test(Deno.args[i + 1])) throw new Error('Invalid effort')
-      args['effort'] = parseInt(Deno.args[i + 1], 10)
+      if (args[i + 1] == null) throw new Error('Missing argument for effort')
+      if (/^[0-9]{,2}$/.test(args[i + 1])) throw new Error('Invalid effort')
+      options['effort'] = parseInt(args[i + 1], 10)
       break
     }
     case ('--debug'):
     case ('-d'): {
-      args['debug'] = true
+      options['debug'] = true
       break
     }
   }
 }
 
+(async () => {
+  const browser = await puppeteer.launch({
+    headless: true,
+    args: [
+      '--enable-unsafe-webgpu',
+      '--enable-vulkan'
+    ]
+  })
+  const page = await browser.newPage()
+  page.on('console', msg => {
+    console.log(msg.type(), ':', msg.text(), msg.stackTrace())
+  })
+  // await page.addScriptTag({ path: './main.min.js', type: 'module' })
+  const NanoPow = await fs.readFile('./main.min.js', 'utf-8')
+  await page.setContent(`
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <script type="module">
+          console.log('entered html')
+          ${NanoPow}
 
-console.log(`%cNanoPow (WebGPU)`, 'color:green', `Calculate proof-of-work for block hash ${hash}`)
-let work = null
-const start = performance.now()
-try {
-  work = await NanoPowGpu.search(hash, args)
-} catch (err) {
-  console.error(err)
-}
-const end = performance.now()
-const isValid = (await NanoPowGpu.validate(work, hash)) ? 'VALID' : 'INVALID'
-console.log(`${isValid} [${work}] ${hash} (${end - start} ms)`)
+          let work = null
+          const start = performance.now()
+          try {
+            work = await NanoPowGpu.search('${hash}')
+          } catch (err) {
+            console.error(err)
+          }
+          const end = performance.now()
+          const isValid = (await NanoPowGpu.validate(work, hash)) ? 'VALID' : 'INVALID'
+          console.log(\`\${isValid} [\${work}] \${hash} (\${end - start} ms)\`)
+        </script>
+      </head>
+    </html>
+  `)
+
+  await browser.close()
+  console.log('ended puppeteer')
+})()
index 727ce6e9b8c572a671ef6d141164a370a7e2a1d5..3ad27fcfc179b52d9088685ba7efd5f3fab83e95 100644 (file)
@@ -8,11 +8,8 @@
                        "name": "nano-pow",
                        "version": "3.0.0",
                        "license": "(GPL-3.0-or-later AND MIT)",
-                       "dependencies": {
-                               "puppeteer": "*"
-                       },
                        "bin": {
-                               "nano-pow": "dist/bin"
+                               "nano-pow": "dist/cli.js"
                        },
                        "devDependencies": {
                                "@types/node": "^22.13.8",