@cowprotocol/cow-sdk
Version:
<p align="center"> <img width="400" src="https://github.com/cowprotocol/cow-sdk/raw/main/docs/images/CoW.png" /> </p>
171 lines (121 loc) • 4.87 kB
Markdown
[](http://ipn.io)
[](http://ipfs.io/)
[](http://webchat.freenode.net/?channels=%23ipfs)
[](https://github.com/RichardLitt/standard-readme)
[](https://travis-ci.com/ipfs-shipyard/js-hamt-sharding)
[](https://codecov.io/gh/ipfs-shipyard/js-hamt-sharding)
[](https://david-dm.org/ipfs/js-hamt-sharding)
[](https://github.com/feross/standard)


> JavaScript implementation of hamt for use in sharding
[](https://github.com/achingbrain)
- [hamt-sharding](
- [Lead Maintainer](
- [Table of Contents](
- [Install](
- [Usage](
- [Example](
- [API](
- [`bucket.put(key, value)`](
- [`bucket.get(key)`](
- [`bucket.del(key)`](
- [`bucket.leafCount()`](
- [`bucket.childrenCount()`](
- [`bucket.onlyChild()`](
- [`bucket.eachLeafSeries()`](
- [`bucket.serialize(map, reduce)`](
- [`bucket.asyncTransform(asyncMap, asyncReduce)`](
- [`bucket.toJSON()`](
- [`bucket.prettyPrint()`](
- [`bucket.tableSize()`](
- [Contribute](
- [License](
```
> npm install hamt-sharding
```
```javascript
const { createHAMT } = require('hamt-sharding')
const crypto = require('crypto-promise')
// decide how to hash buffers made from keys, can return a Promise
const hashFn = async (buf) => {
return crypto
.createHash('sha256')
.update(buf)
.digest()
}
const bucket = createHAMT({
hashFn: hashFn
})
await bucket.put('key', 'value')
const output = await bucket.get('key')
// output === 'value'
```
```javascript
const { createHAMT } = require('hamt-sharding')
```
```javascript
const { createHAMT } = require('hamt-sharding')
const bucket = createHAMT({...})
await bucket.put('key', 'value')
```
```javascript
const { createHAMT } = require('hamt-sharding')
const bucket = createHAMT({...})
await bucket.put('key', 'value')
console.info(await bucket.get('key')) // 'value'
```
```javascript
const { createHAMT } = require('hamt-sharding')
const bucket = createHAMT({...})
await bucket.put('key', 'value')
await bucket.del('key', 'value')
console.info(await bucket.get('key')) // undefined
```
```javascript
const { createHAMT } = require('hamt-sharding')
const bucket = createHAMT({...})
console.info(bucket.leafCount()) // 0
await bucket.put('key', 'value')
console.info(bucket.leafCount()) // 1
```
```javascript
const { createHAMT } = require('hamt-sharding')
const bucket = createHAMT({...})
console.info(bucket.childrenCount()) // 0
await bucket.put('key', 'value')
console.info(bucket.childrenCount()) // 234 -- dependent on hashing algorithm
```
```javascript
const { createHAMT } = require('hamt-sharding')
const bucket = createHAMT({...})
await bucket.put('key', 'value')
for await (const child of bucket.eachLeafSeries()) {
console.info(child.value) // 'value'
}
```
Feel free to join in. All welcome. Open an [issue](https://github.com/ipfs-shipyard/js-hamt-sharding/issues)!
This repository falls under the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
[](https://github.com/ipfs/community/blob/master/contributing.md)
[](LICENSE)