@umijs/deps
Version:
[](https://packagephobia.now.sh/result?p=@umijs/deps)
173 lines (159 loc) • 8.11 kB
TypeScript
// Type definitions for compression 1.7
// Project: https://github.com/expressjs/compression
// Definitions by: Santi Albo <https://github.com/santialbo>
// Rob van der Burgt <https://github.com/rburgt>
// Neil Bryson Cargamento <https://github.com/neilbryson>
// Piotr Błażejewicz <https://github.com/peterblazejewicz>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
import express = require('../express');
// This module adds a res.flush() method to force the partially-compressed response to be flushed to the client.
declare global {
namespace Express {
interface Response {
/**
* Forces the partially-compressed response to be flushed to the client.
*/
flush(): void;
}
}
}
/**
* Returns the compression middleware using the given `options`. The middleware will attempt to compress response bodies
* for all request that traverse through the middleware, based on the given `options`.
*
* This middleware will never compress responses that include a `Cache-Control` header with the `no-transform` directive,
* as compressing will transform the body.
*
* @see {@link https://github.com/expressjs/compression#compressionoptions|`compression([options]) documentation`}
*/
declare function compression(options?: compression.CompressionOptions): express.RequestHandler;
declare namespace compression {
/**
* The default `filter` function. This is used to construct a custom filter function that is an extension of the default function.
*
* ```js
* var compression = require('compression')
* var express = require('express')
*
* var app = express()
* app.use(compression({ filter: shouldCompress }))
*
* function shouldCompress (req, res) {
* if (req.headers['x-no-compression']) {
* // don't compress responses with this request header
* return false
* }
*
* // fallback to standard filter function
* return compression.filter(req, res)
* }
* ```
*
* @see {@link https://github.com/expressjs/compression#filter-1|`.filter` documentation}
*/
function filter(req: express.Request, res: express.Response): boolean;
/**
* A function to decide if the response should be considered for compression.
*/
interface CompressionFilter {
(req: express.Request, res: express.Response): boolean;
}
/**
* compression() accepts these properties in the options object.
* In addition to those listed below, `zlib` options may be passed in to the options object.
*/
interface CompressionOptions {
/**
* @default zlib.constants.Z_DEFAULT_CHUNK or 16384
* @see {@link http://nodejs.org/api/zlib.html#zlib_memory_usage_tuning| Node.js documentation}
* @see {@link https://github.com/expressjs/compression#chunksize|chunkSize documentation}
*/
chunkSize?: number;
/**
* A function to decide if the response should be considered for compression. This function is called as
* `filter(req, res)` and is expected to return `true` to consider the response for compression, or `false` to
* not compress the response.
*
* The default filter function uses the `compressible` module to determine if `res.getHeader('Content-Type')`
* is compressible.
*
* @see {@link https://github.com/expressjs/compression#filter|`filter` documentation}
* @see {@link https://www.npmjs.com/package/compressible|compressible module}
*/
filter?: CompressionFilter;
/**
* The level of zlib compression to apply to responses. A higher level will result in better compression, but
* will take longer to complete. A lower level will result in less compression, but will be much faster.
*
* This is an integer in the range of `0` (no compression) to `9` (maximum compression). The special value `-1`
* can be used to mean the "default compression level", which is a default compromise between speed and
* compression (currently equivalent to level 6).
*
* - `-1` Default compression level (also `zlib.constants.Z_DEFAULT_COMPRESSION`).
* - `0` No compression (also `zlib.constants.Z_NO_COMPRESSION`).
* - `1` Fastest compression (also `zlib.constants.Z_BEST_SPEED`).
* - `2`
* - `3`
* - `4`
* - `5`
* - `6` (currently what `zlib.constants.Z_DEFAULT_COMPRESSION` points to).
* - `7`
* - `8`
* - `9` Best compression (also `zlib.constants.Z_BEST_COMPRESSION`).
*
* **Note** in the list above, `zlib` is from `zlib = require('zlib')`.
*
* @default zlib.constants.DEFAULT_COMPRESSION or -1
* @see {@link https://github.com/expressjs/compression#level|`level` documentation}
*/
level?: number;
/**
* This specifies how much memory should be allocated for the internal compression state and is an integer in
* the range of `1` (minimum level) and `9` (maximum level).
*
* @default zlib.constants.DEFAULT_MEMLEVEL or 8
* @see {@link http://nodejs.org/api/zlib.html#zlib_memory_usage_tuning|Node.js documentation}
* @see {@link https://github.com/expressjs/compression#memlevel|`memLevel` documentation}
*/
memLevel?: number;
/**
* This is used to tune the compression algorithm. This value only affects the compression ratio, not the
* correctness of the compressed output, even if it is not set appropriately.
*
* - `zlib.constants.Z_DEFAULT_STRATEGY` Use for normal data.
* - `zlib.constants.Z_FILTERED` Use for data produced by a filter (or predictor). Filtered data consists mostly of small
* values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress
* them better. The effect is to force more Huffman coding and less string matching; it is somewhat intermediate
* between `zlib.constants.Z_DEFAULT_STRATEGY` and `zlib.constants.Z_HUFFMAN_ONLY`.
* - `zlib.constants.Z_FIXED` Use to prevent the use of dynamic Huffman codes, allowing for a simpler decoder for special applications.
* - `zlib.constants.Z_HUFFMAN_ONLY` Use to force Huffman encoding only (no string match).
* - `zlib.constants.Z_RLE` Use to limit match distances to one (run-length encoding). This is designed to be almost as
* fast as `zlib.constants.Z_HUFFMAN_ONLY`, but give better compression for PNG image data.
*
* **Note** in the list above, `zlib` is from `zlib = require('zlib')`.
*/
strategy?: number;
/**
* The byte threshold for the response body size before compression is considered for the response, defaults to
* 1kb. This is a number of bytes or any string accepted by the bytes module.
*
* **Note** this is only an advisory setting; if the response size cannot be determined at the time the response
* headers are written, then it is assumed the response is *over* the threshold. To guarantee the response size
* can be determined, be sure set a `Content-Length` response header.
*
* @see {@link https://www.npmjs.com/package/bytes|`bytes` module}
* @see {@link https://github.com/expressjs/compression#threshold|`threshold` documentation}
*/
threshold?: number | string;
/**
* @default zlib.constants.Z_DEFAULT_WINDOWBITS or 15.
* @see {@link http://nodejs.org/api/zlib.html#zlib_memory_usage_tuning|Node.js documentation}
*/
windowBits?: number;
/**
* In addition , `zlib` options may be passed in to the options object.
*/
[property: string]: any;
}
}
export = compression;