UNPKG

@fastify/send

Version:

Better streaming static file server with Range and conditional-GET support

68 lines (57 loc) 1.89 kB
import { Dirent } from 'node:fs' import { resolve } from 'node:path' import { Readable } from 'node:stream' import { expectType } from 'tsd' import send, { DirectorySendResult, ErrorSendResult, FileSendResult, SendResult } from '..' send.mime.define({ 'application/x-my-type': ['x-mt', 'x-mtt'] }) expectType<(value: string) => boolean>(send.isUtf8MimeType) expectType<boolean>(send.isUtf8MimeType('application/json')) const req: any = {} { const result = await send(req, '/test.html', { acceptRanges: true, maxContentRangeChunkSize: 10, immutable: true, maxAge: 0, root: resolve(__dirname, '/wwwroot') }) expectType<SendResult>(result) expectType<number>(result.statusCode) expectType<Record<string, string>>(result.headers) expectType<Readable>(result.stream) } { const result = await send(req, '/test.html', { contentType: true, maxAge: 0, root: resolve(__dirname, '/wwwroot') }) expectType<SendResult>(result) expectType<number>(result.statusCode) expectType<Record<string, string>>(result.headers) expectType<Readable>(result.stream) } { const result = await send(req, '/test.html', { contentType: false, root: resolve(__dirname, '/wwwroot') }) expectType<SendResult>(result) expectType<number>(result.statusCode) expectType<Record<string, string>>(result.headers) expectType<Readable>(result.stream) } const result = await send(req, '/test.html') switch (result.type) { case 'file': { expectType<FileSendResult>(result) expectType<string>(result.metadata.path) expectType<Dirent>(result.metadata.stat) break } case 'directory': { expectType<DirectorySendResult>(result) expectType<string>(result.metadata.path) expectType<string>(result.metadata.requestPath) break } case 'error': { expectType<ErrorSendResult>(result) expectType<Error>(result.metadata.error) } }