verdaccio 6.4.0 → 6.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,7 +24,7 @@ var _endpoint = _interopRequireDefault(require("./endpoint"));
24
24
  var _middleware2 = require("./middleware");
25
25
  var _web = _interopRequireDefault(require("./web"));
26
26
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
- const version = "6.4.0" || 'dev';
27
+ const version = "6.5.1" || 'dev';
28
28
  const defineAPI = async function (config, storage) {
29
29
  const auth = new _auth.Auth(config, _logger.logger, {
30
30
  legacyMergeConfigs: true
@@ -23,9 +23,9 @@ var _default = (auth, storage, config) => {
23
23
  router.use((0, _package.default)(storage, auth, config));
24
24
  router.use((0, _search.default)(storage, auth));
25
25
  if ((0, _utils.hasLogin)(config)) {
26
- router.use((0, _user.default)(auth, storage));
26
+ router.use((0, _user.default)(auth, config));
27
27
  }
28
28
  return router;
29
29
  };
30
30
  exports.default = _default;
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsInJlcXVpcmUiLCJfbWlkZGxld2FyZSIsIl91dGlscyIsIl9wYWNrYWdlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9zZWFyY2giLCJfdXNlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZhdWx0IiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJyb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJyYXRlTGltaXQiLCJ3aW5kb3dNcyIsIm1heCIsIndlYiIsInBhY2thZ2VBcGkiLCJzZWFyY2giLCJoYXNMb2dpbiIsInVzZXIiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS93ZWIvYXBpL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyByYXRlTGltaXQgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuXG5pbXBvcnQgeyBoYXNMb2dpbiB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgcGFja2FnZUFwaSBmcm9tICcuL3BhY2thZ2UnO1xuaW1wb3J0IHNlYXJjaCBmcm9tICcuL3NlYXJjaCc7XG5pbXBvcnQgdXNlciBmcm9tICcuL3VzZXInO1xuXG5leHBvcnQgZGVmYXVsdCAoYXV0aCwgc3RvcmFnZSwgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IFJvdXRlcigpO1xuICByb3V0ZXIudXNlKFxuICAgIHJhdGVMaW1pdCh7XG4gICAgICB3aW5kb3dNczogMiAqIDYwICogMTAwMCwgLy8gMiAgbWludXRlc1xuICAgICAgbWF4OiA1MDAwLCAvLyBsaW1pdCBlYWNoIElQIHRvIDEwMDAgcmVxdWVzdHMgcGVyIHdpbmRvd01zXG4gICAgICAuLi5jb25maWc/LndlYj8ucmF0ZUxpbWl0LFxuICAgIH0pXG4gICk7XG4gIHJvdXRlci51c2UocGFja2FnZUFwaShzdG9yYWdlLCBhdXRoLCBjb25maWcpKTtcbiAgcm91dGVyLnVzZShzZWFyY2goc3RvcmFnZSwgYXV0aCkpO1xuICBpZiAoaGFzTG9naW4oY29uZmlnKSkge1xuICAgIHJvdXRlci51c2UodXNlcihhdXRoLCBzdG9yYWdlKSk7XG4gIH1cbiAgcmV0dXJuIHJvdXRlcjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUEwQixTQUFBSSx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLElBQUFHLFFBQUEsR0FFWEEsQ0FBQ0MsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztFQUN4QyxNQUFNQyxNQUFNLEdBQUcsSUFBQUMsZUFBTSxFQUFDLENBQUM7RUFDdkJELE1BQU0sQ0FBQ0UsR0FBRyxDQUNSLElBQUFDLHFCQUFTLEVBQUM7SUFDUkMsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtJQUFFO0lBQ3pCQyxHQUFHLEVBQUUsSUFBSTtJQUFFO0lBQ1gsR0FBR04sTUFBTSxFQUFFTyxHQUFHLEVBQUVIO0VBQ2xCLENBQUMsQ0FDSCxDQUFDO0VBQ0RILE1BQU0sQ0FBQ0UsR0FBRyxDQUFDLElBQUFLLGdCQUFVLEVBQUNULE9BQU8sRUFBRUQsSUFBSSxFQUFFRSxNQUFNLENBQUMsQ0FBQztFQUM3Q0MsTUFBTSxDQUFDRSxHQUFHLENBQUMsSUFBQU0sZUFBTSxFQUFDVixPQUFPLEVBQUVELElBQUksQ0FBQyxDQUFDO0VBQ2pDLElBQUksSUFBQVksZUFBUSxFQUFDVixNQUFNLENBQUMsRUFBRTtJQUNwQkMsTUFBTSxDQUFDRSxHQUFHLENBQUMsSUFBQVEsYUFBSSxFQUFDYixJQUFJLEVBQUVDLE9BQU8sQ0FBQyxDQUFDO0VBQ2pDO0VBQ0EsT0FBT0UsTUFBTTtBQUNmLENBQUM7QUFBQVcsT0FBQSxDQUFBaEIsT0FBQSxHQUFBQyxRQUFBIiwiaWdub3JlTGlzdCI6W119
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsInJlcXVpcmUiLCJfbWlkZGxld2FyZSIsIl91dGlscyIsIl9wYWNrYWdlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9zZWFyY2giLCJfdXNlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZhdWx0IiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJyb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJyYXRlTGltaXQiLCJ3aW5kb3dNcyIsIm1heCIsIndlYiIsInBhY2thZ2VBcGkiLCJzZWFyY2giLCJoYXNMb2dpbiIsInVzZXIiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS93ZWIvYXBpL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyByYXRlTGltaXQgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuXG5pbXBvcnQgeyBoYXNMb2dpbiB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgcGFja2FnZUFwaSBmcm9tICcuL3BhY2thZ2UnO1xuaW1wb3J0IHNlYXJjaCBmcm9tICcuL3NlYXJjaCc7XG5pbXBvcnQgdXNlciBmcm9tICcuL3VzZXInO1xuXG5leHBvcnQgZGVmYXVsdCAoYXV0aCwgc3RvcmFnZSwgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IFJvdXRlcigpO1xuICByb3V0ZXIudXNlKFxuICAgIHJhdGVMaW1pdCh7XG4gICAgICB3aW5kb3dNczogMiAqIDYwICogMTAwMCwgLy8gMiAgbWludXRlc1xuICAgICAgbWF4OiA1MDAwLCAvLyBsaW1pdCBlYWNoIElQIHRvIDEwMDAgcmVxdWVzdHMgcGVyIHdpbmRvd01zXG4gICAgICAuLi5jb25maWc/LndlYj8ucmF0ZUxpbWl0LFxuICAgIH0pXG4gICk7XG4gIHJvdXRlci51c2UocGFja2FnZUFwaShzdG9yYWdlLCBhdXRoLCBjb25maWcpKTtcbiAgcm91dGVyLnVzZShzZWFyY2goc3RvcmFnZSwgYXV0aCkpO1xuICBpZiAoaGFzTG9naW4oY29uZmlnKSkge1xuICAgIHJvdXRlci51c2UodXNlcihhdXRoLCBjb25maWcpKTtcbiAgfVxuICByZXR1cm4gcm91dGVyO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sS0FBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQTBCLFNBQUFJLHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsSUFBQUcsUUFBQSxHQUVYQSxDQUFDQyxJQUFJLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxLQUFLO0VBQ3hDLE1BQU1DLE1BQU0sR0FBRyxJQUFBQyxlQUFNLEVBQUMsQ0FBQztFQUN2QkQsTUFBTSxDQUFDRSxHQUFHLENBQ1IsSUFBQUMscUJBQVMsRUFBQztJQUNSQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQUU7SUFDekJDLEdBQUcsRUFBRSxJQUFJO0lBQUU7SUFDWCxHQUFHTixNQUFNLEVBQUVPLEdBQUcsRUFBRUg7RUFDbEIsQ0FBQyxDQUNILENBQUM7RUFDREgsTUFBTSxDQUFDRSxHQUFHLENBQUMsSUFBQUssZ0JBQVUsRUFBQ1QsT0FBTyxFQUFFRCxJQUFJLEVBQUVFLE1BQU0sQ0FBQyxDQUFDO0VBQzdDQyxNQUFNLENBQUNFLEdBQUcsQ0FBQyxJQUFBTSxlQUFNLEVBQUNWLE9BQU8sRUFBRUQsSUFBSSxDQUFDLENBQUM7RUFDakMsSUFBSSxJQUFBWSxlQUFRLEVBQUNWLE1BQU0sQ0FBQyxFQUFFO0lBQ3BCQyxNQUFNLENBQUNFLEdBQUcsQ0FBQyxJQUFBUSxhQUFJLEVBQUNiLElBQUksRUFBRUUsTUFBTSxDQUFDLENBQUM7RUFDaEM7RUFDQSxPQUFPQyxNQUFNO0FBQ2YsQ0FBQztBQUFBVyxPQUFBLENBQUFoQixPQUFBLEdBQUFDLFFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -36,35 +36,38 @@ function addUserAuthApi(auth, config) {
36
36
  }
37
37
  });
38
38
  });
