From 6653e378172bb0a4612bb41c9bd7dbc34f362260 Mon Sep 17 00:00:00 2001 From: Ryan Ghods Date: Mon, 27 Apr 2020 10:06:53 -0700 Subject: [PATCH 1/2] Use `Nibbles` type for `number[]` --- docs/classes/_basetrie_.trie.md | 102 ++++++++++-------- .../_checkpointtrie_.checkpointtrie.md | 102 ++++++++++-------- docs/classes/_secure_.securetrie.md | 94 +++++++++------- src/baseTrie.ts | 19 ++-- src/util/hex.ts | 16 +-- src/util/nibbles.ts | 20 ++-- 6 files changed, 197 insertions(+), 156 deletions(-) diff --git a/docs/classes/_basetrie_.trie.md b/docs/classes/_basetrie_.trie.md index ab26256..5bb9f22 100644 --- a/docs/classes/_basetrie_.trie.md +++ b/docs/classes/_basetrie_.trie.md @@ -42,12 +42,12 @@ If the db is `null` or left undefined, then the trie will be stored in memory vi * [_deleteNode](_basetrie_.trie.md#_deletenode) * [_findDbNodes](_basetrie_.trie.md#_finddbnodes) * [_findValueNodes](_basetrie_.trie.md#_findvaluenodes) -* [_formatNode](_basetrie_.trie.md#_formatnode) +* [_formatNode](_basetrie_.trie.md#private-_formatnode) * [_lookupNode](_basetrie_.trie.md#_lookupnode) * [_putNode](_basetrie_.trie.md#_putnode) * [_saveStack](_basetrie_.trie.md#private-_savestack) * [_updateNode](_basetrie_.trie.md#private-_updatenode) -* [_walkTrie](_basetrie_.trie.md#_walktrie) +* [_walkTrie](_basetrie_.trie.md#private-_walktrie) * [batch](_basetrie_.trie.md#batch) * [checkRoot](_basetrie_.trie.md#checkroot) * [copy](_basetrie_.trie.md#copy) @@ -67,7 +67,7 @@ If the db is `null` or left undefined, then the trie will be stored in memory vi \+ **new Trie**(`db?`: LevelUp | null, `root?`: Buffer): *[Trie](_basetrie_.trie.md)* -*Defined in [baseTrie.ts:42](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L42)* +*Defined in [baseTrie.ts:43](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L43)* **Parameters:** @@ -84,7 +84,7 @@ Name | Type | • **EMPTY_TRIE_ROOT**: *Buffer* -*Defined in [baseTrie.ts:39](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L39)* +*Defined in [baseTrie.ts:40](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L40)* ___ @@ -92,7 +92,7 @@ ___ • **db**: *DB* -*Defined in [baseTrie.ts:40](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L40)* +*Defined in [baseTrie.ts:41](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L41)* ## Accessors @@ -100,13 +100,13 @@ ___ • **get root**(): *Buffer* -*Defined in [baseTrie.ts:100](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L100)* +*Defined in [baseTrie.ts:101](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L101)* **Returns:** *Buffer* • **set root**(`value`: Buffer): *void* -*Defined in [baseTrie.ts:96](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L96)* +*Defined in [baseTrie.ts:97](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L97)* **Parameters:** @@ -122,7 +122,7 @@ Name | Type | ▸ **_createInitialNode**(`key`: Buffer, `value`: Buffer): *Promise‹void›* -*Defined in [baseTrie.ts:651](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L651)* +*Defined in [baseTrie.ts:659](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L659)* **Parameters:** @@ -139,7 +139,7 @@ ___ ▸ **_deleteNode**(`k`: Buffer, `stack`: TrieNode[]): *Promise‹void›* -*Defined in [baseTrie.ts:529](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L529)* +*Defined in [baseTrie.ts:537](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L537)* **Parameters:** @@ -156,7 +156,7 @@ ___ ▸ **_findDbNodes**(`onFound`: FoundNode): *Promise‹void›* -*Defined in [baseTrie.ts:279](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L279)* +*Defined in [baseTrie.ts:280](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L280)* **Parameters:** @@ -172,7 +172,7 @@ ___ ▸ **_findValueNodes**(`onFound`: FoundNode): *Promise‹void›* -*Defined in [baseTrie.ts:257](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L257)* +*Defined in [baseTrie.ts:258](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L258)* **Parameters:** @@ -184,30 +184,36 @@ Name | Type | ___ -### _formatNode +### `Private` _formatNode ▸ **_formatNode**(`node`: TrieNode, `topLevel`: boolean, `opStack`: BatchDBOp[], `remove`: boolean): *Buffer | null | Buffer‹› | Buffer‹›[][]* -*Defined in [baseTrie.ts:659](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L659)* +*Defined in [baseTrie.ts:675](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L675)* + +Formats node to be saved by levelup.batch. + +**`method`** _formatNode **Parameters:** -Name | Type | Default | ------- | ------ | ------ | -`node` | TrieNode | - | -`topLevel` | boolean | - | -`opStack` | BatchDBOp[] | - | -`remove` | boolean | false | +Name | Type | Default | Description | +------ | ------ | ------ | ------ | +`node` | TrieNode | - | the node to format | +`topLevel` | boolean | - | if the node is at the top level | +`opStack` | BatchDBOp[] | - | the opStack to push the node's data | +`remove` | boolean | false | whether to remove the node (only used for CheckpointTrie) | **Returns:** *Buffer | null | Buffer‹› | Buffer‹›[][]* +- the node's hash used as the key or the rawNode + ___ ### _lookupNode ▸ **_lookupNode**(`node`: Buffer | Buffer[]): *Promise‹TrieNode | null›* -*Defined in [baseTrie.ts:172](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L172)* +*Defined in [baseTrie.ts:173](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L173)* **Parameters:** @@ -223,7 +229,7 @@ ___ ▸ **_putNode**(`node`: TrieNode): *Promise‹void›* -*Defined in [baseTrie.ts:190](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L190)* +*Defined in [baseTrie.ts:191](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L191)* **Parameters:** @@ -237,9 +243,9 @@ ___ ### `Private` _saveStack -▸ **_saveStack**(`key`: number[], `stack`: TrieNode[], `opStack`: BatchDBOp[]): *Promise‹void›* +▸ **_saveStack**(`key`: Nibbles, `stack`: TrieNode[], `opStack`: BatchDBOp[]): *Promise‹void›* -*Defined in [baseTrie.ts:500](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L500)* +*Defined in [baseTrie.ts:508](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L508)* saves a stack @@ -249,7 +255,7 @@ saves a stack Name | Type | Description | ------ | ------ | ------ | -`key` | number[] | the key. Should follow the stack | +`key` | Nibbles | the key. Should follow the stack | `stack` | TrieNode[] | a stack of nodes to the value given by the key | `opStack` | BatchDBOp[] | a stack of levelup operations to commit at the end of this funciton | @@ -259,9 +265,9 @@ ___ ### `Private` _updateNode -▸ **_updateNode**(`k`: Buffer, `value`: Buffer, `keyRemainder`: number[], `stack`: TrieNode[]): *Promise‹void›* +▸ **_updateNode**(`k`: Buffer, `value`: Buffer, `keyRemainder`: Nibbles, `stack`: TrieNode[]): *Promise‹void›* -*Defined in [baseTrie.ts:299](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L299)* +*Defined in [baseTrie.ts:300](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L300)* Updates a node @@ -273,35 +279,41 @@ Name | Type | ------ | ------ | `k` | Buffer | `value` | Buffer | -`keyRemainder` | number[] | +`keyRemainder` | Nibbles | `stack` | TrieNode[] | **Returns:** *Promise‹void›* ___ -### _walkTrie +### `Private` _walkTrie ▸ **_walkTrie**(`root`: Buffer, `onNode`: FoundNode): *Promise‹void›* -*Defined in [baseTrie.ts:399](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L399)* +*Defined in [baseTrie.ts:407](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L407)* + +Walks a trie until finished. + +**`method`** _walkTrie **Parameters:** -Name | Type | ------- | ------ | -`root` | Buffer | -`onNode` | FoundNode | +Name | Type | Description | +------ | ------ | ------ | +`root` | Buffer | - | +`onNode` | FoundNode | callback to call when a node is found | **Returns:** *Promise‹void›* +- returns when finished walking trie + ___ ### batch ▸ **batch**(`ops`: BatchDBOp[]): *Promise‹void›* -*Defined in [baseTrie.ts:713](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L713)* +*Defined in [baseTrie.ts:729](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L729)* The given hash of operations (key additions or deletions) are executed on the DB @@ -333,7 +345,7 @@ ___ ▸ **checkRoot**(`root`: Buffer): *Promise‹boolean›* -*Defined in [baseTrie.ts:729](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L729)* +*Defined in [baseTrie.ts:745](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L745)* Checks if a given root exists. @@ -351,7 +363,7 @@ ___ ▸ **copy**(): *[Trie](_basetrie_.trie.md)* -*Defined in [baseTrie.ts:692](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L692)* +*Defined in [baseTrie.ts:708](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L708)* **Returns:** *[Trie](_basetrie_.trie.md)* @@ -361,7 +373,7 @@ ___ ▸ **createReadStream**(): *ReadStream* -*Defined in [baseTrie.ts:686](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L686)* +*Defined in [baseTrie.ts:702](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L702)* The `data` event is given an `Object` that has two properties; the `key` and the `value`. Both should be Buffers. @@ -379,7 +391,7 @@ ___ ▸ **del**(`key`: Buffer): *Promise‹void›* -*Defined in [baseTrie.ts:162](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L162)* +*Defined in [baseTrie.ts:163](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L163)* deletes a value given a `key` @@ -401,7 +413,7 @@ ___ ▸ **findPath**(`key`: Buffer): *Promise‹Path›* -*Defined in [baseTrie.ts:204](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L204)* +*Defined in [baseTrie.ts:205](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L205)* Tries to find a path to the node for the given key. It returns a `stack` of nodes to the closet node. @@ -424,7 +436,7 @@ ___ ▸ **get**(`key`: Buffer): *Promise‹Buffer | null›* -*Defined in [baseTrie.ts:119](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L119)* +*Defined in [baseTrie.ts:120](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L120)* Gets a value given a `key` @@ -448,7 +460,7 @@ ___ ▸ **put**(`key`: Buffer, `value`: Buffer): *Promise‹void›* -*Defined in [baseTrie.ts:136](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L136)* +*Defined in [baseTrie.ts:137](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L137)* Stores a given `value` at the given `key` @@ -471,7 +483,7 @@ ___ ▸ **setRoot**(`value?`: Buffer): *void* -*Defined in [baseTrie.ts:104](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L104)* +*Defined in [baseTrie.ts:105](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L105)* **Parameters:** @@ -487,7 +499,7 @@ ___ ▸ **fromProof**(`proofNodes`: Buffer[], `proofTrie?`: [Trie](_basetrie_.trie.md)): *Promise‹[Trie](_basetrie_.trie.md)›* -*Defined in [baseTrie.ts:54](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L54)* +*Defined in [baseTrie.ts:55](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L55)* **Parameters:** @@ -504,7 +516,7 @@ ___ ▸ **prove**(`trie`: [Trie](_basetrie_.trie.md), `key`: Buffer): *Promise‹Buffer[]›* -*Defined in [baseTrie.ts:74](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L74)* +*Defined in [baseTrie.ts:75](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L75)* **Parameters:** @@ -521,7 +533,7 @@ ___ ▸ **verifyProof**(`rootHash`: Buffer, `key`: Buffer, `proofNodes`: Buffer[]): *Promise‹Buffer | null›* -*Defined in [baseTrie.ts:82](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L82)* +*Defined in [baseTrie.ts:83](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L83)* **Parameters:** diff --git a/docs/classes/_checkpointtrie_.checkpointtrie.md b/docs/classes/_checkpointtrie_.checkpointtrie.md index c2532c7..e5d7e11 100644 --- a/docs/classes/_checkpointtrie_.checkpointtrie.md +++ b/docs/classes/_checkpointtrie_.checkpointtrie.md @@ -38,12 +38,12 @@ * [_exitCpMode](_checkpointtrie_.checkpointtrie.md#private-_exitcpmode) * [_findDbNodes](_checkpointtrie_.checkpointtrie.md#_finddbnodes) * [_findValueNodes](_checkpointtrie_.checkpointtrie.md#_findvaluenodes) -* [_formatNode](_checkpointtrie_.checkpointtrie.md#_formatnode) +* [_formatNode](_checkpointtrie_.checkpointtrie.md#private-_formatnode) * [_lookupNode](_checkpointtrie_.checkpointtrie.md#_lookupnode) * [_putNode](_checkpointtrie_.checkpointtrie.md#_putnode) * [_saveStack](_checkpointtrie_.checkpointtrie.md#private-_savestack) * [_updateNode](_checkpointtrie_.checkpointtrie.md#private-_updatenode) -* [_walkTrie](_checkpointtrie_.checkpointtrie.md#_walktrie) +* [_walkTrie](_checkpointtrie_.checkpointtrie.md#private-_walktrie) * [batch](_checkpointtrie_.checkpointtrie.md#batch) * [checkRoot](_checkpointtrie_.checkpointtrie.md#checkroot) * [checkpoint](_checkpointtrie_.checkpointtrie.md#checkpoint) @@ -86,7 +86,7 @@ Name | Type | *Inherited from [Trie](_basetrie_.trie.md).[EMPTY_TRIE_ROOT](_basetrie_.trie.md#empty_trie_root)* -*Defined in [baseTrie.ts:39](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L39)* +*Defined in [baseTrie.ts:40](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L40)* ___ @@ -120,7 +120,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[db](_basetrie_.trie.md#db)* -*Defined in [baseTrie.ts:40](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L40)* +*Defined in [baseTrie.ts:41](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L41)* ## Accessors @@ -142,7 +142,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[root](_basetrie_.trie.md#root)* -*Defined in [baseTrie.ts:100](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L100)* +*Defined in [baseTrie.ts:101](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L101)* **Returns:** *Buffer* @@ -150,7 +150,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[root](_basetrie_.trie.md#root)* -*Defined in [baseTrie.ts:96](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L96)* +*Defined in [baseTrie.ts:97](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L97)* **Parameters:** @@ -168,7 +168,7 @@ Name | Type | *Inherited from [Trie](_basetrie_.trie.md).[_createInitialNode](_basetrie_.trie.md#_createinitialnode)* -*Defined in [baseTrie.ts:651](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L651)* +*Defined in [baseTrie.ts:659](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L659)* **Parameters:** @@ -208,7 +208,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_deleteNode](_basetrie_.trie.md#_deletenode)* -*Defined in [baseTrie.ts:529](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L529)* +*Defined in [baseTrie.ts:537](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L537)* **Parameters:** @@ -257,7 +257,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_findDbNodes](_basetrie_.trie.md#_finddbnodes)* -*Defined in [baseTrie.ts:279](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L279)* +*Defined in [baseTrie.ts:280](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L280)* **Parameters:** @@ -275,7 +275,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_findValueNodes](_basetrie_.trie.md#_findvaluenodes)* -*Defined in [baseTrie.ts:257](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L257)* +*Defined in [baseTrie.ts:258](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L258)* **Parameters:** @@ -287,25 +287,31 @@ Name | Type | ___ -### _formatNode +### `Private` _formatNode ▸ **_formatNode**(`node`: TrieNode, `topLevel`: boolean, `opStack`: BatchDBOp[], `remove`: boolean): *Buffer‹› | null | Buffer‹› | Buffer‹›[][]* -*Overrides [Trie](_basetrie_.trie.md).[_formatNode](_basetrie_.trie.md#_formatnode)* +*Overrides [Trie](_basetrie_.trie.md).[_formatNode](_basetrie_.trie.md#private-_formatnode)* + +*Defined in [checkpointTrie.ts:157](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/checkpointTrie.ts#L157)* -*Defined in [checkpointTrie.ts:149](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/checkpointTrie.ts#L149)* +Formats node to be saved by levelup.batch. + +**`method`** _formatNode **Parameters:** -Name | Type | Default | ------- | ------ | ------ | -`node` | TrieNode | - | -`topLevel` | boolean | - | -`opStack` | BatchDBOp[] | - | -`remove` | boolean | false | +Name | Type | Default | Description | +------ | ------ | ------ | ------ | +`node` | TrieNode | - | the node to format | +`topLevel` | boolean | - | if the node is at the top level | +`opStack` | BatchDBOp[] | - | the opStack to push the node's data | +`remove` | boolean | false | whether to remove the node (only used for CheckpointTrie) | **Returns:** *Buffer‹› | null | Buffer‹› | Buffer‹›[][]* +- the node's hash used as the key or the rawNode + ___ ### _lookupNode @@ -314,7 +320,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_lookupNode](_basetrie_.trie.md#_lookupnode)* -*Defined in [baseTrie.ts:172](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L172)* +*Defined in [baseTrie.ts:173](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L173)* **Parameters:** @@ -332,7 +338,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_putNode](_basetrie_.trie.md#_putnode)* -*Defined in [baseTrie.ts:190](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L190)* +*Defined in [baseTrie.ts:191](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L191)* **Parameters:** @@ -346,11 +352,11 @@ ___ ### `Private` _saveStack -▸ **_saveStack**(`key`: number[], `stack`: TrieNode[], `opStack`: BatchDBOp[]): *Promise‹void›* +▸ **_saveStack**(`key`: Nibbles, `stack`: TrieNode[], `opStack`: BatchDBOp[]): *Promise‹void›* *Inherited from [Trie](_basetrie_.trie.md).[_saveStack](_basetrie_.trie.md#private-_savestack)* -*Defined in [baseTrie.ts:500](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L500)* +*Defined in [baseTrie.ts:508](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L508)* saves a stack @@ -360,7 +366,7 @@ saves a stack Name | Type | Description | ------ | ------ | ------ | -`key` | number[] | the key. Should follow the stack | +`key` | Nibbles | the key. Should follow the stack | `stack` | TrieNode[] | a stack of nodes to the value given by the key | `opStack` | BatchDBOp[] | a stack of levelup operations to commit at the end of this funciton | @@ -370,11 +376,11 @@ ___ ### `Private` _updateNode -▸ **_updateNode**(`k`: Buffer, `value`: Buffer, `keyRemainder`: number[], `stack`: TrieNode[]): *Promise‹void›* +▸ **_updateNode**(`k`: Buffer, `value`: Buffer, `keyRemainder`: Nibbles, `stack`: TrieNode[]): *Promise‹void›* *Inherited from [Trie](_basetrie_.trie.md).[_updateNode](_basetrie_.trie.md#private-_updatenode)* -*Defined in [baseTrie.ts:299](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L299)* +*Defined in [baseTrie.ts:300](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L300)* Updates a node @@ -386,30 +392,36 @@ Name | Type | ------ | ------ | `k` | Buffer | `value` | Buffer | -`keyRemainder` | number[] | +`keyRemainder` | Nibbles | `stack` | TrieNode[] | **Returns:** *Promise‹void›* ___ -### _walkTrie +### `Private` _walkTrie ▸ **_walkTrie**(`root`: Buffer, `onNode`: FoundNode): *Promise‹void›* -*Inherited from [Trie](_basetrie_.trie.md).[_walkTrie](_basetrie_.trie.md#_walktrie)* +*Inherited from [Trie](_basetrie_.trie.md).[_walkTrie](_basetrie_.trie.md#private-_walktrie)* + +*Defined in [baseTrie.ts:407](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L407)* -*Defined in [baseTrie.ts:399](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L399)* +Walks a trie until finished. + +**`method`** _walkTrie **Parameters:** -Name | Type | ------- | ------ | -`root` | Buffer | -`onNode` | FoundNode | +Name | Type | Description | +------ | ------ | ------ | +`root` | Buffer | - | +`onNode` | FoundNode | callback to call when a node is found | **Returns:** *Promise‹void›* +- returns when finished walking trie + ___ ### batch @@ -418,7 +430,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[batch](_basetrie_.trie.md#batch)* -*Defined in [baseTrie.ts:713](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L713)* +*Defined in [baseTrie.ts:729](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L729)* The given hash of operations (key additions or deletions) are executed on the DB @@ -452,7 +464,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[checkRoot](_basetrie_.trie.md#checkroot)* -*Defined in [baseTrie.ts:729](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L729)* +*Defined in [baseTrie.ts:745](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L745)* Checks if a given root exists. @@ -526,7 +538,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[createReadStream](_basetrie_.trie.md#createreadstream)* -*Defined in [baseTrie.ts:686](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L686)* +*Defined in [baseTrie.ts:702](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L702)* The `data` event is given an `Object` that has two properties; the `key` and the `value`. Both should be Buffers. @@ -546,7 +558,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[del](_basetrie_.trie.md#del)* -*Defined in [baseTrie.ts:162](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L162)* +*Defined in [baseTrie.ts:163](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L163)* deletes a value given a `key` @@ -570,7 +582,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[findPath](_basetrie_.trie.md#findpath)* -*Defined in [baseTrie.ts:204](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L204)* +*Defined in [baseTrie.ts:205](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L205)* Tries to find a path to the node for the given key. It returns a `stack` of nodes to the closet node. @@ -595,7 +607,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[get](_basetrie_.trie.md#get)* -*Defined in [baseTrie.ts:119](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L119)* +*Defined in [baseTrie.ts:120](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L120)* Gets a value given a `key` @@ -621,7 +633,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[put](_basetrie_.trie.md#put)* -*Defined in [baseTrie.ts:136](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L136)* +*Defined in [baseTrie.ts:137](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L137)* Stores a given `value` at the given `key` @@ -660,7 +672,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[setRoot](_basetrie_.trie.md#setroot)* -*Defined in [baseTrie.ts:104](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L104)* +*Defined in [baseTrie.ts:105](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L105)* **Parameters:** @@ -678,7 +690,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[fromProof](_basetrie_.trie.md#static-fromproof)* -*Defined in [baseTrie.ts:54](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L54)* +*Defined in [baseTrie.ts:55](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L55)* **Parameters:** @@ -697,7 +709,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[prove](_basetrie_.trie.md#static-prove)* -*Defined in [baseTrie.ts:74](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L74)* +*Defined in [baseTrie.ts:75](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L75)* **Parameters:** @@ -716,7 +728,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[verifyProof](_basetrie_.trie.md#static-verifyproof)* -*Defined in [baseTrie.ts:82](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L82)* +*Defined in [baseTrie.ts:83](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L83)* **Parameters:** diff --git a/docs/classes/_secure_.securetrie.md b/docs/classes/_secure_.securetrie.md index 4a61cdf..98d745b 100644 --- a/docs/classes/_secure_.securetrie.md +++ b/docs/classes/_secure_.securetrie.md @@ -44,12 +44,12 @@ It has the same methods and constructor as `Trie`. * [_exitCpMode](_secure_.securetrie.md#private-_exitcpmode) * [_findDbNodes](_secure_.securetrie.md#_finddbnodes) * [_findValueNodes](_secure_.securetrie.md#_findvaluenodes) -* [_formatNode](_secure_.securetrie.md#_formatnode) +* [_formatNode](_secure_.securetrie.md#private-_formatnode) * [_lookupNode](_secure_.securetrie.md#_lookupnode) * [_putNode](_secure_.securetrie.md#_putnode) * [_saveStack](_secure_.securetrie.md#private-_savestack) * [_updateNode](_secure_.securetrie.md#private-_updatenode) -* [_walkTrie](_secure_.securetrie.md#_walktrie) +* [_walkTrie](_secure_.securetrie.md#private-_walktrie) * [batch](_secure_.securetrie.md#batch) * [checkRoot](_secure_.securetrie.md#checkroot) * [checkpoint](_secure_.securetrie.md#checkpoint) @@ -92,7 +92,7 @@ Name | Type | *Inherited from [Trie](_basetrie_.trie.md).[EMPTY_TRIE_ROOT](_basetrie_.trie.md#empty_trie_root)* -*Defined in [baseTrie.ts:39](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L39)* +*Defined in [baseTrie.ts:40](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L40)* ___ @@ -132,7 +132,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[db](_basetrie_.trie.md#db)* -*Defined in [baseTrie.ts:40](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L40)* +*Defined in [baseTrie.ts:41](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L41)* ## Accessors @@ -156,7 +156,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[root](_basetrie_.trie.md#root)* -*Defined in [baseTrie.ts:100](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L100)* +*Defined in [baseTrie.ts:101](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L101)* **Returns:** *Buffer* @@ -164,7 +164,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[root](_basetrie_.trie.md#root)* -*Defined in [baseTrie.ts:96](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L96)* +*Defined in [baseTrie.ts:97](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L97)* **Parameters:** @@ -182,7 +182,7 @@ Name | Type | *Inherited from [Trie](_basetrie_.trie.md).[_createInitialNode](_basetrie_.trie.md#_createinitialnode)* -*Defined in [baseTrie.ts:651](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L651)* +*Defined in [baseTrie.ts:659](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L659)* **Parameters:** @@ -224,7 +224,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_deleteNode](_basetrie_.trie.md#_deletenode)* -*Defined in [baseTrie.ts:529](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L529)* +*Defined in [baseTrie.ts:537](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L537)* **Parameters:** @@ -277,7 +277,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_findDbNodes](_basetrie_.trie.md#_finddbnodes)* -*Defined in [baseTrie.ts:279](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L279)* +*Defined in [baseTrie.ts:280](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L280)* **Parameters:** @@ -295,7 +295,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_findValueNodes](_basetrie_.trie.md#_findvaluenodes)* -*Defined in [baseTrie.ts:257](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L257)* +*Defined in [baseTrie.ts:258](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L258)* **Parameters:** @@ -307,27 +307,33 @@ Name | Type | ___ -### _formatNode +### `Private` _formatNode ▸ **_formatNode**(`node`: TrieNode, `topLevel`: boolean, `opStack`: BatchDBOp[], `remove`: boolean): *Buffer‹› | null | Buffer‹› | Buffer‹›[][]* -*Inherited from [CheckpointTrie](_checkpointtrie_.checkpointtrie.md).[_formatNode](_checkpointtrie_.checkpointtrie.md#_formatnode)* +*Inherited from [CheckpointTrie](_checkpointtrie_.checkpointtrie.md).[_formatNode](_checkpointtrie_.checkpointtrie.md#private-_formatnode)* + +*Overrides [Trie](_basetrie_.trie.md).[_formatNode](_basetrie_.trie.md#private-_formatnode)* + +*Defined in [checkpointTrie.ts:157](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/checkpointTrie.ts#L157)* -*Overrides [Trie](_basetrie_.trie.md).[_formatNode](_basetrie_.trie.md#_formatnode)* +Formats node to be saved by levelup.batch. -*Defined in [checkpointTrie.ts:149](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/checkpointTrie.ts#L149)* +**`method`** _formatNode **Parameters:** -Name | Type | Default | ------- | ------ | ------ | -`node` | TrieNode | - | -`topLevel` | boolean | - | -`opStack` | BatchDBOp[] | - | -`remove` | boolean | false | +Name | Type | Default | Description | +------ | ------ | ------ | ------ | +`node` | TrieNode | - | the node to format | +`topLevel` | boolean | - | if the node is at the top level | +`opStack` | BatchDBOp[] | - | the opStack to push the node's data | +`remove` | boolean | false | whether to remove the node (only used for CheckpointTrie) | **Returns:** *Buffer‹› | null | Buffer‹› | Buffer‹›[][]* +- the node's hash used as the key or the rawNode + ___ ### _lookupNode @@ -336,7 +342,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_lookupNode](_basetrie_.trie.md#_lookupnode)* -*Defined in [baseTrie.ts:172](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L172)* +*Defined in [baseTrie.ts:173](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L173)* **Parameters:** @@ -354,7 +360,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[_putNode](_basetrie_.trie.md#_putnode)* -*Defined in [baseTrie.ts:190](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L190)* +*Defined in [baseTrie.ts:191](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L191)* **Parameters:** @@ -368,11 +374,11 @@ ___ ### `Private` _saveStack -▸ **_saveStack**(`key`: number[], `stack`: TrieNode[], `opStack`: BatchDBOp[]): *Promise‹void›* +▸ **_saveStack**(`key`: Nibbles, `stack`: TrieNode[], `opStack`: BatchDBOp[]): *Promise‹void›* *Inherited from [Trie](_basetrie_.trie.md).[_saveStack](_basetrie_.trie.md#private-_savestack)* -*Defined in [baseTrie.ts:500](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L500)* +*Defined in [baseTrie.ts:508](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L508)* saves a stack @@ -382,7 +388,7 @@ saves a stack Name | Type | Description | ------ | ------ | ------ | -`key` | number[] | the key. Should follow the stack | +`key` | Nibbles | the key. Should follow the stack | `stack` | TrieNode[] | a stack of nodes to the value given by the key | `opStack` | BatchDBOp[] | a stack of levelup operations to commit at the end of this funciton | @@ -392,11 +398,11 @@ ___ ### `Private` _updateNode -▸ **_updateNode**(`k`: Buffer, `value`: Buffer, `keyRemainder`: number[], `stack`: TrieNode[]): *Promise‹void›* +▸ **_updateNode**(`k`: Buffer, `value`: Buffer, `keyRemainder`: Nibbles, `stack`: TrieNode[]): *Promise‹void›* *Inherited from [Trie](_basetrie_.trie.md).[_updateNode](_basetrie_.trie.md#private-_updatenode)* -*Defined in [baseTrie.ts:299](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L299)* +*Defined in [baseTrie.ts:300](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L300)* Updates a node @@ -408,30 +414,36 @@ Name | Type | ------ | ------ | `k` | Buffer | `value` | Buffer | -`keyRemainder` | number[] | +`keyRemainder` | Nibbles | `stack` | TrieNode[] | **Returns:** *Promise‹void›* ___ -### _walkTrie +### `Private` _walkTrie ▸ **_walkTrie**(`root`: Buffer, `onNode`: FoundNode): *Promise‹void›* -*Inherited from [Trie](_basetrie_.trie.md).[_walkTrie](_basetrie_.trie.md#_walktrie)* +*Inherited from [Trie](_basetrie_.trie.md).[_walkTrie](_basetrie_.trie.md#private-_walktrie)* + +*Defined in [baseTrie.ts:407](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L407)* + +Walks a trie until finished. -*Defined in [baseTrie.ts:399](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L399)* +**`method`** _walkTrie **Parameters:** -Name | Type | ------- | ------ | -`root` | Buffer | -`onNode` | FoundNode | +Name | Type | Description | +------ | ------ | ------ | +`root` | Buffer | - | +`onNode` | FoundNode | callback to call when a node is found | **Returns:** *Promise‹void›* +- returns when finished walking trie + ___ ### batch @@ -440,7 +452,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[batch](_basetrie_.trie.md#batch)* -*Defined in [baseTrie.ts:713](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L713)* +*Defined in [baseTrie.ts:729](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L729)* The given hash of operations (key additions or deletions) are executed on the DB @@ -474,7 +486,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[checkRoot](_basetrie_.trie.md#checkroot)* -*Defined in [baseTrie.ts:729](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L729)* +*Defined in [baseTrie.ts:745](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L745)* Checks if a given root exists. @@ -542,7 +554,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[createReadStream](_basetrie_.trie.md#createreadstream)* -*Defined in [baseTrie.ts:686](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L686)* +*Defined in [baseTrie.ts:702](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L702)* The `data` event is given an `Object` that has two properties; the `key` and the `value`. Both should be Buffers. @@ -580,7 +592,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[findPath](_basetrie_.trie.md#findpath)* -*Defined in [baseTrie.ts:204](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L204)* +*Defined in [baseTrie.ts:205](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L205)* Tries to find a path to the node for the given key. It returns a `stack` of nodes to the closet node. @@ -661,7 +673,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[setRoot](_basetrie_.trie.md#setroot)* -*Defined in [baseTrie.ts:104](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L104)* +*Defined in [baseTrie.ts:105](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L105)* **Parameters:** @@ -679,7 +691,7 @@ ___ *Inherited from [Trie](_basetrie_.trie.md).[fromProof](_basetrie_.trie.md#static-fromproof)* -*Defined in [baseTrie.ts:54](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L54)* +*Defined in [baseTrie.ts:55](https://github.com/ethereumjs/merkle-patricia-tree/blob/master/src/baseTrie.ts#L55)* **Parameters:** diff --git a/src/baseTrie.ts b/src/baseTrie.ts index 972f5a5..d13490b 100644 --- a/src/baseTrie.ts +++ b/src/baseTrie.ts @@ -14,16 +14,17 @@ import { ExtensionNode, LeafNode, EmbeddedNode, + Nibbles, } from './trieNode' const assert = require('assert') interface Path { node: TrieNode | null - remaining: number[] + remaining: Nibbles stack: TrieNode[] } -type FoundNode = (nodeRef: Buffer, node: TrieNode, key: number[], walkController: any) => void +type FoundNode = (nodeRef: Buffer, node: TrieNode, key: Nibbles, walkController: any) => void /** * Use `import { BaseTrie as Trie } from 'merkle-patricia-tree'` for the base interface. @@ -292,14 +293,14 @@ export class Trie { * @private * @param {Buffer} key * @param {Buffer} value - * @param {number[]} keyRemainder + * @param {Nibbles} keyRemainder * @param {TrieNode[]} stack * @returns {Promise} */ async _updateNode( k: Buffer, value: Buffer, - keyRemainder: number[], + keyRemainder: Nibbles, stack: TrieNode[], ): Promise { const toSave: BatchDBOp[] = [] @@ -421,7 +422,7 @@ export class Trie { const processNode = async ( nodeRef: Buffer, node: TrieNode, - key: number[] = [], + key: Nibbles = [], ): Promise => { const walkController = { next: async () => { @@ -442,7 +443,7 @@ export class Trie { return resolve() } for (const child of children) { - const keyExtension = child[0] as number[] + const keyExtension = child[0] as Nibbles const childRef = child[1] as Buffer const childKey = key.concat(keyExtension) const priority = childKey.length @@ -499,12 +500,12 @@ export class Trie { * saves a stack * @method _saveStack * @private - * @param {Array} key - the key. Should follow the stack + * @param {Nibbles} key - the key. Should follow the stack * @param {Array} stack - a stack of nodes to the value given by the key * @param {Array} opStack - a stack of levelup operations to commit at the end of this funciton * @returns {Promise} */ - async _saveStack(key: number[], stack: TrieNode[], opStack: BatchDBOp[]): Promise { + async _saveStack(key: Nibbles, stack: TrieNode[], opStack: BatchDBOp[]): Promise { let lastRoot // update nodes @@ -535,7 +536,7 @@ export class Trie { async _deleteNode(k: Buffer, stack: TrieNode[]): Promise { const processBranchNode = ( - key: number[], + key: Nibbles, branchKey: number, branchNode: TrieNode, parentNode: TrieNode, diff --git a/src/util/hex.ts b/src/util/hex.ts index 17aa25a..9942e93 100644 --- a/src/util/hex.ts +++ b/src/util/hex.ts @@ -1,10 +1,12 @@ +import { Nibbles } from '../trieNode' + /** * Prepends hex prefix to an array of nibbles. * @method addHexPrefix - * @param {Array} Array of nibbles - * @returns {Array} - returns buffer of encoded data + * @param {Nibbles} key - Array of nibbles + * @returns {Nibbles} - returns buffer of encoded data **/ -export function addHexPrefix(key: number[], terminator: boolean): number[] { +export function addHexPrefix(key: Nibbles, terminator: boolean): Nibbles { // odd if (key.length % 2) { key.unshift(1) @@ -24,10 +26,10 @@ export function addHexPrefix(key: number[], terminator: boolean): number[] { /** * Removes hex prefix of an array of nibbles. * @method removeHexPrefix - * @param {Array} Array of nibbles + * @param {Nibbles} val - Array of nibbles * @private */ -export function removeHexPrefix(val: number[]): number[] { +export function removeHexPrefix(val: Nibbles): Nibbles { if (val[0] % 2) { val = val.slice(1) } else { @@ -40,9 +42,9 @@ export function removeHexPrefix(val: number[]): number[] { /** * Returns true if hexprefixed path is for a terminating (leaf) node. * @method isTerminator - * @param {Array} key - an hexprefixed array of nibbles + * @param {Nibbles} key - an hexprefixed array of nibbles * @private */ -export function isTerminator(key: number[]): boolean { +export function isTerminator(key: Nibbles): boolean { return key[0] > 1 } diff --git a/src/util/nibbles.ts b/src/util/nibbles.ts index c5723d0..ad72a5e 100644 --- a/src/util/nibbles.ts +++ b/src/util/nibbles.ts @@ -1,10 +1,12 @@ +import { Nibbles } from '../trieNode' + /** * Converts a buffer to a nibble array. * @method bufferToNibbles * @param {Buffer} key * @private */ -export function bufferToNibbles(key: Buffer): number[] { +export function bufferToNibbles(key: Buffer): Nibbles { const bkey = Buffer.from(key) let nibbles = [] as any @@ -21,10 +23,10 @@ export function bufferToNibbles(key: Buffer): number[] { /** * Converts a nibble array into a buffer. * @method nibblesToBuffer - * @param {Array} Nibble array + * @param {Nibbles} arr - Nibble array * @private */ -export function nibblesToBuffer(arr: number[]): Buffer { +export function nibblesToBuffer(arr: Nibbles): Buffer { let buf = Buffer.alloc(arr.length / 2) for (let i = 0; i < buf.length; i++) { let q = i * 2 @@ -36,11 +38,11 @@ export function nibblesToBuffer(arr: number[]): Buffer { /** * Returns the number of in order matching nibbles of two give nibble arrays. * @method matchingNibbleLength - * @param {Array} nib1 - * @param {Array} nib2 + * @param {Nibbles} nib1 + * @param {Nibbles} nib2 * @private */ -export function matchingNibbleLength(nib1: number[], nib2: number[]): number { +export function matchingNibbleLength(nib1: Nibbles, nib2: Nibbles): number { let i = 0 while (nib1[i] === nib2[i] && nib1.length > i) { i++ @@ -50,10 +52,10 @@ export function matchingNibbleLength(nib1: number[], nib2: number[]): number { /** * Compare two nibble array keys. - * @param {Array} keyA - * @param {Array} keyB + * @param {Nibbles} keyA + * @param {Nibbles} keyB */ -export function doKeysMatch(keyA: number[], keyB: number[]): boolean { +export function doKeysMatch(keyA: Nibbles, keyB: Nibbles): boolean { const length = matchingNibbleLength(keyA, keyB) return length === keyA.length && length === keyB.length } From 0e1dff384e7493c746489f0940d38ed27f42d730 Mon Sep 17 00:00:00 2001 From: Ryan Ghods Date: Mon, 27 Apr 2020 10:23:47 -0700 Subject: [PATCH 2/2] docs: `putRaw` => `db.put` --- docs/classes/_checkpointtrie_.checkpointtrie.md | 2 +- docs/classes/_secure_.securetrie.md | 2 +- src/checkpointTrie.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/classes/_checkpointtrie_.checkpointtrie.md b/docs/classes/_checkpointtrie_.checkpointtrie.md index e5d7e11..a2f7e5e 100644 --- a/docs/classes/_checkpointtrie_.checkpointtrie.md +++ b/docs/classes/_checkpointtrie_.checkpointtrie.md @@ -486,7 +486,7 @@ ___ Creates a checkpoint that can later be reverted to or committed. After this is called, no changes to the trie will be permanently saved -until `commit` is called. Calling `putRaw` overrides the checkpointing +until `commit` is called. Calling `db.put` overrides the checkpointing mechanism and would directly write to db. **Returns:** *void* diff --git a/docs/classes/_secure_.securetrie.md b/docs/classes/_secure_.securetrie.md index 98d745b..d96a0d3 100644 --- a/docs/classes/_secure_.securetrie.md +++ b/docs/classes/_secure_.securetrie.md @@ -510,7 +510,7 @@ ___ Creates a checkpoint that can later be reverted to or committed. After this is called, no changes to the trie will be permanently saved -until `commit` is called. Calling `putRaw` overrides the checkpointing +until `commit` is called. Calling `db.put` overrides the checkpointing mechanism and would directly write to db. **Returns:** *void* diff --git a/src/checkpointTrie.ts b/src/checkpointTrie.ts index 459ff38..a39d16d 100644 --- a/src/checkpointTrie.ts +++ b/src/checkpointTrie.ts @@ -30,7 +30,7 @@ export class CheckpointTrie extends BaseTrie { /** * Creates a checkpoint that can later be reverted to or committed. * After this is called, no changes to the trie will be permanently saved - * until `commit` is called. Calling `putRaw` overrides the checkpointing + * until `commit` is called. Calling `db.put` overrides the checkpointing * mechanism and would directly write to db. */ checkpoint() {