MCPcopy Create free account
hub / github.com/elysiajs/node / handleFile

Function handleFile

src/utils.ts:12–76  ·  view source on GitHub ↗
(
	response: ReadStream | File | Blob,
	set?: Context['set']
)

Source from the content-addressed store, hash-verified

10} from 'elysia/adapter/utils'
11
12export const handleFile = (
13 response: ReadStream | File | Blob,
14 set?: Context['set']
15): Response => {
16 if (response instanceof Promise)
17 return response.then((res) => handleFile(res, set)) as any
18
19 // @ts-ignore
20 const size = response.size
21 const immutable =
22 set &&
23 (set.status === 206 ||
24 set.status === 304 ||
25 set.status === 412 ||
26 set.status === 416)
27
28 const defaultHeader = immutable
29 ? {
30 'transfer-encoding': 'chunked'
31 }
32 : ({
33 'accept-ranges': 'bytes',
34 'content-range': size
35 ? `bytes 0-${size - 1}/${size}`
36 : undefined,
37 'transfer-encoding': 'chunked'
38 } as any)
39
40 if (!set && !size) return new Response(response as Blob)
41
42 if (!set)
43 return new Response(response as Blob, {
44 headers: defaultHeader
45 })
46
47 if (set.headers instanceof Headers) {
48 let setHeaders: Record<string, any> = defaultHeader
49
50 setHeaders = {}
51 // @ts-ignore
52 for (const [key, value] of set.headers.entries())
53 if (key in set.headers) setHeaders[key] = value
54
55 if (immutable) {
56 delete set.headers['content-length']
57 delete set.headers['accept-ranges']
58 }
59
60 return new Response(response as Blob, {
61 status: set.status as number,
62 headers: setHeaders
63 })
64 }
65
66 if (isNotEmpty(set.headers))
67 return new Response(response as Blob, {
68 status: set.status as number,
69 headers: Object.assign(defaultHeader, set.headers)

Callers 4

handleElysiaFileFunction · 0.90
mapResponseFunction · 0.90
mapEarlyResponseFunction · 0.90
mapCompactResponseFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected