@versatiles/server
Version:
22 lines (21 loc) • 694 B
JavaScript
import { existsSync } from 'fs';
import { readFile, stat } from 'fs/promises';
import { resolve } from 'path';
import { getMimeByFilename } from './mime_types.js';
export async function getFileContent(staticFolder, path) {
let filename = resolve(staticFolder, path.replace(/^\/+/, ''));
if (!filename.startsWith(staticFolder))
return;
if (!existsSync(filename))
return;
if ((await stat(filename)).isDirectory()) {
filename = resolve(filename, 'index.html');
if (!existsSync(filename))
return;
}
return {
buffer: await readFile(filename),
compression: 'raw',
mime: getMimeByFilename(filename),
};
}