JavaScript implementation of IPFS' unixfs (a Unix FileSystem representation on top of a MerkleDAG)
The unixfs spec can be found inside the ipfs/specs repository
> npm i ipfs-unixfs
var Unixfs = require('ipfs-unixfs')
The code published to npm that gets loaded on require is in fact a ES5 transpiled version with the right shims added. This means that you can require it and use with your favourite bundler without having to adjust asset management process.
var Unixfs = require('ipfs-unixfs')
Loading this module through a script tag will make the Unixfs
obj available in the global namespace.
<script src="https://npmcdn.com/ipfs-unixfs/dist/index.min.js"></script>
<!-- OR -->
<script src="https://npmcdn.com/ipfs-unixfs/dist/index.js"></script>
var data = new Unixfs('file')
data.addBlockSize(256) // add the size of each block
data.addBlockSize(256)
// ...
Creating a directory that contains several files is achieve by creating a unixfs element that identifies a MerkleDAG node as a directory. The links of that MerkleDAG node are the files that are contained in this directory.
var data = new Unixfs('directory')
message Data {
enum DataType {
Raw = 0;
Directory = 1;
File = 2;
Metadata = 3;
Symlink = 4;
}
required DataType Type = 1;
optional bytes Data = 2;
optional uint64 filesize = 3;
repeated uint64 blocksizes = 4;
}
message Metadata {
required string MimeType = 1;
}
var data = new UnixFS(<type>, [<content>])
Type can be: ['raw', 'directory', 'file', 'metadata', 'symlink']
data.addBlockSize(<size in bytes>)
data.removeBlockSize(<index>)
data.fileSize() // => size in bytes
var marsheled = data.marshal()
var unmarsheled = Unixfs.unmarshal(marsheled)
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.