UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

78 lines (77 loc) 2.96 kB
import debug_default from "./debug/index.mjs"; import { API_ERROR } from "../lib/constants.mjs"; import { logger } from "../lib/logger/index.mjs"; import { ErrorCode } from "../lib/utils.mjs"; import endpoint_default from "./endpoint/index.mjs"; import Config$1 from "../lib/config.mjs"; import Storage from "../lib/storage.mjs"; import { serveFavicon } from "./middleware.mjs"; import web_default from "./web/index.mjs"; import _ from "lodash"; import { errorReportingMiddleware, final, handleError, log } from "@verdaccio/middleware"; import { PLUGIN_CATEGORY } from "@verdaccio/core"; import { getUserAgent } from "@verdaccio/config"; import { SearchMemoryIndexer } from "@verdaccio/search-indexer"; import express from "express"; import { Auth } from "@verdaccio/auth"; import compression from "compression"; import cors from "cors"; import { asyncLoadPlugin } from "@verdaccio/loaders"; //#region src/api/index.ts var version = "6.9.0"; var defineAPI = async function(config, storage) { const auth = new Auth(config, logger, { legacyMergeConfigs: true }); await auth.init(); const app = express(); SearchMemoryIndexer.configureStorage(storage); await SearchMemoryIndexer.init(logger); app.set("env", process.env.NODE_ENV || "production"); if (config.server?.trustProxy) app.set("trust proxy", config.server.trustProxy); app.use(cors()); app.use(log(logger)); app.use(errorReportingMiddleware(logger)); if (config.user_agent) app.use(function(_req, res, next) { res.setHeader("X-Powered-By", getUserAgent(config.user_agent)); next(); }); else app.disable("x-powered-by"); app.use(compression()); app.get("/-/static/favicon.ico", serveFavicon(config)); if (config._debug) debug_default(app, config.configPath); const plugins = await asyncLoadPlugin(config.middlewares, { config, logger }, function(plugin) { return typeof plugin.register_middlewares !== "undefined"; }, true, config?.serverSettings?.pluginPrefix ?? "verdaccio", PLUGIN_CATEGORY.MIDDLEWARE); app.use(auth.apiJWTmiddleware()); plugins.forEach((plugin) => { plugin.register_middlewares(app, auth, storage); }); app.use(endpoint_default(config, auth, storage)); if (_.get(config, "web.enable", true)) { app.use((_req, res, next) => { res.locals.app_version = version; next(); }); const middleware = await web_default(config, auth, storage, logger); app.use(middleware); } else app.get("/", function(_, __, next) { next(ErrorCode.getNotFound(API_ERROR.WEB_DISABLED)); }); app.get("/*", function(_, __, next) { next(ErrorCode.getNotFound(API_ERROR.FILE_NOT_FOUND)); }); app.use(handleError(logger)); app.use(final); return app; }; var api_default = (async function(configHash) { const config = new Config$1(_.cloneDeep(configHash)); const storage = new Storage(config); await storage.init(config); return await defineAPI(config, storage); }); //#endregion export { api_default as default }; //# sourceMappingURL=index.mjs.map