UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

56 lines (55 loc) 7.93 kB
"use strict"; 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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