verdaccio
Version:
A lightweight private npm proxy registry
84 lines (83 loc) • 3.85 kB
JavaScript
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
const require_lib_logger_index = require("../../lib/logger/index.js");
const require_api_web_api_index = require("./api/index.js");
let lodash = require("lodash");
lodash = require_runtime.__toESM(lodash);
let _verdaccio_middleware = require("@verdaccio/middleware");
let _verdaccio_core = require("@verdaccio/core");
let debug = require("debug");
debug = require_runtime.__toESM(debug);
let express = require("express");
express = require_runtime.__toESM(express);
let _verdaccio_loaders = require("@verdaccio/loaders");
let _verdaccio_ui_theme = require("@verdaccio/ui-theme");
_verdaccio_ui_theme = require_runtime.__toESM(_verdaccio_ui_theme);
//#region src/api/web/index.ts
var debug$1 = (0, debug.default)("verdaccio:web");
var PLUGIN_UI_PREFIX = "verdaccio-theme";
var DEFAULT_PLUGIN_UI_THEME = "@verdaccio/ui-theme";
async function loadTheme(config) {
if (lodash.default.isNil(config.theme) === false) {
const plugin = await (0, _verdaccio_loaders.asyncLoadPlugin)(config.theme, {
config,
logger: require_lib_logger_index.logger
}, function(plugin) {
/**
*
- `staticPath`: is the same data returned in Verdaccio 5.
- `manifest`: A webpack manifest object.
- `manifestFiles`: A object with one property `js` and the array (order matters) of the manifest id to be loaded in the template dynamically.
*/
return plugin.staticPath && plugin.manifest && plugin.manifestFiles;
}, true, config?.serverSettings?.pluginPrefix ?? "verdaccio-theme", _verdaccio_core.PLUGIN_CATEGORY.THEME);
if (plugin.length > 1) require_lib_logger_index.logger.warn("multiple ui themes are not supported; only the first plugin is used");
return lodash.default.head(plugin);
}
}
function webAPIMiddleware(tokenMiddleware, webEndpointsApi) {
const route = (0, express.Router)();
route.param("package", _verdaccio_middleware.validatePackage);
route.param("filename", _verdaccio_middleware.validateName);
route.param("version", _verdaccio_middleware.validateName);
route.use(express.default.urlencoded({ extended: false }));
route.use(_verdaccio_middleware.setSecurityWebHeaders);
if (typeof tokenMiddleware === "function") route.use(tokenMiddleware);
if (typeof webEndpointsApi === "function") route.use(webEndpointsApi);
return route;
}
function webMiddleware(config, middlewares, pluginOptions) {
const router = express.default.Router();
const { tokenMiddleware, webEndpointsApi } = middlewares;
router.use(_verdaccio_middleware.WebUrlsNamespace.root, (0, _verdaccio_middleware.renderWebMiddleware)(config, tokenMiddleware, pluginOptions));
router.use(_verdaccio_middleware.WebUrlsNamespace.endpoints, webAPIMiddleware(tokenMiddleware, webEndpointsApi));
return router;
}
var web_default = async (config, auth, storage, logger) => {
let pluginOptions = await loadTheme(config);
if (!pluginOptions) {
debug$1("no theme plugin found, using default theme");
pluginOptions = (0, _verdaccio_ui_theme.default)(config.web);
logger.info({
name: DEFAULT_PLUGIN_UI_THEME,
pluginCategory: _verdaccio_core.PLUGIN_CATEGORY.THEME
}, "plugin @{name} successfully loaded (@{pluginCategory})");
}
const router = (0, express.Router)();
router.use(webMiddleware(config, {
tokenMiddleware: auth.webUIJWTmiddleware(),
webEndpointsApi: require_api_web_api_index.default(auth, storage, config)
}, pluginOptions));
return router;
};
//#endregion
exports.DEFAULT_PLUGIN_UI_THEME = DEFAULT_PLUGIN_UI_THEME;
exports.PLUGIN_UI_PREFIX = PLUGIN_UI_PREFIX;
exports.default = web_default;
exports.loadTheme = loadTheme;
exports.webAPIMiddleware = webAPIMiddleware;
exports.webMiddleware = webMiddleware;
//# sourceMappingURL=index.js.map