Allow Function or Buffer for fillDefaultHash
This commit is contained in:
parent
01dd16e364
commit
fd156e194e
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "merkletreejs",
|
"name": "merkletreejs",
|
||||||
"version": "0.2.17",
|
"version": "0.2.18",
|
||||||
"description": "Construct Merkle Trees and verify proofs",
|
"description": "Construct Merkle Trees and verify proofs",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
|
|
|
@ -4,11 +4,11 @@ import Base from './Base'
|
||||||
import treeify from 'treeify'
|
import treeify from 'treeify'
|
||||||
|
|
||||||
type TValue = Buffer | string | number | null | undefined
|
type TValue = Buffer | string | number | null | undefined
|
||||||
type THashAlgoResult = Buffer | string
|
type THashFnResult = Buffer | string
|
||||||
type THashAlgo = (value: TValue) => Buffer
|
type THashFn = (value: TValue) => Buffer
|
||||||
type TLeaf = Buffer
|
type TLeaf = Buffer
|
||||||
type TLayer = any
|
type TLayer = any
|
||||||
type TFillDefaultHash = (idx?: number, hashFn?: THashAlgo) => THashAlgoResult
|
type TFillDefaultHash = (idx?: number, hashFn?: THashFn) => THashFnResult
|
||||||
|
|
||||||
export interface Options {
|
export interface Options {
|
||||||
/** If set to `true`, an odd node will be duplicated and combined to make a pair to generate the layer hash. */
|
/** If set to `true`, an odd node will be duplicated and combined to make a pair to generate the layer hash. */
|
||||||
|
@ -24,7 +24,7 @@ export interface Options {
|
||||||
/** If set to `true`, the leaves and hashing pairs will be sorted. */
|
/** If set to `true`, the leaves and hashing pairs will be sorted. */
|
||||||
sort?: boolean
|
sort?: boolean
|
||||||
/** If defined, the resulting hash of this function will be used to fill in odd numbered layers. */
|
/** If defined, the resulting hash of this function will be used to fill in odd numbered layers. */
|
||||||
fillDefaultHash?: TFillDefaultHash
|
fillDefaultHash?: TFillDefaultHash | Buffer | string
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,7 +33,7 @@ export interface Options {
|
||||||
*/
|
*/
|
||||||
export class MerkleTree extends Base {
|
export class MerkleTree extends Base {
|
||||||
private duplicateOdd: boolean = false
|
private duplicateOdd: boolean = false
|
||||||
private hashFn: THashAlgo
|
private hashFn: THashFn
|
||||||
private hashLeaves: boolean = false
|
private hashLeaves: boolean = false
|
||||||
private isBitcoinTree: boolean = false
|
private isBitcoinTree: boolean = false
|
||||||
private leaves: TLeaf[] = []
|
private leaves: TLeaf[] = []
|
||||||
|
@ -75,8 +75,10 @@ export class MerkleTree extends Base {
|
||||||
if (options.fillDefaultHash) {
|
if (options.fillDefaultHash) {
|
||||||
if (typeof options.fillDefaultHash === 'function') {
|
if (typeof options.fillDefaultHash === 'function') {
|
||||||
this.fillDefaultHash = options.fillDefaultHash
|
this.fillDefaultHash = options.fillDefaultHash
|
||||||
|
} else if (Buffer.isBuffer(options.fillDefaultHash) || typeof options.fillDefaultHash === 'string') {
|
||||||
|
this.fillDefaultHash = (idx?: number, hashFn?: THashFn):THashFnResult => options.fillDefaultHash as THashFnResult
|
||||||
} else {
|
} else {
|
||||||
throw new Error('method "fillDefaultHash" must be a function')
|
throw new Error('method "fillDefaultHash" must be a function, Buffer, or string')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue