-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')
+})()