diff --git a/templates/widget/index.ts b/templates/widget/index.ts index 2b5582da..7b4ffbd5 100644 --- a/templates/widget/index.ts +++ b/templates/widget/index.ts @@ -63,6 +63,8 @@ export const solveCaptchaRunner = async (e: Event): Promise => { string: config.string, nonce: resp.work.nonce, result: resp.work.result, + time: resp.work.time, + worker_type: resp.work.worker_type, }; // 3. submit work diff --git a/templates/widget/prove.ts b/templates/widget/prove.ts index 65cfc883..8ce2cf42 100644 --- a/templates/widget/prove.ts +++ b/templates/widget/prove.ts @@ -11,31 +11,66 @@ import { gen_pow } from "@mcaptcha/pow-wasm"; import * as p from "@mcaptcha/pow_sha256-polyfill"; -import { WasmWork, PoWConfig } from "./types"; +import { WasmWork, PoWConfig, SubmitWork } from "./types"; /** * proove work * @param {PoWConfig} config - the proof-of-work configuration using which * work needs to be computed * */ -const prove = async (config: PoWConfig): Promise => { - let proof: WasmWork = null; +const prove = async (config: PoWConfig): Promise => { + const WASM = "wasm"; + const JS = "js"; if (WasmSupported) { + let proof: WasmWork = null; + let res: SubmitWork = null; + let time: number = null; + + const t0 = performance.now(); const proofString = gen_pow( config.salt, config.string, config.difficulty_factor ); + const t1 = performance.now(); + time = t1 - t0; + proof = JSON.parse(proofString); + const worker_type = WASM; + res = { + result: proof.result, + nonce: proof.nonce, + worker_type, + time, + }; + return res; } else { console.log("WASM unsupported, expect delay during proof generation"); + + let proof: WasmWork = null; + let time: number = null; + let res: SubmitWork = null; + + const t0 = performance.now(); + proof = await p.generate_work( config.salt, config.string, config.difficulty_factor ); + const t1 = performance.now(); + time = t1 - t0; + + const worker_type = JS; + res = { + result: proof.result, + nonce: proof.nonce, + worker_type, + time, + }; + + return res; } - return proof; }; // credits: @jf-bastien on Stack Overflow diff --git a/templates/widget/types.ts b/templates/widget/types.ts index b01dfb0c..efc91596 100644 --- a/templates/widget/types.ts +++ b/templates/widget/types.ts @@ -14,6 +14,15 @@ export type Work = { nonce: number; string: string; key: string; + time: number; + worker_type: string; +}; + +export type SubmitWork = { + time: number; + worker_type: string; + result: string; + nonce: number; }; export type WasmWork = { @@ -22,7 +31,7 @@ export type WasmWork = { }; export type ServiceWorkerWork = { - work: WasmWork; + work: SubmitWork; duration: number; };