39
- route.put((0, _utils2.wrapSecPath)(_middleware.WebUrls.reset_password), function (req, res, next) {
40
- if (_lodash.default.isNil(req.remote_user.name)) {
41
- res.status(_constants.HTTP_STATUS.UNAUTHORIZED);
42
- return next({
43
- // FUTURE: update to a more meaningful message
44
- message: _constants.API_ERROR.MUST_BE_LOGGED
45
- });
46
- }
47
- const {
48
- password
49
- } = req.body;
50
- const {
51
- name
52
- } = req.remote_user;
53
- if (_core.validationUtils.validatePassword(password.new) === false) {
39
+ if (config?.flags?.changePassword === true) {
40
+ route.put((0, _utils2.wrapSecPath)(_middleware.WebUrls.reset_password), function (req, res, next) {
41
+ if (_lodash.default.isNil(req.remote_user.name)) {
42
+ res.status(_constants.HTTP_STATUS.UNAUTHORIZED);
43
+ return next({
44
+ // FUTURE: update to a more meaningful message
45
+ message: _constants.API_ERROR.MUST_BE_LOGGED
46
+ });
47
+ }
48
+ const {
49
+ password
50
+ } = req.body;
51
+ const {
52
+ name
53
+ } = req.remote_user;
54
+ if (_core.validationUtils.validatePassword(password.new) === false) {
55
+ return next(_utils.ErrorCode.getCode(_constants.HTTP_STATUS.BAD_REQUEST, _constants.APP_ERROR.PASSWORD_VALIDATION));
56
+ }
54
57
  auth.changePassword(name, password.old, password.new, (err, isUpdated) => {
55
58
  if (_lodash.default.isNil(err) && isUpdated) {
56
59
  next({
57
60
  ok: true
58
61
  });
62
+ } else if (!_lodash.default.isNil(err)) {
63
+ return next(_utils.ErrorCode.getCode(_lodash.default.isNil(err.status) ? _constants.HTTP_STATUS.CONFLICT : err.status, err.message));
59
64
  } else {
60
65
  return next(_utils.ErrorCode.getInternalError(_constants.API_ERROR.INTERNAL_SERVER_ERROR));
61
66
  }
62
67
  });
63
- } else {
64
- return next(_utils.ErrorCode.getCode(_constants.HTTP_STATUS.BAD_REQUEST, _constants.APP_ERROR.PASSWORD_VALIDATION));
65
- }
66
- });
68
+ });
69
+ }
67
70
  return route;
