verdaccio
Version:
A lightweight private npm proxy registry
101 lines (95 loc) • 16.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.InitCommand = exports.DEFAULT_PROCESS_NAME = void 0;
var _clipanion = require("clipanion");
var _path = _interopRequireDefault(require("path"));
var _core = require("@verdaccio/core");
var _bootstrap = require("../../bootstrap");
var _configPath = _interopRequireDefault(require("../../config-path"));
var _utils = require("../../utils");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
require('pkginfo')(module);
const pkgVersion = module.exports.version;
const pkgName = module.exports.name;
const DEFAULT_PROCESS_NAME = exports.DEFAULT_PROCESS_NAME = 'verdaccio';
const logger = require('../../logger');
class InitCommand extends _clipanion.Command {
constructor(...args) {
super(...args);
_defineProperty(this, "listen", _clipanion.Option.String('-l,--listen', {
description: 'host:port number to listen on (default: localhost:4873)'
}));
_defineProperty(this, "config", _clipanion.Option.String('-c,--config', {
description: 'use this configuration file (default: ./config.yaml)'
}));
}
initLogger(logConfig) {
if (logConfig.logs) {
logConfig.log = logConfig.logs;
_core.warningUtils.emit(_core.warningUtils.Codes.VERWAR002);
}
logger.setup(logConfig.log);
}
async execute() {
let configPathLocation;
try {
configPathLocation = (0, _configPath.default)(this.config);
const configParsed = (0, _utils.parseConfigFile)(configPathLocation);
if (!configParsed.self_path) {
configParsed.self_path = _path.default.resolve(configPathLocation);
this.initLogger(configParsed);
// compatibility with 6.x plugins
configParsed.configPath = configParsed.self_path;
}
if (!configParsed.https) {
configParsed.https = {
enable: false
};
}
configParsed.flags = _objectSpread(_objectSpread({}, configParsed.flags), {}, {
// on this version there is no remote search
searchRemote: false
});
process.title = configParsed.web && configParsed.web.title || 'verdaccio';
(0, _bootstrap.startVerdaccio)(configParsed, this.listen, configPathLocation, pkgVersion, pkgName, _bootstrap.listenDefaultCallback);
logger.logger.info({
file: configPathLocation
}, 'config file - @{file}');
} catch (err) {
var _logger$logger;
if (typeof (logger === null || logger === void 0 ? void 0 : (_logger$logger = logger.logger) === null || _logger$logger === void 0 ? void 0 : _logger$logger.fatal) === 'function') {
logger.logger.fatal({
file: configPathLocation,
err: err
}, 'cannot open config file @{file}: @{!err.message}');
} else {
// eslint-disable-next-line no-console
console.error(`cannot open config file ${configPathLocation}: ${!err.message}`);
}
process.exit(1);
}
}
}
exports.InitCommand = InitCommand;
_defineProperty(InitCommand, "paths", [_clipanion.Command.Default]);
// eslint-disable-next-line
_defineProperty(InitCommand, "usage", _clipanion.Command.Usage({
description: `launch the server`,
details: `
This start the registry in the default port.
When used without arguments, it:
- bootstrap the server at the port \`4873\`
The optional arguments are:
- \`--listen\` to switch the default server port,
- \`--config\` to define a different configuration path location,
`,
examples: [[`Runs the server with the default configuration`, `verdaccio`], [`Runs the server in the port 5000`, `verdaccio --listen 5000`], [`Runs the server by using a different absolute location of the configuration file`, `verdaccio --config /home/user/verdaccio/config.yaml`]]
}));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xpcGFuaW9uIiwicmVxdWlyZSIsIl9wYXRoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb3JlIiwiX2Jvb3RzdHJhcCIsIl9jb25maWdQYXRoIiwiX3V0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIm1vZHVsZSIsInBrZ1ZlcnNpb24iLCJleHBvcnRzIiwidmVyc2lvbiIsInBrZ05hbWUiLCJuYW1lIiwiREVGQVVMVF9QUk9DRVNTX05BTUUiLCJsb2dnZXIiLCJJbml0Q29tbWFuZCIsIkNvbW1hbmQiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJPcHRpb24iLCJkZXNjcmlwdGlvbiIsImluaXRMb2dnZXIiLCJsb2dDb25maWciLCJsb2dzIiwibG9nIiwid2FybmluZ1V0aWxzIiwiZW1pdCIsIkNvZGVzIiwiVkVSV0FSMDAyIiwic2V0dXAiLCJleGVjdXRlIiwiY29uZmlnUGF0aExvY2F0aW9uIiwiZmluZENvbmZpZ0ZpbGUiLCJjb25maWciLCJjb25maWdQYXJzZWQiLCJwYXJzZUNvbmZpZ0ZpbGUiLCJzZWxmX3BhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImNvbmZpZ1BhdGgiLCJodHRwcyIsImVuYWJsZSIsImZsYWdzIiwic2VhcmNoUmVtb3RlIiwicHJvY2VzcyIsInRpdGxlIiwid2ViIiwic3RhcnRWZXJkYWNjaW8iLCJsaXN0ZW4iLCJsaXN0ZW5EZWZhdWx0Q2FsbGJhY2siLCJpbmZvIiwiZmlsZSIsImVyciIsIl9sb2dnZXIkbG9nZ2VyIiwiZmF0YWwiLCJjb25zb2xlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhpdCIsIkRlZmF1bHQiLCJVc2FnZSIsImRldGFpbHMiLCJleGFtcGxlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL2luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyB3YXJuaW5nVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnWWFtbCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBsaXN0ZW5EZWZhdWx0Q2FsbGJhY2ssIHN0YXJ0VmVyZGFjY2lvIH0gZnJvbSAnLi4vLi4vYm9vdHN0cmFwJztcbmltcG9ydCBmaW5kQ29uZmlnRmlsZSBmcm9tICcuLi8uLi9jb25maWctcGF0aCc7XG5pbXBvcnQgeyBwYXJzZUNvbmZpZ0ZpbGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbnJlcXVpcmUoJ3BrZ2luZm8nKShtb2R1bGUpO1xuY29uc3QgcGtnVmVyc2lvbiA9IG1vZHVsZS5leHBvcnRzLnZlcnNpb247XG5jb25zdCBwa2dOYW1lID0gbW9kdWxlLmV4cG9ydHMubmFtZTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJPQ0VTU19OQU1FOiBzdHJpbmcgPSAndmVyZGFjY2lvJztcbmNvbnN0IGxvZ2dlciA9IHJlcXVpcmUoJy4uLy4uL2xvZ2dlcicpO1xuXG5leHBvcnQgY2xhc3MgSW5pdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW0NvbW1hbmQuRGVmYXVsdF07XG5cbiAgbGlzdGVuID0gT3B0aW9uLlN0cmluZygnLWwsLS1saXN0ZW4nLCB7XG4gICAgZGVzY3JpcHRpb246ICdob3N0OnBvcnQgbnVtYmVyIHRvIGxpc3RlbiBvbiAoZGVmYXVsdDogbG9jYWxob3N0OjQ4NzMpJyxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiBgbGF1bmNoIHRoZSBzZXJ2ZXJgLFxuICAgIGRldGFpbHM6IGBcbiAgICAgIFRoaXMgc3RhcnQgdGhlIHJlZ2lzdHJ5IGluIHRoZSBkZWZhdWx0IHBvcnQuXG5cbiAgICAgIFdoZW4gdXNlZCB3aXRob3V0IGFyZ3VtZW50cywgaXQ6XG5cbiAgICAgIC0gYm9vdHN0cmFwIHRoZSBzZXJ2ZXIgYXQgdGhlIHBvcnQgIFxcYDQ4NzNcXGBcblxuICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBhcmU6XG5cbiAgICAgIC0gXFxgLS1saXN0ZW5cXGAgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IHNlcnZlciBwb3J0LFxuICAgICAgLSBcXGAtLWNvbmZpZ1xcYCB0byBkZWZpbmUgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBwYXRoIGxvY2F0aW9uLFxuXG4gICAgYCxcbiAgICBleGFtcGxlczogW1xuICAgICAgW2BSdW5zIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uYCwgYHZlcmRhY2Npb2BdLFxuICAgICAgW2BSdW5zIHRoZSBzZXJ2ZXIgaW4gdGhlIHBvcnQgNTAwMGAsIGB2ZXJkYWNjaW8gLS1saXN0ZW4gNTAwMGBdLFxuICAgICAgW1xuICAgICAgICBgUnVucyB0aGUgc2VydmVyIGJ5IHVzaW5nIGEgZGlmZmVyZW50IGFic29sdXRlIGxvY2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVgLFxuICAgICAgICBgdmVyZGFjY2lvIC0tY29uZmlnIC9ob21lL3VzZXIvdmVyZGFjY2lvL2NvbmZpZy55YW1sYCxcbiAgICAgIF0sXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uZmlnID0gT3B0aW9uLlN0cmluZygnLWMsLS1jb25maWcnLCB7XG4gICAgZGVzY3JpcHRpb246ICd1c2UgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgKGRlZmF1bHQ6IC4vY29uZmlnLnlhbWwpJyxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBpbml0TG9nZ2VyKGxvZ0NvbmZpZzogQ29uZmlnWWFtbCkge1xuICAgIGlmIChsb2dDb25maWcubG9ncykge1xuICAgICAgbG9nQ29uZmlnLmxvZyA9IGxvZ0NvbmZpZy5sb2dzO1xuICAgICAgd2FybmluZ1V0aWxzLmVtaXQod2FybmluZ1V0aWxzLkNvZGVzLlZFUldBUjAwMik7XG4gICAgfVxuICAgIGxvZ2dlci5zZXR1cChsb2dDb25maWcubG9nKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgbGV0IGNvbmZpZ1BhdGhMb2NhdGlvbjtcbiAgICB0cnkge1xuICAgICAgY29uZmlnUGF0aExvY2F0aW9uID0gZmluZENvbmZpZ0ZpbGUodGhpcy5jb25maWcgYXMgc3RyaW5nKTtcbiAgICAgIGNvbnN0IGNvbmZpZ1BhcnNlZDogUmV0dXJuVHlwZTxhbnk+ID0gcGFyc2VDb25maWdGaWxlKGNvbmZpZ1BhdGhMb2NhdGlvbik7XG4gICAgICBpZiAoIWNvbmZpZ1BhcnNlZC5zZWxmX3BhdGgpIHtcbiAgICAgICAgY29uZmlnUGFyc2VkLnNlbGZfcGF0aCA9IHBhdGgucmVzb2x2ZShjb25maWdQYXRoTG9jYXRpb24pO1xuICAgICAgICB0aGlzLmluaXRMb2dnZXIoY29uZmlnUGFyc2VkKTtcbiAgICAgICAgLy8gY29tcGF0aWJpbGl0eSB3aXRoIDYueCBwbHVnaW5zXG4gICAgICAgIGNvbmZpZ1BhcnNlZC5jb25maWdQYXRoID0gY29uZmlnUGFyc2VkLnNlbGZfcGF0aDtcbiAgICAgIH1cbiAgICAgIGlmICghY29uZmlnUGFyc2VkLmh0dHBzKSB7XG4gICAgICAgIGNvbmZpZ1BhcnNlZC5odHRwcyA9IHsgZW5hYmxlOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBjb25maWdQYXJzZWQuZmxhZ3MgPSB7XG4gICAgICAgIC4uLmNvbmZpZ1BhcnNlZC5mbGFncyxcbiAgICAgICAgLy8gb24gdGhpcyB2ZXJzaW9uIHRoZXJlIGlzIG5vIHJlbW90ZSBzZWFyY2hcbiAgICAgICAgc2VhcmNoUmVtb3RlOiBmYWxzZSxcbiAgICAgIH07XG5cbiAgICAgIHByb2Nlc3MudGl0bGUgPSAoY29uZmlnUGFyc2VkLndlYiAmJiBjb25maWdQYXJzZWQud2ViLnRpdGxlKSB8fCAndmVyZGFjY2lvJztcblxuICAgICAgc3RhcnRWZXJkYWNjaW8oXG4gICAgICAgIGNvbmZpZ1BhcnNlZCxcbiAgICAgICAgdGhpcy5saXN0ZW4gYXMgc3RyaW5nLFxuICAgICAgICBjb25maWdQYXRoTG9jYXRpb24sXG4gICAgICAgIHBrZ1ZlcnNpb24sXG4gICAgICAgIHBrZ05hbWUsXG4gICAgICAgIGxpc3RlbkRlZmF1bHRDYWxsYmFja1xuICAgICAgKTtcbiAgICAgIGxvZ2dlci5sb2dnZXIuaW5mbyh7IGZpbGU6IGNvbmZpZ1BhdGhMb2NhdGlvbiB9LCAnY29uZmlnIGZpbGUgIC0gQHtmaWxlfScpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAodHlwZW9mIGxvZ2dlcj8ubG9nZ2VyPy5mYXRhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsb2dnZXIubG9nZ2VyLmZhdGFsKFxuICAgICAgICAgIHsgZmlsZTogY29uZmlnUGF0aExvY2F0aW9uLCBlcnI6IGVyciB9LFxuICAgICAgICAgICdjYW5ub3Qgb3BlbiBjb25maWcgZmlsZSBAe2ZpbGV9OiBAeyFlcnIubWVzc2FnZX0nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGBjYW5ub3Qgb3BlbiBjb25maWcgZmlsZSAke2NvbmZpZ1BhdGhMb2NhdGlvbn06ICR7IWVyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFHQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFBOEMsU0FBQUUsdUJBQUFLLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRyxRQUFBSCxDQUFBLEVBQUFJLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQVAsQ0FBQSxPQUFBTSxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBUixDQUFBLEdBQUFJLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFYLENBQUEsRUFBQUksQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQWYsQ0FBQSxhQUFBSSxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxD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
;