JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 51780
  • Score
    100M100P100Q165611F
  • License MIT

Range header field string parser.

Package Exports

  • header-range-parser

Readme

Header • Range • Parser

Range header field parser. Fork of a̶b̶a̶n̶d̶o̶n̶e̶d̶ range-parser. If you write to me with a request to change or update something, I will do it. Honestly 👼.

NPM Version NPM Downloads GitHub Stars Node.js Version Travis CI

TypeScript Typings Maintainability Rating LGTM Codacy Badge Snyk

Range header field parser.

Installation

$ npm install header-range-parser

API

const { parseRange } = require("header-range-parser");
import {
  ERROR_INVALID_ARGUMENT,
  ERROR_STRING_IS_NOT_HEADER,
  ERROR_UNSATISFIABLE_RESULT,
  ResultInvalid,
  ResultUnsatisfiable,
  ResultWrongArgument,
  parseRange,
} from "header-range-parser";

parseRange(size, header, options)

Parse the given header string where size is the size of the selected representation that is to be partitioned into sub-ranges. An array of sub-ranges will be returned or negative numbers indicating an error parsing.

  • -1 or ERROR_UNSATISFIABLE_RESULT or esultUnsatisfiable signals an unsatisfiable range
  • -2 or ERROR_STRING_IS_NOT_HEADER or ResultInvalid signals a malformed header string
  • -3 or ERROR_INVALID_ARGUMENT or ResultWrongArgument invalid parameters
// parse header from request
const subRanges = parseRange(size, request.headers.range);

// the type of the subranges
if (subRanges.type === "bytes") {
  // the ranges
  subRanges.forEach((range) => {
    // do something with range.start and range.end
  });
}

Options

These properties are accepted in the options object.

combine

Specifies if overlapping and adjacent sub-ranges should be combined, defaults to false.

When true, ranges will be combined and returned as if they were specified that way in the header.

throwError

Throw or suppress errors. Defaults to true.

parseRange(
  100,
  "bytes=50-55,0-10,5-10,56-60",
  { combine: true, throwError: false });
// => [
//      { start: 0,  end: 10 },
//      { start: 50, end: 60 }
//    ]

See also

💾 My other projects

Open Source