Latest Socket ResearchMalicious Chrome Extension Performs Hidden Affiliate Hijacking.Details
Socket
Book a DemoInstallSign in
Socket

contentfs

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

contentfs

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

Source
npmnpm
Version
1.2.1
Version published
Weekly downloads
2
Maintainers
1
Weekly downloads
 
Created
Source

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)
await store.set('/filename.txt', Buffer.from('asdf'))
// local store has its tree updated and content stored, remote does not.
let [rootNode, hashes] = await store.push()
// remote was pushed `hashes`
await setRemoteRootNode(rootNode) // tell remote storage to move to the new root node

FAQs

Package last updated on 31 Jul 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts