verdaccio
Version:
A lightweight private npm proxy registry
62 lines (61 loc) • 2.26 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const require_runtime = require("../_virtual/_rolldown/runtime.js");
require("../lib/constants.js");
let lodash = require("lodash");
lodash = require_runtime.__toESM(lodash);
let debug = require("debug");
debug = require_runtime.__toESM(debug);
let path = require("path");
path = require_runtime.__toESM(path);
let fs = require("fs");
fs = require_runtime.__toESM(fs);
let url = require("url");
let _verdaccio_url = require("@verdaccio/url");
let _verdaccio_core = require("@verdaccio/core");
//#region src/api/middleware.ts
var debug$1 = (0, debug.default)("verdaccio:middleware:favicon");
function serveFavicon(config) {
return function(_req, res) {
try {
const logoConf = config?.web?.favicon;
if (logoConf === "") {
debug$1("favicon disabled");
res.status(404);
} else if (!lodash.default.isEmpty(logoConf)) {
debug$1("custom favicon");
if ((0, _verdaccio_url.isURL)(logoConf, {
require_host: true,
require_valid_protocol: true
})) {
debug$1("redirect to %o", logoConf);
res.redirect(logoConf);
return;
} else {
const faviconPath = path.default.normalize(logoConf);
debug$1("serving favicon from %o", faviconPath);
fs.default.access(faviconPath, fs.default.constants.R_OK, (err) => {
if (err) {
debug$1("no read permissions to read: %o, reason:", logoConf, err?.message);
return res.status(_verdaccio_core.HTTP_STATUS.NOT_FOUND).end();
} else {
res.setHeader("content-type", "image/x-icon");
fs.default.createReadStream(faviconPath).pipe(res);
debug$1("rendered custom ico");
}
});
}
} else {
res.setHeader("content-type", "image/x-icon");
const moduleDir = typeof __dirname === "undefined" ? path.default.dirname((0, url.fileURLToPath)({}.url)) : __dirname;
fs.default.createReadStream(path.default.join(moduleDir, "./web/html/favicon.ico")).pipe(res);
debug$1("rendered ico");
}
} catch (err) {
debug$1("error triggered, favicon not found %s", err?.message);
res.status(_verdaccio_core.HTTP_STATUS.NOT_FOUND).end();
}
};
}
//#endregion
exports.serveFavicon = serveFavicon;
//# sourceMappingURL=middleware.js.map