3.0.2 • Published 1 year ago

@ceicc/range v3.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Range

Middleware for serving static files

NPM Downloads per month Module type

Installation

npm i @ceicc/range

Usage

add range to an existence express app

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: <string> 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<string>

    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<string>

    Compress the response body with one of the compression algorithm given in the array.

    availabel compression methods are:

  1. "br"
  2. "gzip"
  3. "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

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"))
3.0.2

1 year ago

3.0.1

2 years ago

3.0.0

2 years ago

3.0.0-beta.5

2 years ago

3.0.0-beta.7

2 years ago

3.0.0-beta.6

2 years ago

3.0.0-beta.8

2 years ago

2.2.2

2 years ago

3.0.0-beta.4

2 years ago

3.0.0-beta.3

2 years ago

3.0.0-beta.2

2 years ago

2.2.1

2 years ago

2.2.0

2 years ago

3.0.0-beta.1

2 years ago

2.1.0

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago