mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-02 22:59:31 +08:00
1 line
No EOL
872 B
Text
1 line
No EOL
872 B
Text
const { lookup:e, mimes:t } = require('mrmime');async function n(t,n){let s="string"==typeof n,r=!s&&"HEAD"===n.method;if(!s&&!r&&"GET"!==n.method)return;let a=s?n:new URL(n.url).pathname;!s&&a.endsWith("/")&&(a+="index.html");let l=await t.get(a,"arrayBuffer");if(null==l)return new Response(null,{status:404});let i=a.lastIndexOf("."),o=~i?a.substring(++i):a,u=!s&&n.headers.get("range"),p=u?206:200,g=l.byteLength,m={"content-length":String(g)};if(o=o&&e(o),o&&(m["content-type"]=o),u){let[e,t]=u.replace("bytes=","").split("-"),n=parseInt(t,10)||g-1,s=parseInt(e,10)||0;if(s>=g||n>=g)return m["content-range"]=`bytes */${g}`,new Response(null,{status:416,headers:m});m["content-range"]=`bytes ${s}-${n}/${g}`,m["content-length"]=String(n-s+1),m["accept-ranges"]="bytes",l=l.slice(s,n)}return new Response(r?null:l,{status:p,headers:m})}exports.mimes=t;exports.serve=n; |