byte-range-stream
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

byte-range-stream

npm version

Create a multipart/byteranges stream based on passed ranges.

Code heavily inspired by form-data

Installation

npm install --save byte-range-stream

Usage

const fs = require('fs')
const path = require('path')
const ByteRangeStream = require('byte-range-stream')

const filePath = path.join(__dirname, 'example.js')
const totalSize = fs.statSync(filePath).size
const getChunk = (range) => fs.createReadStream(filePath, {start: range.start, end: range.end})

const byteStream = new ByteRangeStream({
  range: 'bytes=0-100',
  getChunk,
  totalSize,
  contentType: 'text/javascript',
})

// Invalid could mean unsupported range type (only "bytes" is supported)
// or incorrect syntax
if (!byteStream.isValid()) {
  console.log('Invalid')
}

// Unsatisfiable could mean out of range
if (!byteStream.isSatisfiable()) {
  console.log('Unsatisfiable')
}

// You will need the generated boundary for the multipart response,
// as well as content length
const headers = byteStream.getHeaders()

process.stdout.write('206 Partial Content\n\n')
for (const header in headers) {
  process.stdout.write(`${header}: ${headers[header]}\n`)
}

process.stdout.write('\n')
byteStream.pipe(process.stdout)

License

MIT © Espen Hovlandsdal

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 3.0.0
    4
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 3.0.0
    4
  • 2.0.1
    266
  • 2.0.0
    1
  • 1.0.0
    1

Package Sidebar

Install

npm i byte-range-stream

Weekly Downloads

207

Version

3.0.0

License

MIT

Unpacked Size

9.64 kB

Total Files

5

Last publish

Collaborators

  • rexxars