68
71
  }
69
72
  var _default = exports.default = addUserAuthApi;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb3JlIiwiX21pZGRsZXdhcmUiLCJfYXV0aFV0aWxzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl91dGlsczIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJhZGRVc2VyQXV0aEFwaSIsImF1dGgiLCJjb25maWciLCJyb3V0ZSIsIlJvdXRlciIsInBvc3QiLCJ3cmFwU2VjUGF0aCIsIldlYlVybHMiLCJ1c2VyX2xvZ2luIiwicmF0ZUxpbWl0IiwidXNlclJhdGVMaW1pdCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiYm9keSIsImF1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJlcnJvckNvZGUiLCJtZXNzYWdlIiwiSFRUUF9TVEFUVVMiLCJVTkFVVEhPUklaRUQiLCJJTlRFUk5BTF9FUlJPUiIsIkVycm9yQ29kZSIsImdldENvZGUiLCJyZW1vdGVfdXNlciIsImpXVFNpZ25PcHRpb25zIiwiZ2V0U2VjdXJpdHkiLCJ3ZWIiLCJzaWduIiwic2V0IiwiSEVBREVSUyIsIkNBQ0hFX0NPTlRST0wiLCJ0b2tlbiIsImp3dEVuY3J5cHQiLCJuYW1lIiwicHV0IiwicmVzZXRfcGFzc3dvcmQiLCJfIiwiaXNOaWwiLCJzdGF0dXMiLCJBUElfRVJST1IiLCJNVVNUX0JFX0xPR0dFRCIsInZhbGlkYXRpb25VdGlscyIsInZhbGlkYXRlUGFzc3dvcmQiLCJuZXciLCJjaGFuZ2VQYXNzd29yZCIsIm9sZCIsImlzVXBkYXRlZCIsIm9rIiwiZ2V0SW50ZXJuYWxFcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsIkJBRF9SRVFVRVNUIiwiQVBQX0VSUk9SIiwiUEFTU1dPUkRfVkFMSURBVElPTiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2FwaS91c2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHR5cGUgeyBBdXRoIH0gZnJvbSAnQHZlcmRhY2Npby9hdXRoJztcbmltcG9ydCB7IHZhbGlkYXRpb25VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBXZWJVcmxzLCByYXRlTGltaXQgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcsIEpXVFNpZ25PcHRpb25zLCBSZW1vdGVVc2VyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IGdldFNlY3VyaXR5IH0gZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUFBfRVJST1IsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyAkTmV4dEZ1bmN0aW9uVmVyIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgd3JhcFNlY1BhdGggfSBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gYWRkVXNlckF1dGhBcGkoYXV0aDogQXV0aCwgY29uZmlnOiBDb25maWcpOiBSb3V0ZXIge1xuICAvKiBlc2xpbnQgbmV3LWNhcDpvZmYgKi9cbiAgY29uc3Qgcm91dGUgPSBSb3V0ZXIoKTtcbiAgcm91dGUucG9zdChcbiAgICB3cmFwU2VjUGF0aChXZWJVcmxzLnVzZXJfbG9naW4pLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0gPSByZXEuYm9keTtcblxuICAgICAgYXV0aC5hdXRoZW50aWNhdGUodXNlcm5hbWUsIHBhc3N3b3JkLCBhc3luYyAoZXJyLCB1c2VyPzogUmVtb3RlVXNlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZXJyLm1lc3NhZ2UgPyBIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQgOiBIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUjtcbiAgICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKGVycm9yQ29kZSwgZXJyLm1lc3NhZ2UpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyIGFzIFJlbW90ZVVzZXI7XG4gICAgICAgICAgY29uc3QgaldUU2lnbk9wdGlvbnM6IEpXVFNpZ25PcHRpb25zID0gZ2V0U2VjdXJpdHkoY29uZmlnKS53ZWIuc2lnbjtcbiAgICAgICAgICByZXMuc2V0KEhFQURFUlMuQ0FDSEVfQ09OVFJPTCwgJ25vLWNhY2hlLCBuby1zdG9yZScpO1xuICAgICAgICAgIG5leHQoe1xuICAgICAgICAgICAgdG9rZW46IGF3YWl0IGF1dGguand0RW5jcnlwdCh1c2VyIGFzIFJlbW90ZVVzZXIsIGpXVFNpZ25PcHRpb25zKSxcbiAgICAgICAgICAgIHVzZXJuYW1lOiByZXEucmVtb3RlX3VzZXIubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLnB1dChcbiAgICB3cmFwU2VjUGF0aChXZWJVcmxzLnJlc2V0X3Bhc3N3b3JkKSxcbiAgICBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc05pbChyZXEucmVtb3RlX3VzZXIubmFtZSkpIHtcbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQpO1xuICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgLy8gRlVUVVJFOiB1cGRhdGUgdG8gYSBtb3JlIG1lYW5pbmdmdWwgbWVzc2FnZVxuICAgICAgICAgIG1lc3NhZ2U6IEFQSV9FUlJPUi5NVVNUX0JFX0xPR0dFRCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgICAgY29uc3QgeyBuYW1lIH0gPSByZXEucmVtb3RlX3VzZXI7XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uVXRpbHMudmFsaWRhdGVQYXNzd29yZChwYXNzd29yZC5uZXcpID09PSBmYWxzZSkge1xuICAgICAgICBhdXRoLmNoYW5nZVBhc3N3b3JkKG5hbWUgYXMgc3RyaW5nLCBwYXNzd29yZC5vbGQsIHBhc3N3b3JkLm5ldywgKGVyciwgaXNVcGRhdGVkKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSAmJiBpc1VwZGF0ZWQpIHtcbiAgICAgICAgICAgIG5leHQoe1xuICAgICAgICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihBUElfRVJST1IuSU5URVJOQUxfU0VSVkVSX0VSUk9SKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUFBfRVJST1IuUEFTU1dPUkRfVkFMSURBVElPTikpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICByZXR1cm4gcm91dGU7XG59XG5cbmV4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
