Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export const altairExpress = (opts: RenderOptions): express.Express => {
const app = express();
app.disable('strict routing');
app.get('/', (req, res) => {
if (req.originalUrl.substr(-1) !== '/') {
// We need the trailing slash to enable relative file paths to work
return res.redirect(301, req.originalUrl + '/');
}
return res.send(renderAltair(opts));
});
app.get('/initial_options.js', (req, res) => {
res.set('Content-Type', 'text/javascript');
return res.send(renderInitialOptions(opts));
});
app.use(express.static(getDistDirectory()));
/**
* Catch-all route
*/
app.get('*', (req, res) => {
return res.send('404.');
});
return app;
};
protocol.registerBufferProtocol('altair', (request, callback) => {
const requestDirectory = getDistDirectory();
const filePath = path.join(requestDirectory, new url.URL(request.url).pathname);
const indexPath = path.join(requestDirectory, 'index.html');
getFilePath(filePath).then((filePath) => {
if (!filePath) {
filePath = indexPath;
}
fs.readFile(filePath, 'utf8', function(err, data) {
if (err) {
return console.log('Error loading file to buffer.', err);
}
if (filePath && filePath.includes('index.html')) {
data = renderAltair();
}
router.get(`${url}/:path+`, async ctx => {
await send(ctx, ctx.params.path, { root: getDistDirectory() });
})
};