Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
res.setHeader("Content-Type", "application/javascript; charset=UTF-8");
} else if (info.type === "css") {
res.setHeader("Content-Type", "text/css; charset=UTF-8");
} else if (info.type === "json") {
res.setHeader("Content-Type", "application/json; charset=UTF-8");
}
if (info.hash) {
res.setHeader('ETag', '"' + info.hash + '"');
}
if (info.content) {
res.write(info.content);
res.end();
} else {
send(req, info.absolutePath, {
maxage: maxAge,
dotfiles: 'allow', // if we specified a dotfile in the manifest, serve it
lastModified: false // don't set last-modified based on the file date
}).on('error', function (err) {
Log.error("Error serving static file " + err);
res.writeHead(500);
res.end();
}).on('directory', function () {
Log.error("Unexpected directory " + info.absolutePath);
res.writeHead(500);
res.end();
}).pipe(res);
}
};
return new Promise((resolve, reject) => {
send(req, path)
.on('directory', () => {
// We don't allow directories to be read.
const err: any = new Error('No directory access')
err.code = 'ENOENT'
reject(err)
})
.on('error', reject)
.pipe(res)
.on('finish', resolve)
})
}
// Check if we have an asset for that url defined.
/** @type {Asset} */
const asset = self.assetBundle.assetForUrlPath(parsedUrl.pathname);
if (!asset) return next();
const processors = () => (
addSourceMapHeader(asset, res),
addETagHeader(asset, res),
addCacheHeader(asset, res, req.url)
);
if (local) {
return createStreamProtocolResponse(asset.getFile(), res, processors);
}
return send(
req,
encodeURIComponent(asset.getFile()),
{ etag: false, cacheControl: false }
)
.on('file', processors)
.pipe(res);
}
return new Promise((resolve, reject) => {
send(req, path, { index: false, root: outputDir })
.on('directory', () => {
// We don't allow directories to be read.
const err: any = new Error('No directory access')
err.code = 'ENOENT'
reject(err)
})
.on('error', reject)
.pipe(res)
.on('finish', resolve)
}).catch(error => {
this.logError(error)
return new Promise((resolve, reject) => {
send(req, path)
.on('directory', () => {
// We don't allow directories to be read.
const err = new Error('No directory access');
err.code = 'ENOENT';
reject(err);
})
.on('error', reject)
.pipe(res)
.on('finish', resolve);
});
}
function IndexHandler(req, res, next, local = false) {
const parsedUrl = url.parse(req.url);
if (!parsedUrl.pathname.startsWith(self.localFilesystemUrl) &&
parsedUrl.pathname !== '/favicon.ico'
) {
/** @type {Asset} */
const indexFile = self.assetBundle.getIndexFile();
if (local) {
createStreamProtocolResponse(indexFile.getFile(), res, () => {
});
} else {
send(req, encodeURIComponent(indexFile.getFile())).pipe(res);
}
} else {
next();
}
}
let generated = compilation.generate()
if (middlewareConfig.sourceMap) {
generated += `//# sourceMappingURL=${middlewareConfig.publicBundlePath + '.map'}`
}
res.send(generated)
return
}
if (url === middlewareConfig.publicBundlePath + '.map') {
if (!await prepareRequest(res)) {
return
}
res.setHeader('Content-Type', 'application/json')
res.send(compilation.generateSourceMap())
return
}
send(req, url, { root: middlewareConfig.sourceRoot, index: 'index.html' })
.on('error', function() {
next()
})
.on('directory', function() {
res.statusCode = 301
res.setHeader('Location', `${req.url}/`)
res.send(`Redirecting to ${req.url}/`)
})
.pipe(res)
}
return new Promise((resolve, reject) => {
send(req, p)
.on('error', err => {
if ('ENOENT' === err.code) {
this.render404(req, res).then(resolve, reject);
} else {
reject(err);
}
})
.pipe(res)
.on('finish', resolve);
});
}