4.0.2 • Published 5 months ago
koa-files v4.0.2
koa-files
A static files serving middleware for koa.
Installation
$ npm install koa-files
API
import { Middleware } from 'koa';
import fs, { Stats } from 'node:fs';
interface Headers {
[key: string]: string | string[];
}
interface IgnoreFunction {
(path: string): boolean | Promise<boolean>;
}
interface HeadersFunction {
(path: string, stats: Stats): Promise<Headers | void> | Headers | void;
}
export interface FileSystem {
stat: typeof fs.stat;
open: typeof fs.open;
read: typeof fs.read;
close: typeof fs.close;
}
export interface Options {
fs?: FileSystem;
defer?: boolean;
etag?: boolean;
acceptRanges?: boolean;
lastModified?: boolean;
highWaterMark?: number;
ignore?: IgnoreFunction;
headers?: Headers | HeadersFunction;
}
export function server(root: string, options?: Options): Middleware;
root
- Root directory string.
- Nothing above this root directory can be served.
Options
fs
- Defaults to
node:fs
. - The file system to used.
defer
- Defaults to
false
. - If true, serves after
await next()
. - Allowing any downstream middleware to respond first.
etag
- Defaults to
true
. - Enable or disable etag generation.
- Use weak etag internally.
- Can be overridden by the
headers
.
acceptRanges
- Defaults to
true
. - Enable or disable accepting ranged requests.
- Disabling this will not send Accept-Ranges and ignore the contents of the Range request header.
- Can be overridden by the
headers
.
lastModified
- Defaults to
true
. - Enable or disable Last-Modified header.
- Use the file system's last modified value.
- Can be overridden by the
headers
.
highWaterMark
- Defaults to
65536
(64 KiB). - Set the high water mark for the read stream.
ignore
- Defaults to
undefined
. - Function that determines if a file should be ignored.
headers
- Defaults to
undefined
. - Set headers to be sent.
- See docs: Headers in MDN.
Example
/**
* @module server
* @license MIT
* @author nuintun
*/
import Koa from 'koa';
import { server } from 'koa-files';
const app = new Koa();
const port = process.env.PORT || 80;
// Static files server
app.use(
server('tests', {
headers: {
'Cache-Control': 'public, max-age=31557600'
}
})
);
/**
* @function httpError
* @param {NodeJS.ErrnoException} error
* @returns {boolean}
*/
function httpError(error) {
return /^(EOF|EPIPE|ECANCELED|ECONNRESET|ECONNABORTED)$/i.test(error.code);
}
// Listen error event
app.on('error', error => {
!httpError(error) && console.error(error);
});
// Start server
app.listen(port, () => {
console.log(`> server running at: 127.0.0.1:${port}`);
});
Features
Support multipart range and download resumption.
License
MIT
3.2.2
9 months ago
4.0.1
8 months ago
4.0.0
8 months ago
4.0.2
5 months ago
3.2.1
10 months ago
3.2.0
10 months ago
3.1.11
10 months ago
3.1.10
10 months ago
3.1.9
10 months ago
3.1.8
10 months ago
3.0.7
10 months ago
3.0.6
10 months ago
3.0.5
11 months ago
3.1.3
10 months ago
3.1.2
10 months ago
3.1.1
10 months ago
3.1.0
10 months ago
3.1.7
10 months ago
3.1.6
10 months ago
3.1.5
10 months ago
3.1.4
10 months ago
3.0.4
1 year ago
3.0.3
1 year ago
3.0.2
1 year ago
3.0.1
1 year ago
3.0.0
1 year ago
2.3.8
1 year ago
2.3.7
1 year ago
2.3.2
3 years ago
2.3.4
2 years ago
2.3.3
2 years ago
2.3.6
2 years ago
2.3.5
2 years ago
2.3.1
3 years ago
2.3.0
3 years ago
2.1.2
3 years ago
2.2.0
3 years ago
2.1.1
3 years ago
2.1.0
3 years ago
2.0.0
4 years ago
1.0.3
5 years ago
1.0.2
5 years ago
1.0.1
5 years ago
1.0.0
6 years ago
0.3.3
6 years ago
0.3.2
6 years ago
0.3.0
6 years ago
0.3.1
6 years ago
0.2.1
6 years ago
0.2.2
6 years ago
0.2.0
6 years ago
0.1.0
6 years ago
0.0.1
6 years ago
0.0.0
6 years ago