73
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb3JlIiwiX21pZGRsZXdhcmUiLCJfYXV0aFV0aWxzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl91dGlsczIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJhZGRVc2VyQXV0aEFwaSIsImF1dGgiLCJjb25maWciLCJyb3V0ZSIsIlJvdXRlciIsInBvc3QiLCJ3cmFwU2VjUGF0aCIsIldlYlVybHMiLCJ1c2VyX2xvZ2luIiwicmF0ZUxpbWl0IiwidXNlclJhdGVMaW1pdCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiYm9keSIsImF1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJlcnJvckNvZGUiLCJtZXNzYWdlIiwiSFRUUF9TVEFUVVMiLCJVTkFVVEhPUklaRUQiLCJJTlRFUk5BTF9FUlJPUiIsIkVycm9yQ29kZSIsImdldENvZGUiLCJyZW1vdGVfdXNlciIsImpXVFNpZ25PcHRpb25zIiwiZ2V0U2VjdXJpdHkiLCJ3ZWIiLCJzaWduIiwic2V0IiwiSEVBREVSUyIsIkNBQ0hFX0NPTlRST0wiLCJ0b2tlbiIsImp3dEVuY3J5cHQiLCJuYW1lIiwiZmxhZ3MiLCJjaGFuZ2VQYXNzd29yZCIsInB1dCIsInJlc2V0X3Bhc3N3b3JkIiwiXyIsImlzTmlsIiwic3RhdHVzIiwiQVBJX0VSUk9SIiwiTVVTVF9CRV9MT0dHRUQiLCJ2YWxpZGF0aW9uVXRpbHMiLCJ2YWxpZGF0ZVBhc3N3b3JkIiwibmV3IiwiQkFEX1JFUVVFU1QiLCJBUFBfRVJST1IiLCJQQVNTV09SRF9WQUxJREFUSU9OIiwib2xkIiwiaXNVcGRhdGVkIiwib2siLCJDT05GTElDVCIsImdldEludGVybmFsRXJyb3IiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3dlYi9hcGkvdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB0eXBlIHsgQXV0aCB9IGZyb20gJ0B2ZXJkYWNjaW8vYXV0aCc7XG5pbXBvcnQgeyB2YWxpZGF0aW9uVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgV2ViVXJscywgcmF0ZUxpbWl0IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBKV1RTaWduT3B0aW9ucywgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBnZXRTZWN1cml0eSB9IGZyb20gJy4uLy4uLy4uL2xpYi9hdXRoLXV0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBQX0VSUk9SLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgJE5leHRGdW5jdGlvblZlciB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IHdyYXBTZWNQYXRoIH0gZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGFkZFVzZXJBdXRoQXBpKGF1dGg6IEF1dGgsIGNvbmZpZzogQ29uZmlnKTogUm91dGVyIHtcbiAgLyogZXNsaW50IG5ldy1jYXA6b2ZmICovXG4gIGNvbnN0IHJvdXRlID0gUm91dGVyKCk7XG4gIHJvdXRlLnBvc3QoXG4gICAgd3JhcFNlY1BhdGgoV2ViVXJscy51c2VyX2xvZ2luKSxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCB7IHVzZXJuYW1lLCBwYXNzd29yZCB9ID0gcmVxLmJvZHk7XG5cbiAgICAgIGF1dGguYXV0aGVudGljYXRlKHVzZXJuYW1lLCBwYXNzd29yZCwgYXN5bmMgKGVyciwgdXNlcj86IFJlbW90ZVVzZXIpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGVyci5tZXNzYWdlID8gSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVEIDogSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1I7XG4gICAgICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Q29kZShlcnJvckNvZGUsIGVyci5tZXNzYWdlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gdXNlciBhcyBSZW1vdGVVc2VyO1xuICAgICAgICAgIGNvbnN0IGpXVFNpZ25PcHRpb25zOiBKV1RTaWduT3B0aW9ucyA9IGdldFNlY3VyaXR5KGNvbmZpZykud2ViLnNpZ247XG4gICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICBuZXh0KHtcbiAgICAgICAgICAgIHRva2VuOiBhd2FpdCBhdXRoLmp3dEVuY3J5cHQodXNlciBhcyBSZW1vdGVVc2VyLCBqV1RTaWduT3B0aW9ucyksXG4gICAgICAgICAgICB1c2VybmFtZTogcmVxLnJlbW90ZV91c2VyLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICBpZiAoY29uZmlnPy5mbGFncz8uY2hhbmdlUGFzc3dvcmQgPT09IHRydWUpIHtcbiAgICByb3V0ZS5wdXQoXG4gICAgICB3cmFwU2VjUGF0aChXZWJVcmxzLnJlc2V0X3Bhc3N3b3JkKSxcbiAgICAgIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNOaWwocmVxLnJlbW90ZV91c2VyLm5hbWUpKSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQpO1xuICAgICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICAgIC8vIEZVVFVSRTogdXBkYXRlIHRvIGEgbW9yZSBtZWFuaW5nZnVsIG1lc3NhZ2VcbiAgICAgICAgICAgIG1lc3NhZ2U6IEFQSV9FUlJPUi5NVVNUX0JFX0xPR0dFRCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgICAgICBjb25zdCB7IG5hbWUgfSA9IHJlcS5yZW1vdGVfdXNlcjtcblxuICAgICAgICBpZiAodmFsaWRhdGlvblV0aWxzLnZhbGlkYXRlUGFzc3dvcmQocGFzc3dvcmQubmV3KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5CQURfUkVRVUVTVCwgQVBQX0VSUk9SLlBBU1NXT1JEX1ZBTElEQVRJT04pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGguY2hhbmdlUGFzc3dvcmQoXG4gICAgICAgICAgbmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgcGFzc3dvcmQub2xkLFxuICAgICAgICAgIHBhc3N3b3JkLm5ldyxcbiAgICAgICAgICAoZXJyLCBpc1VwZGF0ZWQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChfLmlzTmlsKGVycikgJiYgaXNVcGRhdGVkKSB7XG4gICAgICAgICAgICAgIG5leHQoe1xuICAgICAgICAgICAgICAgIG9rOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIV8uaXNOaWwoZXJyKSkge1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChcbiAgICAgICAgICAgICAgICBFcnJvckNvZGUuZ2V0Q29kZShcbiAgICAgICAgICAgICAgICAgIF8uaXNOaWwoZXJyLnN0YXR1cykgPyBIVFRQX1NUQVRVUy5DT05GTElDVCA6IGVyci5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICBlcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5JTlRFUk5BTF9TRVJWRVJfRVJST1IpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiByb3V0ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRkVXNlckF1dGhBcGk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUdBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUFzQyxTQUFBRSx1QkFBQU8sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUV0QyxTQUFTRyxjQUFjQSxDQUFDQyxJQUFVLEVBQUVDLE1BQWMsRUFBVTtFQUMxRDtFQUNBLE1BQU1DLEtBQUssR0FBRyxJQUFBQyxlQUFNLEVBQUMsQ0FBQztFQUN0QkQsS0FBSyxDQUFDRSxJQUFJLENBQ1IsSUFBQUMsbUJBQVcsRUFBQ0MsbUJBQU8sQ0FBQ0MsVUFBVSxDQUFDLEVBQy9CLElBQUFDLHFCQUFTLEVBQUNQLE1BQU0sRUFBRVEsYUFBYSxDQUFDLEVBQ2hDLFVBQVVDLEdBQVksRUFBRUMsR0FBYSxFQUFFQyxJQUFzQixFQUFRO0lBQ25FLE1BQU07TUFBRUMsUUFBUTtNQUFFQztJQUFTLENBQUMsR0FBR0osR0FBRyxDQUFDSyxJQUFJO0lBRXZDZixJQUFJLENBQUNnQixZQUFZLENBQUNILFFBQVEsRUFBRUMsUUFBUSxFQUFFLE9BQU9HLEdBQUcsRUFBRUMsSUFBaUIsS0FBb0I7TUFDckYsSUFBSUQsR0FBRyxFQUFFO1FBQ1AsTUFBTUUsU0FBUyxHQUFHRixHQUFHLENBQUNHLE9BQU8sR0FBR0Msc0JBQVcsQ0FBQ0MsWUFBWSxHQUFHRCxzQkFBVyxDQUFDRSxjQUFjO1FBQ3JGWCxJQUFJLENBQUNZLGdCQUFTLENBQUNDLE9BQU8sQ0FBQ04sU0FBUyxFQUFFRixHQUFHLENBQUNHLE9BQU8sQ0FBQyxDQUFDO01BQ2pELENBQUMsTUFBTTtRQUNMVixHQUFHLENBQUNnQixXQUFXLEdBQUdSLElBQWtCO1FBQ3BDLE1BQU1TLGNBQThCLEdBQUcsSUFBQUMsc0JBQVcsRUFBQzNCLE1BQU0sQ0FBQyxDQUFDNEIsR0FBRyxDQUFDQyxJQUFJO1FBQ25FbkIsR0FBRyxDQUFDb0IsR0FBRyxDQUFDQyxrQkFBTyxDQUFDQyxhQUFhLEVBQUUsb0JBQW9CLENBQUM7UUFDcERyQixJQUFJLENBQUM7VUFDSHNCLEtBQUssRUFBRSxNQUFNbEMsSUFBSSxDQUFDbUMsVUFBVSxDQUFDakIsSUFBSSxFQUFnQlMsY0FBYyxDQUFDO1VBQ2hFZCxRQUFRLEVBQUVILEdBQUcsQ0FBQ2dCLFdBQVcsQ0FBQ1U7UUFDNUIsQ0FBQyxDQUFDO01BQ0o7SUFDRixDQUFDLENBQUM7RUFDSixDQUNGLENBQUM7RUFFRCxJQUFJbkMsTUFBTSxFQUFFb0MsS0FBSyxFQUFFQyxjQUFjLEtBQUssSUFBSSxFQUFFO0lBQzFDcEMsS0FBSyxDQUFDcUMsR0FBRyxDQUNQLElBQUFsQyxtQkFBVyxFQUFDQyxtQkFBTyxDQUFDa0MsY0FBYyxDQUFDLEVBQ25DLFVBQVU5QixHQUFZLEVBQUVDLEdBQWEsRUFBRUMsSUFBc0IsRUFBUTtNQUNuRSxJQUFJNkIsZUFBQyxDQUFDQyxLQUFLLENBQUNoQyxHQUFHLENBQUNnQixXQUFXLENBQUNVLElBQUksQ0FBQyxFQUFFO1FBQ2pDekIsR0FBRyxDQUFDZ0MsTUFBTSxDQUFDdEIsc0JBQVcsQ0FBQ0MsWUFBWSxDQUFDO1FBQ3BDLE9BQU9WLElBQUksQ0FBQztVQUNWO1VBQ0FRLE9BQU8sRUFBRXdCLG9CQUFTLENBQUNDO1FBQ3JCLENBQUMsQ0FBQztNQUNKO01BRUEsTUFBTTtRQUFFL0I7TUFBUyxDQUFDLEdBQUdKLEdBQUcsQ0FBQ0ssSUFBSTtNQUM3QixNQUFNO1FBQUVxQjtNQUFLLENBQUMsR0FBRzFCLEdBQUcsQ0FBQ2dCLFdBQVc7TUFFaEMsSUFBSW9CLHFCQUFlLENBQUNDLGdCQUFnQixDQUFDakMsUUFBUSxDQUFDa0MsR0FBRyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzVELE9BQU9wQyxJQUFJLENBQUNZLGdCQUFTLENBQUNDLE9BQU8sQ0FBQ0osc0JBQVcsQ0FBQzRCLFdBQVcsRUFBRUMsb0JBQVMsQ0FBQ0MsbUJBQW1CLENBQUMsQ0FBQztNQUN4RjtNQUVBbkQsSUFBSSxDQUFDc0MsY0FBYyxDQUNqQkYsSUFBSSxFQUNKdEIsUUFBUSxDQUFDc0MsR0FBRyxFQUNadEMsUUFBUSxDQUFDa0MsR0FBRyxFQUNaLENBQUMvQixHQUFHLEVBQUVvQyxTQUFTLEtBQVc7UUFDeEIsSUFBSVosZUFBQyxDQUFDQyxLQUFLLENBQUN6QixHQUFHLENBQUMsSUFBSW9DLFNBQVMsRUFBRTtVQUM3QnpDLElBQUksQ0FBQztZQUNIMEMsRUFBRSxFQUFFO1VBQ04sQ0FBQyxDQUFDO1FBQ0osQ0FBQyxNQUFNLElBQUksQ0FBQ2IsZUFBQyxDQUFDQyxLQUFLLENBQUN6QixHQUFHLENBQUMsRUFBRTtVQUN4QixPQUFPTCxJQUFJLENBQ1RZLGdCQUFTLENBQUNDLE9BQU8sQ0FDZmdCLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDekIsR0FBRyxDQUFDMEIsTUFBTSxDQUFDLEdBQUd0QixzQkFBVyxDQUFDa0MsUUFBUSxHQUFHdEMsR0FBRyxDQUFDMEIsTUFBTSxFQUN2RDFCLEdBQUcsQ0FBQ0csT0FDTixDQUNGLENBQUM7UUFDSCxDQUFDLE1BQU07VUFDTCxPQUFPUixJQUFJLENBQUNZLGdCQUFTLENBQUNnQyxnQkFBZ0IsQ0FBQ1osb0JBQVMsQ0FBQ2EscUJBQXFCLENBQUMsQ0FBQztRQUMxRTtNQUNGLENBQ0YsQ0FBQztJQUNILENBQ0YsQ0FBQztFQUNIO0VBRUEsT0FBT3ZELEtBQUs7QUFDZDtBQUFDLElBQUF3RCxRQUFBLEdBQUFDLE9BQUEsQ0FBQTdELE9BQUEsR0FFY0MsY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -5,7 +5,7 @@ var _info = require("./commands/info");
5
5
  var _init = require("./commands/init");
