UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

135 lines (134 loc) 5.23 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_runtime = require("../_virtual/_rolldown/runtime.js"); require("./constants.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 _verdaccio_config = require("@verdaccio/config"); let fs = require("fs"); fs = require_runtime.__toESM(fs); let url = require("url"); url = require_runtime.__toESM(url); let console = require("console"); 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); let _verdaccio_core = require("@verdaccio/core"); //#region src/lib/bootstrap.ts /** * Trigger the server after configuration has been loaded. * @param {Object} config * @param {Object} cliArguments * @param {String} configPath * @param {String} pkgVersion * @param {String} pkgName * @deprecated use runServer instead */ function startVerdaccio(config, cliListen, configPath, pkgVersion, pkgName, callback) { if (lodash.default.isObject(config) === false) throw new Error(_verdaccio_core.API_ERROR.CONFIG_BAD_FORMAT); require_lib_utils.initLogger(config); require_lib_experiments.displayExperimentsInfoBox({ ...config?.flags || {}, ...config?.experiments || {} }); require_lib_logger_index.logger.warn("This is a deprecated method, please use runServer instead"); require_api_index.default(config).then((app) => { const addr = (0, _verdaccio_config.getListenAddress)(cliListen ?? config?.listen, require_lib_logger_index.logger); let webServer; if (addr.proto === "https") webServer = handleHTTPS(app, configPath, config); else webServer = http.default.createServer(app); if (webServer && typeof config?.server?.keepAliveTimeout === "number") webServer.keepAliveTimeout = config.server.keepAliveTimeout * 1e3; unlinkAddressPath(addr); callback(webServer, addr, pkgName, pkgVersion); }); } function unlinkAddressPath(addr) { if (addr.path && fs.default.existsSync(addr.path)) fs.default.unlinkSync(addr.path); } function handleHTTPS(app, configPath, config) { try { let httpsOptions = { secureOptions: constants.default.SSL_OP_NO_SSLv2 | constants.default.SSL_OP_NO_SSLv3 }; const keyCertConfig = config.https; const pfxConfig = config.https; const missingKeyCert = !(keyCertConfig.key && keyCertConfig.cert); (0, console.debug)("missingKeyCert", missingKeyCert); const missingPfx = !pfxConfig.pfx; (0, console.debug)("missingPfx", missingPfx); if (missingKeyCert && missingPfx) { (0, console.debug)("No HTTPS configuration found"); require_lib_utils.logHTTPSWarning(configPath); throw new Error("No HTTPS configuration found"); } (0, console.debug)("HTTPS configuration found"); if (pfxConfig.pfx) { (0, console.debug)("Using PFX configuration"); const { pfx, passphrase } = pfxConfig; httpsOptions = lodash.default.assign(httpsOptions, { pfx: fs.default.readFileSync(pfx), passphrase: passphrase || "" }); } else { (0, console.debug)("Using Key/Cert configuration"); 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) } }); } return https.default.createServer(httpsOptions, app); } catch (err) { require_lib_logger_index.logger.fatal({ err }, "cannot create https server: @{err.message}"); process.exit(2); } } /** * * @param webServer * @param addr * @param pkgName * @param pkgVersion * @deprecated use initServer instead */ function listenDefaultCallback(webServer, addr, pkgName, pkgVersion) { const server = webServer.listen(addr.port || addr.path, addr.host, () => { if (lodash.default.isFunction(process.send)) process.send({ verdaccio_started: true }); }).on("error", function(err) { require_lib_logger_index.logger.fatal({ err }, "cannot create http server: @{err.message}"); process.exit(2); }); function handleShutdownGracefully() { require_lib_logger_index.logger.fatal("received shutdown signal - closing server gracefully..."); server.close(() => { require_lib_logger_index.logger.info("server closed."); process.exit(0); }); } if (process.env.VERDACCIO_HANDLE_KILL_SIGNALS === "true") { process.on("SIGINT", handleShutdownGracefully); process.on("SIGTERM", handleShutdownGracefully); process.on("SIGHUP", handleShutdownGracefully); } require_lib_logger_index.logger.warn({ addr: addr.path ? url.default.format({ protocol: "unix", pathname: addr.path }) : url.default.format({ protocol: addr.proto, hostname: addr.host, port: addr.port, pathname: "/" }), version: pkgName + "/" + pkgVersion }, "http address - @{addr} - @{version}"); } //#endregion exports.listenDefaultCallback = listenDefaultCallback; exports.startVerdaccio = startVerdaccio; //# sourceMappingURL=bootstrap.js.map