@httpland/range-request-middleware
Version:
HTTP range request middleware
33 lines (32 loc) • 1.11 kB
TypeScript
import { type Middleware } from "./deps.js";
import { UnitLike } from "./transform.js";
import type { Range } from "./types.js";
/** Create range request middleware.
*
* @example
* ```ts
* import { rangeRequest } from "https://deno.land/x/range_request_middleware@$VERSION/middleware.ts";
* import {
* assert,
* assertEquals,
* assertThrows,
* } from "https://deno.land/std/testing/asserts.ts";
*
* const middleware = rangeRequest();
* const request = new Request("test:", {
* headers: { range: "bytes=5-9" },
* });
* const response = await middleware(
* request,
* () => new Response("abcdefghijklmnopqrstuvwxyz"),
* );
*
* assertEquals(response.status, 206);
* assertEquals(response.headers.get("content-range"), "bytes 5-9/26");
* assertEquals(response.headers.get("accept-ranges"), "bytes");
* assertEquals(await response.text(), "fghij");
* ```
*/
export declare function rangeRequest(ranges?: Iterable<Range>): Middleware;
export declare function contentRange(ranges?: Iterable<Range>): Middleware;
export declare function acceptRanges(unitLike?: UnitLike): Middleware;