6
6
  var _version = require("./commands/version");
7
7
  var _utils = require("./utils");
8
- const pkgVersion = "6.4.0" || 'dev';
8
+ const pkgVersion = "6.5.1" || 'dev';
9
9
  if (process.getuid && process.getuid() === 0) {
10
10
  process.emitWarning(`Verdaccio doesn't need superuser privileges. don't run it under root`);
11
11
  }
@@ -11,7 +11,7 @@ var _bootstrap = require("../../bootstrap");
11
11
  var _logger = require("../../logger");
12
12
  var _utils = require("../../utils");
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- const pkgVersion = "6.4.0" || 'dev';
14
+ const pkgVersion = "6.5.1" || 'dev';
15
15
  const pkgName = 'verdaccio';
16
16
  const DEFAULT_PROCESS_NAME = exports.DEFAULT_PROCESS_NAME = 'verdaccio';
17
17
  class InitCommand extends _clipanion.Command {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.VersionCommand = void 0;
7
7
  var _clipanion = require("clipanion");
8
- const pkgVersion = "6.4.0" || 'dev';
8
+ const pkgVersion = "6.5.1" || 'dev';
9
9
  class VersionCommand extends _clipanion.Command {
10
10
  static paths = [[`--version`], [`-v`]];
11
11
  async execute() {
@@ -0,0 +1,11 @@
1
+ import { createRegistryConfig, homeTests } from '@verdaccio/e2e-ui';
2
+
3
+ const registryUrl = Cypress.env('VERDACCIO_URL') || 'http://localhost:4873';
4
+
5
+ const config = createRegistryConfig({
6
+ registryUrl,
7
+ title: 'Verdaccio e2e',
8
+ credentials: { user: 'test', password: 'test' },
9
+ });
10
+
11
+ homeTests(config);
@@ -0,0 +1,11 @@
1
+ import { createRegistryConfig, signinTests } from '@verdaccio/e2e-ui';
2
+
3
+ const registryUrl = Cypress.env('VERDACCIO_URL') || 'http://localhost:4873';
4
+
5
+ const config = createRegistryConfig({
6
+ registryUrl,
7
+ title: 'Verdaccio e2e',
8
+ credentials: { user: 'test', password: 'test' },
9
+ });
10
+
11
+ signinTests(config);
@@ -0,0 +1,11 @@
1
+ import { createRegistryConfig, layoutTests } from '@verdaccio/e2e-ui';
2
+
3
+ const registryUrl = Cypress.env('VERDACCIO_URL') || 'http://localhost:4873';
4
+
5
+ const config = createRegistryConfig({
6
+ registryUrl,
7
+ title: 'Verdaccio e2e',
8
+ credentials: { user: 'test', password: 'test' },
9
+ });
10
+
11
+ layoutTests(config);
@@ -0,0 +1,11 @@
1
+ import { createRegistryConfig, searchTests } from '@verdaccio/e2e-ui';
2
+
3
+ const registryUrl = Cypress.env('VERDACCIO_URL') || 'http://localhost:4873';
4
+
5
+ const config = createRegistryConfig({
6
+ registryUrl,
7
+ title: 'Verdaccio e2e',
8
+ credentials: { user: 'test', password: 'test' },
9
+ });
10
+
11
+ searchTests(config);
@@ -0,0 +1,11 @@
1
+ import { createRegistryConfig, settingsTests } from '@verdaccio/e2e-ui';
2
+
3
+ const registryUrl = Cypress.env('VERDACCIO_URL') || 'http://localhost:4873';
4
+
5
+ const config = createRegistryConfig({
6
+ registryUrl,
7
+ title: 'Verdaccio e2e',
8
+ credentials: { user: 'test', password: 'test' },
9
+ });
10
+
11
+ settingsTests(config);
@@ -0,0 +1,11 @@
1
+ import { createRegistryConfig, publishTests } from '@verdaccio/e2e-ui';
2
+
3
+ const registryUrl = Cypress.env('VERDACCIO_URL') || 'http://localhost:4873';
4
+
5
+ const config = createRegistryConfig({
6
+ registryUrl,
7
+ title: 'Verdaccio e2e',
8
+ credentials: { user: 'test', password: 'test' },
9
+ });
10
+
11
+ publishTests(config);
@@ -0,0 +1,32 @@
1
+ import { changePasswordTests, createRegistryConfig } from '@verdaccio/e2e-ui';
2
+
3
+ const registryUrl = Cypress.env('VERDACCIO_URL') || 'http://localhost:4873';
4
+
5
+ // Unlike the e2e-tests repo (which targets the published `verdaccio:6`
6
+ // docker image and has to skip the happy path around the unpublished
7
+ // reset_password inversion fix), this spec runs against the locally
8
+ // built 6.x source in this repo — where the fix lives — so every
9
+ // change-password scenario can execute.
10
+ const config = createRegistryConfig({
11
+ registryUrl,
12
+ title: 'Verdaccio e2e',
13
+ credentials: { user: 'test', password: 'test' },
14
+ });
15
+
16
+ // The published `@verdaccio/e2e-ui@2.4.0` change-password suite ends its
17
+ // happy-path test on `/-/web/success` with a valid JWT still in
18
+ // localStorage. Its `after()` hook then does `cy.visit('/')` + `cy.login`
19
+ // to restore the original password, but the home page renders the
20
+ // logged-in menu (no `header--button-login`) so `cy.login` times out.
21
+ //
22
+ // Mocha runs outer `afterEach` hooks *before* inner `after` hooks, so
23
+ // dropping the session here clears the way for the suite's restore step
24
+ // to find the Login button. Remove this block once the e2e-ui release
25
+ // that ships the equivalent cleanup inside the suite lands in
26
+ // `package.json`.
27
+ afterEach(() => {
28
+ cy.clearLocalStorage();
29
+ cy.clearCookies();
30
+ });
31
+
32
+ changePasswordTests(config);
@@ -0,0 +1 @@
1
+ import '@verdaccio/e2e-ui/commands';
@@ -0,0 +1,21 @@
1
+ import { defineConfig } from 'cypress';
2
+
3
+ import { setupVerdaccioTasks } from '@verdaccio/e2e-ui';
4
+
5
+ const registryUrl = process.env.VERDACCIO_URL || 'http://localhost:4873';
6
+
7
+ export default defineConfig({
8
+ e2e: {
9
+ baseUrl: registryUrl,
10
+ specPattern: 'cypress/e2e/**/*.cy.ts',
11
+ supportFile: 'cypress/support/e2e.ts',
12
+ setupNodeEvents(on) {
13
+ setupVerdaccioTasks(on, { registryUrl });
14
+ },
15
+ },
16
+ video: false,
17
+ screenshotOnRunFailure: false,
18
+ env: {
19
+ VERDACCIO_URL: registryUrl,
20
+ },
21
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verdaccio",
3
- "version": "6.4.0",
3
+ "version": "6.5.1",
4
4
  "description": "A lightweight private npm proxy registry",
5
5
  "author": {
6
6
  "name": "Verdaccio Maintainers",
@@ -20,22 +20,22 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@cypress/request": "3.0.10",
23
- "@verdaccio/auth": "8.0.0-next-8.36",
24
- "@verdaccio/config": "8.0.0-next-8.36",
25
- "@verdaccio/core": "8.0.0-next-8.36",
26
- "@verdaccio/hooks": "8.0.0-next-8.36",
27
- "@verdaccio/loaders": "8.0.0-next-8.26",
23
+ "@verdaccio/auth": "8.0.0-next-8.37",
24
+ "@verdaccio/config": "8.0.0-next-8.37",
25
+ "@verdaccio/core": "8.0.0-next-8.37",
26
+ "@verdaccio/hooks": "8.0.0-next-8.37",
27
+ "@verdaccio/loaders": "8.0.0-next-8.27",
28
28
  "@verdaccio/local-storage-legacy": "11.1.1",
29
- "@verdaccio/logger": "8.0.0-next-8.36",
30
- "@verdaccio/middleware": "8.0.0-next-8.36",
31
- "@verdaccio/package-filter": "13.0.0-next-8.3",
29
+ "@verdaccio/logger": "8.0.0-next-8.37",
30
+ "@verdaccio/middleware": "8.0.0-next-8.37",
31
+ "@verdaccio/package-filter": "13.0.0-next-8.5",
32
32
  "@verdaccio/search-indexer": "8.0.0-next-8.6",
33
- "@verdaccio/signature": "8.0.0-next-8.28",
33
+ "@verdaccio/signature": "8.0.0-next-8.29",
34
34
  "@verdaccio/streams": "10.2.1",
35
- "@verdaccio/tarball": "13.0.0-next-8.36",
36
- "@verdaccio/ui-theme": "8.0.0-next-8.30",
37
- "@verdaccio/url": "13.0.0-next-8.36",
38
- "@verdaccio/utils": "8.1.0-next-8.36",
35
+ "@verdaccio/tarball": "13.0.0-next-8.37",
36
+ "@verdaccio/ui-theme": "9.0.0-next-9.10",
37
+ "@verdaccio/url": "13.0.0-next-8.37",
38
+ "@verdaccio/utils": "8.1.0-next-8.37",
39
39
  "JSONStream": "1.3.5",
40
40
  "async": "3.2.6",
41
41
  "clipanion": "4.0.0-rc.4",
@@ -48,8 +48,8 @@
48
48
  "lru-cache": "7.18.3",
49
49
  "mime": "3.0.0",
50
50
  "semver": "7.7.4",
51
- "verdaccio-audit": "13.0.0-next-8.36",
52
- "verdaccio-htpasswd": "13.0.0-next-8.36"
51
+ "verdaccio-audit": "13.0.0-next-8.37",
52
+ "verdaccio-htpasswd": "13.0.0-next-8.37"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@babel/cli": "7.28.6",
@@ -74,14 +74,16 @@
74
74
  "@types/semver": "7.7.1",
75
75
  "@types/supertest": "6.0.3",
76
76
  "@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
77
- "@verdaccio/e2e-cli": "2.3.0",
77
+ "@verdaccio/e2e-cli": "2.4.0",
78
+ "@verdaccio/e2e-ui": "2.4.0",
78
79
  "@verdaccio/eslint-config": "13.0.0",
79
- "@verdaccio/test-helper": "4.0.0-next-8.13",
80
- "@verdaccio/types": "13.0.0-next-8.11",
80
+ "@verdaccio/test-helper": "4.0.0-next-8.21",
81
+ "@verdaccio/types": "13.0.0-next-8.12",
81
82
  "@vitest/coverage-v8": "3.2.4",
82
83
  "@vitest/eslint-plugin": "1.6.9",
83
84
  "babel-plugin-transform-inline-environment-variables": "0.4.4",
84
85
  "cross-env": "10.1.0",
86
+ "cypress": "15",
85
87
  "eslint": "10.0.3",
86
88
  "eslint-plugin-cypress": "6.1.0",
87
89
  "eslint-plugin-jest": "29.15.0",
@@ -134,7 +136,12 @@
134
136
  "code:types": "tsc --emitDeclarationOnly -p tsconfig.json",
135
137
  "code:docker-build": "yarn babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\"",
136
138
  "docker": "docker build -t verdaccio/verdaccio:local . --no-cache",
137
- "docker:run": "docker run -it --rm -p 4873:4873 -e \"DEBUG=verdaccio*\" verdaccio/verdaccio:local"
139
+ "docker:run": "docker run -it --rm -p 4873:4873 -e \"DEBUG=verdaccio*\" verdaccio/verdaccio:local",
140
+ "e2e:ui:start": "node bin/verdaccio --config ./scripts/e2e-ui-config.yaml",
141
+ "e2e:ui:run": "cypress run",
142
+ "e2e:ui:open": "cypress open",
143
+ "e2e:ui:local": "./scripts/e2e-ui-local.sh",
144
+ "e2e:ui:local:open": "./scripts/e2e-ui-local.sh --open"
138
145
  },
139
146
  "engines": {
140
147
  "node": ">=18"