45 lines
1.2 KiB
JavaScript
Raw Normal View History

/**
* @packageDocumentation
*
* A [Hash Mapped Trie](https://en.wikipedia.org/wiki/Hash_array_mapped_trie) implementation for JavaScript.
*
* This is used by [@helia/unixfs](https://www.npmjs.com/package/@helia/unixfs) for it's HAMT-sharded directory implementation.
*
* @example
*
* ```TypeScript
* import { createHAMT } from 'hamt-sharding'
* import crypto from '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'
* ```
*/
import { Bucket } from './bucket.js';
import { wrapHash } from './consumable-hash.js';
export function createHAMT(options) {
if (options == null || options.hashFn == null) {
throw new Error('please define an options.hashFn');
}
const bucketOptions = {
bits: options.bits ?? 8,
hash: wrapHash(options.hashFn)
};
return new Bucket(bucketOptions);
}
export { Bucket };
//# sourceMappingURL=index.js.map