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

contentfs

v2.2.0

Published

A filesystem style tree on top of content-addressable data storage.

Downloads

14

Readme

contentfs (Content Addressable Filesystem)

Coverage Status Build Status dependencies Status

semantic-release Commitizen friendly JavaScript Style Guide

A filesystem is a tree of names that correspond to points of data.

Content addressablility is when content is referred to by a consistent hash of the content rather than a human readable name.

contenfs is a content addressable filesystem. It stores a map of names to content addresses. This meta info is itself stored in a content addressable manor as well. This means that every "directory" has a hash that will change whenever any of the content in the tree is changed.

This structure is very useful for syncing representations of filesystems and other similar human readable structures and syncing them around. It is not very useful for syncing and merging changes inside of individual files.

contentfs builds on top of lucass, an abstraction for content addressable storage. This allows contentfs to easily map on top of all sorts of underlying storage systems (inmemory, fs, S3, IndexDB, blockchain, etc). The only catch is that the hashing system must be consistent between the two implementations (many implementations allow their hashing to be configured).

let inmem = require('lucass/inmemory')
let localstore = inmem()
let remotestore = inmem()
let store = await contentfs.from(__dirname, localstore, remotestore)
let rootNode = await store.set('/filename.txt', Buffer.from('asdf'))
// local store has its tree updated and content stored, remote does not.
let hashes = await store.push()
// remote was pushed `hashes`