verdaccio
Version:
A lightweight private npm proxy registry
56 lines (55 loc) • 7.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.serveFavicon = serveFavicon;
var _debug = _interopRequireDefault(require("debug"));
var _fs = _interopRequireDefault(require("fs"));
var _lodash = _interopRequireDefault(require("lodash"));
var _path = _interopRequireDefault(require("path"));
var _url = require("@verdaccio/url");
var _constants = require("../lib/constants");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const debug = (0, _debug.default)('verdaccio:middleware:favicon');
function serveFavicon(config) {
return function (_req, res) {
try {
const logoConf = config?.web?.favicon;
if (logoConf === '') {
debug('favicon disabled');
res.status(404);
} else if (!_lodash.default.isEmpty(logoConf)) {
debug('custom favicon');
if ((0, _url.isURL)(logoConf, {
require_host: true,
require_valid_protocol: true
})) {
debug('redirect to %o', logoConf);
res.redirect(logoConf);
return;
} else {
const faviconPath = _path.default.normalize(logoConf);
debug('serving favicon from %o', faviconPath);
_fs.default.access(faviconPath, _fs.default.constants.R_OK, err => {
if (err) {
debug('no read permissions to read: %o, reason:', logoConf, err?.message);
return res.status(_constants.HTTP_STATUS.NOT_FOUND).end();
} else {
res.setHeader('content-type', 'image/x-icon');
_fs.default.createReadStream(faviconPath).pipe(res);
debug('rendered custom ico');
}
});
}
} else {
res.setHeader('content-type', 'image/x-icon');
_fs.default.createReadStream(_path.default.posix.join(__dirname, './web/html/favicon.ico')).pipe(res);
debug('rendered ico');
}
} catch (err) {
debug('error triggered, favicon not found %s', err?.message);
res.status(_constants.HTTP_STATUS.NOT_FOUND).end();
}
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9mcyIsIl9sb2Rhc2giLCJfcGF0aCIsIl91cmwiLCJfY29uc3RhbnRzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJidWlsZERlYnVnIiwic2VydmVGYXZpY29uIiwiY29uZmlnIiwiX3JlcSIsInJlcyIsImxvZ29Db25mIiwid2ViIiwiZmF2aWNvbiIsInN0YXR1cyIsIl8iLCJpc0VtcHR5IiwiaXNVUkwiLCJyZXF1aXJlX2hvc3QiLCJyZXF1aXJlX3ZhbGlkX3Byb3RvY29sIiwicmVkaXJlY3QiLCJmYXZpY29uUGF0aCIsInBhdGgiLCJub3JtYWxpemUiLCJmcyIsImFjY2VzcyIsImNvbnN0YW50cyIsIlJfT0siLCJlcnIiLCJtZXNzYWdlIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJlbmQiLCJzZXRIZWFkZXIiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsInBvc2l4Iiwiam9pbiIsIl9fZGlybmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbWlkZGxld2FyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IGlzVVJMIH0gZnJvbSAnQHZlcmRhY2Npby91cmwnO1xuXG5pbXBvcnQgeyBIVFRQX1NUQVRVUyB9IGZyb20gJy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86bWlkZGxld2FyZTpmYXZpY29uJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2ZUZhdmljb24oY29uZmlnOiBDb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfcmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbG9nb0NvbmY6IHN0cmluZyA9IGNvbmZpZz8ud2ViPy5mYXZpY29uIGFzIHN0cmluZztcbiAgICAgIGlmIChsb2dvQ29uZiA9PT0gJycpIHtcbiAgICAgICAgZGVidWcoJ2Zhdmljb24gZGlzYWJsZWQnKTtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc0VtcHR5KGxvZ29Db25mKSkge1xuICAgICAgICBkZWJ1ZygnY3VzdG9tIGZhdmljb24nKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzVVJMKGxvZ29Db25mLCB7XG4gICAgICAgICAgICByZXF1aXJlX2hvc3Q6IHRydWUsXG4gICAgICAgICAgICByZXF1aXJlX3ZhbGlkX3Byb3RvY29sOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIGRlYnVnKCdyZWRpcmVjdCB0byAlbycsIGxvZ29Db25mKTtcbiAgICAgICAgICByZXMucmVkaXJlY3QobG9nb0NvbmYpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmYXZpY29uUGF0aCA9IHBhdGgubm9ybWFsaXplKGxvZ29Db25mKTtcbiAgICAgICAgICBkZWJ1Zygnc2VydmluZyBmYXZpY29uIGZyb20gJW8nLCBmYXZpY29uUGF0aCk7XG4gICAgICAgICAgZnMuYWNjZXNzKGZhdmljb25QYXRoLCBmcy5jb25zdGFudHMuUl9PSywgKGVycikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICBkZWJ1Zygnbm8gcmVhZCBwZXJtaXNzaW9ucyB0byByZWFkOiAlbywgcmVhc29uOicsIGxvZ29Db25mLCBlcnI/Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpLmVuZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignY29udGVudC10eXBlJywgJ2ltYWdlL3gtaWNvbicpO1xuICAgICAgICAgICAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGZhdmljb25QYXRoKS5waXBlKHJlcyk7XG4gICAgICAgICAgICAgIGRlYnVnKCdyZW5kZXJlZCBjdXN0b20gaWNvJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ2NvbnRlbnQtdHlwZScsICdpbWFnZS94LWljb24nKTtcbiAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShwYXRoLnBvc2l4LmpvaW4oX19kaXJuYW1lLCAnLi93ZWIvaHRtbC9mYXZpY29uLmljbycpKS5waXBlKHJlcyk7XG4gICAgICAgIGRlYnVnKCdyZW5kZXJlZCBpY28nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgZGVidWcoJ2Vycm9yIHRyaWdnZXJlZCwgZmF2aWNvbiBub3QgZm91bmQgJXMnLCBlcnI/Lm1lc3NhZ2UpO1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpLmVuZCgpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsR0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUksSUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUss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