express-static-gzip
Version:
simple wrapper on top of express.static, that allows serving pre-gziped files
79 lines (65 loc) • 2.98 kB
TypeScript
// Type definitions for express-static-gzip 2.0
/* =================== USAGE ===================
import * as expressStaticGzip from "express-static-gzip";
app.use(expressStaticGzip("wwwroot", {enableBrotli: true, index: 'index.htm'}))
=============================================== */
import * as serverStatic from "serve-static";
/**
* Generates a middleware function to serve static files. It is build on top of serveStatic.
* It extends serveStatic with the capability to serve (previously) gziped files. For this
* it asumes, the gziped files are next to the original files.
* @param root folder to staticly serve files from
* @param options options to configure expressStaticGzip
*/
declare function expressStaticGzip(root: string, options: expressStaticGzip.ExpressStaticGzipOptions): (req: any, res: any, next: any) => any;
declare namespace expressStaticGzip {
/**
* Options to configure an `expressStaticGzip` instance.
*/
interface ExpressStaticGzipOptions {
/**
* Add any other compressions not supported by default.
* `encodingName` will be checked against the request's Accept-Header.
* `fileExtension` is used to find files using this compression.
* `fileExtension` does not require a dot (e.g. 'gz' not '.gz').
* @default null
*/
customCompressions?: Compression[];
/**
* Enables support for the brotli compression, using file extension 'br' (e.g. 'index.html.br').
* @default false
*/
enableBrotli?: boolean;
/**
* By default this module will send "index.html" files in response to a request on a directory.
* To disable this set false or to supply a new index pass a string.
* @default 'index.html'
*/
index?: boolean | string;
/**
* Allows overwriting the client's requested encoding preference
* (see [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding))
* with a server side preference. Any encoding listed in orderPreference will be
* used first (if supported by the client) before falling back to the client's supported encodings.
* The order of entries in orderPreference is taken into account.
* @default null
*/
orderPreference?: string[];
/**
* This will be forwarded to the underlying `serveStatic` instance used by `expressStaticGzip`.
* @default null
*/
serveStatic?: serverStatic.ServeStaticOptions
}
interface Compression {
/**
* Will be checked against the request's Accept-Header.
*/
encodingName: string;
/**
* Is used to find files using this compression.
*/
fileExtension: string;
}
}
export = expressStaticGzip;