Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
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();
}
// Load the data from the file into a buffer and pass it to the callback
// Using the mime package to get the mime type for the file, based on the file name
callback({ mimeType: mime.lookup(filePath), data: Buffer.from(data) });
});
});
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;
};
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) => {
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() });
})
};
router.get(url, async (ctx, next) => {
ctx.body = renderAltair({ baseURL: ctx.url.replace(/\/?$/, '/'), ...opts });
await next();
})
app.get('/initial_options.js', (req, res) => {
res.set('Content-Type', 'text/javascript');
return res.send(renderInitialOptions(opts));
});
app.use(express.static(getDistDirectory()));