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

hypercore-multipart

v0.2.0

Published

Partition bytes into several Hypercore feeds.

Downloads

4

Readme

hypercore-multipart

Partition bytes into several Hypercore feeds

Installation

$ npm install hypercore-multipart

Example

const multipart = require('hypercore-multipart')
const Corestore = require('corestore')
const fs = require('fs')

const corestore = new Corestore(ram)

fs.open('/path/to/file', (err, fd) => {
  multipart({ read, pageSize: 5 * 1024 * 1024, bufferSize: 4096 }, (err, parts) => {
    // `parts` is an array of hypercores with a byteLength at most `pageSize`
  })

  function read(offset, length, callback) {
    const buffer = Buffer.alloc(length)
    fs.read(fd, buffer, 0, length, offset, (err) => callback(err, buffer))
  }
})

API

state = multipart(opts, callback)

Reads bytes from a source partitioning chunks into Hypercore feeds where calling callback(err, parts) with an error if one occurs or parts, an array of hypercore feeds. opts can be:

{
  bufferSize: 4096, // how big the read buffers should be
  pageSize: 10 * 1024 * 1024, // how big the hypercore feeds should be
  offset: 0, // the initial offset to start reading at

  corestore: null, // a corestore instance for hypercore creation
  masterKey: crypto.randomBytes(32), // the master key for key derivation
  namespace: 'multipart', // the namespace for key derivation

  read: null, // a function that accepts an offset, length, and callback to read bytes from a source
  stat: null, // a function that explicitly resolves the size of the source
  onpage(page, hypercore), // a function that is called upon cycling to a new page (hypercore)
}

state.bufferSize

The read buffer size for the multipart state.

state.pageSize

The size for each page (hypercore feed) for the multipart state.

state.offset

The current read offset for the multipart state.

state.blocks

The number of blocks in the multipart state.

state.page

The current page of the multipart state.

state.stats

Stats (if available) for the multipart state.

state.masterKey

The master key for the multipart state.

License

MIT