From f95d3f5e92a2d38e95d8bab68de2edf329a25fc9 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 6 Apr 2026 21:40:38 -0700 Subject: [PATCH] Move typings and update comment block style. --- src/index.d.ts | 49 +---------------------------------------- src/index.ts | 37 ++++++++++++++++--------------- src/lib/config/index.ts | 33 +++++++++++++++++++-------- 3 files changed, 44 insertions(+), 75 deletions(-) diff --git a/src/index.d.ts b/src/index.d.ts index 53862e9..b845df7 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -1,55 +1,8 @@ //! SPDX-FileCopyrightText: 2025 Chris Duncan //! SPDX-License-Identifier: GPL-3.0-or-later -declare global { - interface Window { - NanoPow: typeof NanoPow - } -} - -export declare class NanoPow { - /** - * Finds a nonce that satisfies the Nano proof-of-work requirements. - * - * @param {bigint | string} hash - Hexadecimal hash of previous block, or public key for new accounts - * @param {object} [options] - Used to configure execution - * @param {string} [options.api] - Specifies how work is generated. Default: best available - * @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false - * @param {number} [options.effort=0x4] - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4 - * @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 - */ - static work_generate (hash: bigint | string, options?: NanoPowOptions): Promise - /** - * Validates that a nonce satisfies Nano proof-of-work requirements. - * - * @param {(bigint|string)} work - Value to validate against hash and difficulty - * @param {(bigint|string)} hash - Hash of previous block, or public key for new accounts - * @param {object} [options] - Used to configure execution - * @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false - * @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 - */ - static work_validate (work: bigint | string, hash: bigint | string, options?: NanoPowOptions): Promise -} -export { NanoPow as default } - -/** -* Input for configuring NanoPow. Must be validated prior to usage, so types are -* `unknown`, but JSDoc indicates expected data types. -* -* @param {string} [api=cpu] - Specifies how work is generated. Default: cpu -* @param {boolean} [debug=false] - Enables additional debug logging to the console. Default: false -* @param {(bigint|string)} [difficulty=0xFFFFFFF800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 -* @param {number} [effort=0x4] - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4 -*/ -export type NanoPowOptions = { - api?: unknown - debug?: unknown - difficulty?: unknown - effort?: unknown -} - /** -* Usee to provide consumer with error information in response to request. +* Provide consumer with error information in response to request. * * @param {string} error - Informative message about error. */ diff --git a/src/index.ts b/src/index.ts index 9555e0e..b745051 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,32 +1,33 @@ //! SPDX-FileCopyrightText: 2025 Chris Duncan //! SPDX-License-Identifier: GPL-3.0-or-later -import { NanoPowOptions, WorkErrorResponse, WorkGenerateResponse, WorkValidateResponse } from '#types' +import { NanoPowOptions } from '#lib/config' +import { WorkErrorResponse, WorkGenerateResponse, WorkValidateResponse } from '#types' import { generate, validate } from './lib' /** -* Finds a nonce that satisfies the Nano proof-of-work requirements. -* -* @param {bigint | string} hash - Hexadecimal hash of previous block, or public key for new accounts -* @param {object} [options] - Used to configure execution -* @param {string} [options.api] - Specifies how work is generated. Default: best available -* @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false -* @param {number} [options.effort=0x4] - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4 -* @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 -*/ + * Finds a nonce that satisfies the Nano proof-of-work requirements. + * + * @param {bigint | string} hash - Hexadecimal hash of previous block, or public key for new accounts + * @param {object} [options] - Used to configure execution + * @param {string} [options.api] - Specifies how work is generated. Default: best available + * @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false + * @param {number} [options.effort=0x4] - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4 + * @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 + */ async function work_generate (hash: bigint | string, options: NanoPowOptions): Promise { return generate(hash, options) } /** -* Validates that a nonce satisfies Nano proof-of-work requirements. -* -* @param {(bigint|string)} work - Value to validate against hash and difficulty -* @param {(bigint|string)} hash - Hash of previous block, or public key for new accounts -* @param {object} [options] - Used to configure execution -* @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false -* @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 -*/ + * Validates that a nonce satisfies Nano proof-of-work requirements. + * + * @param {(bigint|string)} work - Value to validate against hash and difficulty + * @param {(bigint|string)} hash - Hash of previous block, or public key for new accounts + * @param {object} [options] - Used to configure execution + * @param {boolean} [options.debug=false] - Enables additional debug logging to the console. Default: false + * @param {bigint} [options.difficulty=0xfffffff800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 + */ async function work_validate (work: bigint | string, hash: bigint | string, options: NanoPowOptions): Promise { return validate(work, hash, options) } diff --git a/src/lib/config/index.ts b/src/lib/config/index.ts index 1339822..0c1ccc6 100644 --- a/src/lib/config/index.ts +++ b/src/lib/config/index.ts @@ -1,11 +1,26 @@ //! SPDX-FileCopyrightText: 2025 Chris Duncan //! SPDX-License-Identifier: GPL-3.0-or-later -import { NanoPowOptions } from '#types' import { ApiSupport, bigintFrom, bigintToHex, SEND } from '#utils' type ApiSupportedTypes = keyof typeof ApiSupport +/** + * Input for configuring NanoPow. Must be validated prior to usage, so types are + * `unknown`, but JSDoc indicates expected data types. + * + * @param {string} [api=cpu] - Specifies how work is generated. Default: cpu + * @param {boolean} [debug=false] - Enables additional debug logging to the console. Default: false + * @param {(bigint|string)} [difficulty=0xFFFFFFF800000000] - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 + * @param {number} [effort=0x4] - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4 + */ +export type NanoPowOptions = { + api?: unknown + debug?: unknown + difficulty?: unknown + effort?: unknown +} + class NanoPowConfigConstructor implements NanoPowOptions { static #isInternal: boolean = false static get isInternal (): boolean { return this.#isInternal } @@ -132,14 +147,14 @@ class NanoPowConfigConstructor implements NanoPowOptions { } /** -* Validated NanoPowOptions object used to guarantee values and types. Attempting -* to call using `new` with throw a TypeError. -* -* @param {string} api - Specifies how work is generated. Default: best available -* @param {boolean} debug - Enables additional debug logging to the console. Default: false -* @param {bigint} difficulty - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 -* @param {number} effort - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4 -*/ + * Validated NanoPowOptions object used to guarantee values and types. + * Attempting to call using `new` with throw a TypeError. + * + * @param {string} api - Specifies how work is generated. Default: best available + * @param {boolean} debug - Enables additional debug logging to the console. Default: false + * @param {bigint} difficulty - Minimum value result of `BLAKE2b(nonce||blockhash)`. Default: 0xFFFFFFF800000000 + * @param {number} effort - GPU load when generating work. Larger values are not necessarily better since they can quickly overwhelm the GPU. Default: 0x4 + */ export const NanoPowConfig = (options: any): Promise => { try { return NanoPowConfigConstructor.create(options) -- 2.47.3