http range request handler
npm install @ceicc/range

bash
npm i @ceicc/range
`Usage
add
range to an existence express app`js
import { range } from "@ceicc/range"app.get('/public/*', range())
app.listen(3000)
`This will serve every request starts with
/public/ with range.The base directory will be
. or the current working directory, unless specified in the options object.Options Object
####
maxAge - default:
10800
- type: number caching period in seconds.
####
etag - default:
true
- type: boolean add Etag header.
####
lastModified - default:
true
- type: boolean add last-modified header.
####
conditional - default:
true
- type: boolean whether to respect conditional requests or not.
####
range - default:
true
- type: boolean accept range request.
####
notFound - default:
true
- type: boolean|string a handler for non existing files
notFound: false next will be called.
notFound: true empty body with status code '404' will be sent.
notFound: send a file with status code '404', the given string is the path to file. if the path doesn't led to a file,
next will be called. Note: The path is relative to the
baseDir path.####
implicitIndex - default:
true
- type: boolean|Array Check for index files if the request path is a directory.
Pass an array of extensions to check against. e.g. _
["html", "css"]_ Or simply pass
true to check for html extension only.####
baseDir - default:
'.'
- type: string the base dirctory.
####
hushErrors - default:
false
- type: boolean Whether to ignore errors and reply with status code
500, or pass the error to next function.####
trailingSlash - default:
true
- type: boolean Redirect directory requests to add trailing slash.
disabling this option will led to relative path issues. see #9
implicitIndex must be true####
compression - default:
false
- type: false|Array Compress the response body with one of the compression algorithm given in the array.
availabel compression methods are:
1.
"br"
1. "gzip"
1. "deflate" the compression method will be determined based on the request's
accept-encoding header using npm package negotiator.####
dateHeader - default:
true
- type: boolean send
date response header, new Date().toUTCString() function will be used to get the current date. learn more about the
date header
Real World Example
`js
import { fileURLToPath } from "node:url"
import { join, dirname } from "node:path"
import express from "express"
import { range } from "@ceicc/range"const app = express()
const __dirname = dirname(fileURLToPath(import.meta.url))
app.get('*', range({ baseDir: join(__dirname, "public") }))
app.use((error, req, res, next) => {
console.error(error)
res.sendStatus(500)
})
app.listen(3000, () => console.log("server listening on http://localhost:3000"))
``