UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

58 lines (57 loc) 8.32 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, next) { try { var _config$web; // @ts-ignore const logoConf = config === null || config === void 0 ? void 0 : (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _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 === null || err === void 0 ? void 0 : 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'); res.status(_constants.HTTP_STATUS.NOT_FOUND).end(); } }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9mcyIsIl9sb2Rhc2giLCJfcGF0aCIsIl91cmwiLCJfY29uc3RhbnRzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJidWlsZERlYnVnIiwic2VydmVGYXZpY29uIiwiY29uZmlnIiwicmVxIiwicmVzIiwibmV4dCIsIl9jb25maWckd2ViIiwibG9nb0NvbmYiLCJ3ZWIiLCJmYXZpY29uIiwic3RhdHVzIiwiXyIsImlzRW1wdHkiLCJpc1VSTCIsInJlcXVpcmVfaG9zdCIsInJlcXVpcmVfdmFsaWRfcHJvdG9jb2wiLCJyZWRpcmVjdCIsImZhdmljb25QYXRoIiwicGF0aCIsIm5vcm1hbGl6ZSIsImZzIiwiYWNjZXNzIiwiY29uc3RhbnRzIiwiUl9PSyIsImVyciIsIm1lc3NhZ2UiLCJIVFRQX1NUQVRVUyIsIk5PVF9GT1VORCIsImVuZCIsInNldEhlYWRlciIsImNyZWF0ZVJlYWRTdHJlYW0iLCJwaXBlIiwicG9zaXgiLCJqb2luIiwiX19kaXJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9taWRkbGV3YXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgaXNVUkwgfSBmcm9tICdAdmVyZGFjY2lvL3VybCc7XG5cbmltcG9ydCB7IEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzptaWRkbGV3YXJlOmZhdmljb24nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlRmF2aWNvbihjb25maWc6IENvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGxvZ29Db25mOiBzdHJpbmcgPSBjb25maWc/LndlYj8uZmF2aWNvbiBhcyBzdHJpbmc7XG4gICAgICBpZiAobG9nb0NvbmYgPT09ICcnKSB7XG4gICAgICAgIGRlYnVnKCdmYXZpY29uIGRpc2FibGVkJyk7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgIH0gZWxzZSBpZiAoIV8uaXNFbXB0eShsb2dvQ29uZikpIHtcbiAgICAgICAgZGVidWcoJ2N1c3RvbSBmYXZpY29uJyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpc1VSTChsb2dvQ29uZiwge1xuICAgICAgICAgICAgcmVxdWlyZV9ob3N0OiB0cnVlLFxuICAgICAgICAgICAgcmVxdWlyZV92YWxpZF9wcm90b2NvbDogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICBkZWJ1ZygncmVkaXJlY3QgdG8gJW8nLCBsb2dvQ29uZik7XG4gICAgICAgICAgcmVzLnJlZGlyZWN0KGxvZ29Db25mKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmF2aWNvblBhdGggPSBwYXRoLm5vcm1hbGl6ZShsb2dvQ29uZik7XG4gICAgICAgICAgZGVidWcoJ3NlcnZpbmcgZmF2aWNvbiBmcm9tICVvJywgZmF2aWNvblBhdGgpO1xuICAgICAgICAgIGZzLmFjY2VzcyhmYXZpY29uUGF0aCwgZnMuY29uc3RhbnRzLlJfT0ssIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgZGVidWcoJ25vIHJlYWQgcGVybWlzc2lvbnMgdG8gcmVhZDogJW8sIHJlYXNvbjonLCBsb2dvQ29uZiwgZXJyPy5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKS5lbmQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ2NvbnRlbnQtdHlwZScsICdpbWFnZS94LWljb24nKTtcbiAgICAgICAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmYXZpY29uUGF0aCkucGlwZShyZXMpO1xuICAgICAgICAgICAgICBkZWJ1ZygncmVuZGVyZWQgY3VzdG9tIGljbycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAnaW1hZ2UveC1pY29uJyk7XG4gICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0ocGF0aC5wb3NpeC5qb2luKF9fZGlybmFtZSwgJy4vd2ViL2h0bWwvZmF2aWNvbi5pY28nKSkucGlwZShyZXMpO1xuICAgICAgICBkZWJ1ZygncmVuZGVyZWQgaWNvJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBkZWJ1ZygnZXJyb3IgdHJpZ2dlcmVkLCBmYXZpY29uIG5vdCBmb3VuZCcpO1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpLmVuZCgpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsR0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxH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