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 👼.
bash
npm install header-range-parser
js
const {
ERROR_INVALID_ARGUMENT,
ERROR_STRING_IS_NOT_HEADER,
ERROR_UNSATISFIABLE_RESULT,
parseRange,
} = require("header-range-parser");
typescript
import {
ERROR_INVALID_ARGUMENT,
ERROR_STRING_IS_NOT_HEADER,
ERROR_UNSATISFIABLE_RESULT,
ResultInvalid,
ResultUnsatisfiable,
ResultWrongArgument,
parseRange,
} from "header-range-parser";
```typescript import { Result, Ranges, parseRange, Options, } from "header-range-parser";
declare function parseRange( size: number, header: string, options?: Options, ): Ranges | Result; ```
| Parameter | Type | Description |
| :-------- | :---------| :---------------------------------------------------- |
| size
| number
| Required. Size in bytes. |
| header
| string
| Required. String containing header. |
| options
| object
| Optional options: combine (bool), throwError (bool). |
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
```js // 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 }); } ```
These properties are accepted in the options object.
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.
Throw or suppress errors. Defaults to true
.
js
parseRange(
100,
"bytes=50-55,0-10,5-10,56-60",
{
combine: true,
throwError: false,
});
// [
// { start: 0, end: 10 },
// { start: 50, end: 60 }
// ]