npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

buzhash

v0.0.2

Published

Rolling buzhash

Downloads

31

Readme

BuzHash for js

Usage:

var BuzHash = require('BuzHash');
var buz = new BuzHash(32);
...
var hash = buz.update(byte)

Useful for generating rolling hashes for variable sized chunk deduplication. Pure js implementation though so it's probably slow as balls.

Run node test.js to see 3 test cases with data that has been slightly modified each time. The first column is the byte index, the second is the first 10 characters of the sha256 for that chunk.

Notice that the sha's match up again after the modified sections. With this you can see what chunk is different.

Example Run

$ node test.js
157     matbC9U/2N
698     1NPo9tEVvV
1597    Zz8MfmjG/c <- this chunk will change
1674    g1cpKHjnvw
1983    PWffkkf9eK
2071    KqRcYjnTvQ
2072    Nqnn8clbgv
2073    jjXCzTv2ZB
2517    oMNCS+EtCu
2919    UVdFmFcO0D
3082    sQWGagpnlk
10 0.32%           
157     matbC9U/2N
698     1NPo9tEVvV
1404    f85sZne8lj <- notice it's different to the first data set
1710    OVnGk3Z/6l
1787    g1cpKHjnvw <- but it syncs back up
2096    PWffkkf9eK
2184    KqRcYjnTvQ
2185    Nqnn8clbgv
2186    jjXCzTv2ZB
2630    oMNCS+EtCu
3032    UVdFmFcO0D
3195    sQWGagpnlk
11 0.34%           
157     matbC9U/2N
698     1NPo9tEVvV
1404    lxN32Ed3sv <- in this set I changed one letter and we can see where
1710    OVnGk3Z/6l
1787    g1cpKHjnvw
2096    PWffkkf9eK
2184    KqRcYjnTvQ
2185    Nqnn8clbgv
2186    jjXCzTv2ZB
2630    oMNCS+EtCu
3032    UVdFmFcO0D
3195    sQWGagpnlk
11 0.34%