UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

62 lines (61 loc) 2.26 kB
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