UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

91 lines (90 loc) 3.57 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_runtime = require("../_virtual/_rolldown/runtime.js"); const require_lib_logger_index = require("./logger/index.js"); const require_lib_utils = require("./utils.js"); const require_api_index = require("../api/index.js"); const require_lib_experiments = require("./experiments.js"); let lodash = require("lodash"); lodash = require_runtime.__toESM(lodash); let debug = require("debug"); debug = require_runtime.__toESM(debug); let _verdaccio_config = require("@verdaccio/config"); let fs = require("fs"); fs = require_runtime.__toESM(fs); let constants = require("constants"); constants = require_runtime.__toESM(constants); let http = require("http"); http = require_runtime.__toESM(http); let https = require("https"); https = require_runtime.__toESM(https); //#region src/lib/run-server.ts var debug$1 = (0, debug.default)("verdaccio:run-server"); /** * Exposes a server factory to be instantiated programmatically. * const app = await runServer(); // default configuration const app = await runServer('./config/config.yaml'); const app = await runServer({ configuration }); app.listen(4000, (event) => { // do something }); * @param config */ async function runServer(config, options) { const configurationParsed = (0, _verdaccio_config.getConfigParsed)(config); require_lib_utils.initLogger(configurationParsed); require_lib_experiments.displayExperimentsInfoBox({ ...configurationParsed?.flags || {}, ...configurationParsed?.experiments || {} }); return createServerFactory(configurationParsed, (0, _verdaccio_config.getListenAddress)(options?.listenArg ?? configurationParsed?.listen, require_lib_logger_index.logger), await require_api_index.default(configurationParsed)); } /** * Return a native HTTP/HTTPS server instance * @param config * @param addr * @param app */ function createServerFactory(config, addr, app) { let serverFactory; if (addr.proto === "https") { debug$1("https enabled"); try { let httpsOptions = { secureOptions: constants.default.SSL_OP_NO_SSLv2 | constants.default.SSL_OP_NO_SSLv3 }; const keyCertConfig = config.https; const pfxConfig = config.https; if (!(keyCertConfig.key && keyCertConfig.cert || pfxConfig.pfx)) throw Error("bad format https configuration"); if (pfxConfig.pfx) { const { pfx, passphrase } = pfxConfig; httpsOptions = lodash.default.assign(httpsOptions, { pfx: fs.default.readFileSync(pfx), passphrase: passphrase || "" }); } else { const { key, cert, ca } = keyCertConfig; httpsOptions = lodash.default.assign(httpsOptions, { key: fs.default.readFileSync(key), cert: fs.default.readFileSync(cert), ...ca && { ca: fs.default.readFileSync(ca) } }); } serverFactory = https.default.createServer(httpsOptions, app); } catch (err) { require_lib_logger_index.logger.fatal({ err }, "cannot create server: @{err.message}"); process.exit(2); } } else { debug$1("http enabled"); serverFactory = http.default.createServer(app); } if (config.server && typeof config.server.keepAliveTimeout !== "undefined" && config.server.keepAliveTimeout !== "null") serverFactory.keepAliveTimeout = config.server.keepAliveTimeout * 1e3; unlinkAddressPath(addr); return serverFactory; } function unlinkAddressPath(addr) { if (addr.path && fs.default.existsSync(addr.path)) fs.default.unlinkSync(addr.path); } //#endregion exports.createServerFactory = createServerFactory; exports.runServer = runServer; //# sourceMappingURL=run-server.js.map