import { NanoPowValidate } from '#lib/validate'
import { NanoPowCpu, NanoPowWasm, NanoPowWebgl, NanoPowWebgpu } from '#lib/generate'
import { WorkErrorResponse, WorkGenerateResponse, WorkValidateResponse } from '#types'
-import { bigintFrom, Cache, Queue } from '#utils'
+import { bigintFrom, Cache, Logger, Queue } from '#utils'
import { NanoPowConfig } from '#lib/config'
+const logger = new Logger()
const q = new Queue()
export async function work_generate (hash: unknown, options: unknown): Promise<WorkGenerateResponse | WorkErrorResponse> {
return q.add(async (): Promise<WorkGenerateResponse | WorkErrorResponse> => {
try {
const { api, debug, difficulty, effort } = await NanoPowConfig(options)
+ LOG: logger.isEnabled = debug
const cached = Cache.search(hash, difficulty)
- if (cached) return cached
+ if (cached) {
+ LOG: logger.log('found work in cache')
+ return cached
+ }
switch (api) {
case 'webgpu': {
return Cache.store(await NanoPowWebgpu(bigintFrom(hash, 'hex'), difficulty, effort, debug))