verdaccio
Version:
A lightweight private npm proxy registry
78 lines (77 loc) • 2.96 kB
JavaScript
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