@verdaccio/api 8.1.0-next-8.30 → 8.1.0-next-8.32
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.
- package/build/dist-tags.d.ts +4 -4
- package/build/dist-tags.js +109 -53
- package/build/dist-tags.js.map +1 -1
- package/build/index.d.ts +4 -4
- package/build/index.js +23 -22
- package/build/index.js.map +1 -1
- package/build/package.d.ts +3 -3
- package/build/package.js +108 -85
- package/build/package.js.map +1 -1
- package/build/ping.d.ts +1 -1
- package/build/ping.js +1 -1
- package/build/ping.js.map +1 -1
- package/build/publish.d.ts +15 -15
- package/build/publish.js +148 -105
- package/build/publish.js.map +1 -1
- package/build/search.d.ts +1 -1
- package/build/search.js +1 -1
- package/build/search.js.map +1 -1
- package/build/stars.d.ts +2 -2
- package/build/stars.js +50 -20
- package/build/stars.js.map +1 -1
- package/build/user.d.ts +3 -4
- package/build/user.js +122 -64
- package/build/user.js.map +1 -1
- package/build/v1/login.d.ts +4 -4
- package/build/v1/login.js +229 -121
- package/build/v1/login.js.map +1 -1
- package/build/v1/profile.d.ts +3 -3
- package/build/v1/profile.js +18 -21
- package/build/v1/profile.js.map +1 -1
- package/build/v1/search.d.ts +3 -3
- package/build/v1/search.js +79 -46
- package/build/v1/search.js.map +1 -1
- package/build/v1/token.d.ts +4 -4
- package/build/v1/token.js +183 -126
- package/build/v1/token.js.map +1 -1
- package/build/whoami.d.ts +1 -1
- package/build/whoami.js +6 -5
- package/build/whoami.js.map +1 -1
- package/package.json +9 -9
package/build/v1/search.js
CHANGED
|
@@ -3,13 +3,23 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports["default"] = _default;
|
|
7
7
|
var _debug = _interopRequireDefault(require("debug"));
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
var _core = require("@verdaccio/core");
|
|
10
10
|
var _middleware = require("@verdaccio/middleware");
|
|
11
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
12
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
13
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
14
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
15
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
17
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
18
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
19
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
20
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
21
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
22
|
+
var debug = (0, _debug["default"])('verdaccio:api:search');
|
|
13
23
|
|
|
14
24
|
/**
|
|
15
25
|
* Endpoint for npm search v1
|
|
@@ -19,9 +29,10 @@ const debug = (0, _debug.default)('verdaccio:api:search');
|
|
|
19
29
|
*/
|
|
20
30
|
function _default(route, auth, storage, logger) {
|
|
21
31
|
function checkAccess(pkg, auth, remoteUser) {
|
|
22
|
-
return new Promise((resolve, reject)
|
|
32
|
+
return new Promise(function (resolve, reject) {
|
|
33
|
+
var _pkg$package;
|
|
23
34
|
auth.allow_access({
|
|
24
|
-
packageName: pkg
|
|
35
|
+
packageName: pkg === null || pkg === void 0 || (_pkg$package = pkg["package"]) === null || _pkg$package === void 0 ? void 0 : _pkg$package.name
|
|
25
36
|
}, remoteUser, function (err, allowed) {
|
|
26
37
|
if (err) {
|
|
27
38
|
if (err.status && String(err.status).match(/^4\d\d$/)) {
|
|
@@ -38,46 +49,68 @@ function _default(route, auth, storage, logger) {
|
|
|
38
49
|
});
|
|
39
50
|
});
|
|
40
51
|
}
|
|
41
|
-
route.get(_middleware.SEARCH_API_ENDPOINTS.search,
|
|
42
|
-
|
|
43
|
-
query,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
52
|
+
route.get(_middleware.SEARCH_API_ENDPOINTS.search, /*#__PURE__*/function () {
|
|
53
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req, res, next) {
|
|
54
|
+
var query, url, _map, _map2, size, from, data, abort, checkAccessPromises, _final, response, _t;
|
|
55
|
+
return _regenerator().w(function (_context) {
|
|
56
|
+
while (1) switch (_context.p = _context.n) {
|
|
57
|
+
case 0:
|
|
58
|
+
query = req.query, url = req.url;
|
|
59
|
+
_map = ['size', 'from'].map(function (k) {
|
|
60
|
+
return query[k];
|
|
61
|
+
}), _map2 = _slicedToArray(_map, 2), size = _map2[0], from = _map2[1];
|
|
62
|
+
abort = new AbortController();
|
|
63
|
+
req.socket.on('close', function () {
|
|
64
|
+
debug('search web aborted');
|
|
65
|
+
abort.abort();
|
|
66
|
+
});
|
|
67
|
+
size = parseInt(size, 10) || 20;
|
|
68
|
+
from = parseInt(from, 10) || 0;
|
|
69
|
+
_context.p = 1;
|
|
70
|
+
debug('storage search initiated');
|
|
71
|
+
_context.n = 2;
|
|
72
|
+
return storage.search({
|
|
73
|
+
query: query,
|
|
74
|
+
url: url,
|
|
75
|
+
abort: abort
|
|
76
|
+
});
|
|
77
|
+
case 2:
|
|
78
|
+
data = _context.v;
|
|
79
|
+
debug('storage items tota: %o', data.length);
|
|
80
|
+
_context.n = 3;
|
|
81
|
+
return Promise.all(data.map(function (pkgItem) {
|
|
82
|
+
return checkAccess(pkgItem, auth, req.remote_user);
|
|
83
|
+
}));
|
|
84
|
+
case 3:
|
|
85
|
+
checkAccessPromises = _context.v;
|
|
86
|
+
_final = checkAccessPromises.filter(function (i) {
|
|
87
|
+
return !_lodash["default"].isNull(i);
|
|
88
|
+
}).slice(from, size);
|
|
89
|
+
logger.debug("search results ".concat(_final === null || _final === void 0 ? void 0 : _final.length));
|
|
90
|
+
response = {
|
|
91
|
+
objects: _final,
|
|
92
|
+
total: _final.length,
|
|
93
|
+
time: new Date().toUTCString()
|
|
94
|
+
};
|
|
95
|
+
res.status(_core.HTTP_STATUS.OK).json(response);
|
|
96
|
+
_context.n = 5;
|
|
97
|
+
break;
|
|
98
|
+
case 4:
|
|
99
|
+
_context.p = 4;
|
|
100
|
+
_t = _context.v;
|
|
101
|
+
logger.error({
|
|
102
|
+
error: _t
|
|
103
|
+
}, 'search endpoint has failed @{error.message}');
|
|
104
|
+
next(next);
|
|
105
|
+
return _context.a(2);
|
|
106
|
+
case 5:
|
|
107
|
+
return _context.a(2);
|
|
108
|
+
}
|
|
109
|
+
}, _callee, null, [[1, 4]]);
|
|
110
|
+
}));
|
|
111
|
+
return function (_x, _x2, _x3) {
|
|
112
|
+
return _ref.apply(this, arguments);
|
|
113
|
+
};
|
|
114
|
+
}());
|
|
82
115
|
}
|
|
83
116
|
//# sourceMappingURL=search.js.map
|
package/build/v1/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","names":["_debug","_interopRequireDefault","require","_lodash","_core","_middleware","e","__esModule","default","debug","buildDebug","_default","route","auth","storage","logger","checkAccess","pkg","remoteUser","Promise","resolve","reject","allow_access","packageName","package","name","err","allowed","status","String","match","get","SEARCH_API_ENDPOINTS","search","req","res","next","query","url","size","from","map","k","data","abort","AbortController","socket","on","parseInt","length","checkAccessPromises","all","pkgItem","remote_user","final","filter","i","_","isNull","slice","response","objects","total","time","Date","toUTCString","HTTP_STATUS","OK","json","error"],"sources":["../../src/v1/search.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { Auth } from '@verdaccio/auth';\nimport { HTTP_STATUS, searchUtils } from '@verdaccio/core';\nimport { SEARCH_API_ENDPOINTS } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Manifest } from '@verdaccio/types';\nimport { Logger } from '@verdaccio/types';\n\nconst debug = buildDebug('verdaccio:api:search');\n\n/**\n * Endpoint for npm search v1\n * Empty value\n * - {\"objects\":[],\"total\":0,\"time\":\"Sun Jul 25 2021 14:09:11 GMT+0000 (Coordinated Universal Time)\"}\n * req: 'GET /-/v1/search?text=react&size=20&frpom=0&quality=0.65&popularity=0.98&maintenance=0.5'\n */\nexport default function (route, auth: Auth, storage: Storage, logger: Logger): void {\n function checkAccess(pkg: any, auth: any, remoteUser): Promise<Manifest | null> {\n return new Promise((resolve, reject) => {\n auth.allow_access({ packageName: pkg?.package?.name }, remoteUser, function (err, allowed) {\n if (err) {\n if (err.status && String(err.status).match(/^4\\d\\d$/)) {\n // auth plugin returns 4xx user error,\n // that's equivalent of !allowed basically\n allowed = false;\n return resolve(null);\n } else {\n reject(err);\n }\n } else {\n return resolve(allowed ? pkg : null);\n }\n });\n });\n }\n\n route.get(SEARCH_API_ENDPOINTS.search, async (req, res, next) => {\n const { query, url } = req;\n let [size, from] = ['size', 'from'].map((k) => query[k]);\n let data;\n const abort = new AbortController();\n\n req.socket.on('close', function () {\n debug('search web aborted');\n abort.abort();\n });\n\n size = parseInt(size, 10) || 20;\n from = parseInt(from, 10) || 0;\n\n try {\n debug('storage search initiated');\n data = await storage.search({\n query,\n url,\n abort,\n });\n debug('storage items tota: %o', data.length);\n const checkAccessPromises: searchUtils.SearchItemPkg[] = await Promise.all(\n data.map((pkgItem) => {\n return checkAccess(pkgItem, auth, req.remote_user);\n })\n );\n\n const final: searchUtils.SearchItemPkg[] = checkAccessPromises\n .filter((i) => !_.isNull(i))\n .slice(from, size);\n logger.debug(`search results ${final?.length}`);\n\n const response: searchUtils.SearchResults = {\n objects: final,\n total: final.length,\n time: new Date().toUTCString(),\n };\n\n res.status(HTTP_STATUS.OK).json(response);\n } catch (error) {\n logger.error({ error }, 'search endpoint has failed @{error.message}');\n next(next);\n return;\n }\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"search.js","names":["_debug","_interopRequireDefault","require","_lodash","_core","_middleware","e","__esModule","_regenerator","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","next","push","isArray","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","debug","buildDebug","_default","route","auth","storage","logger","checkAccess","pkg","remoteUser","reject","_pkg$package","allow_access","packageName","err","allowed","status","String","match","get","SEARCH_API_ENDPOINTS","search","_ref","_callee","req","res","query","url","_map","_map2","size","data","abort","checkAccessPromises","_final","response","_t","_context","map","k","AbortController","socket","on","parseInt","all","pkgItem","remote_user","final","filter","_","isNull","concat","objects","total","time","Date","toUTCString","HTTP_STATUS","OK","json","error","_x","_x2","_x3"],"sources":["../../src/v1/search.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport type { Auth } from '@verdaccio/auth';\nimport type { searchUtils } from '@verdaccio/core';\nimport { HTTP_STATUS } from '@verdaccio/core';\nimport { SEARCH_API_ENDPOINTS } from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport type { Logger, Manifest } from '@verdaccio/types';\n\nconst debug = buildDebug('verdaccio:api:search');\n\n/**\n * Endpoint for npm search v1\n * Empty value\n * - {\"objects\":[],\"total\":0,\"time\":\"Sun Jul 25 2021 14:09:11 GMT+0000 (Coordinated Universal Time)\"}\n * req: 'GET /-/v1/search?text=react&size=20&frpom=0&quality=0.65&popularity=0.98&maintenance=0.5'\n */\nexport default function (route, auth: Auth, storage: Storage, logger: Logger): void {\n function checkAccess(pkg: any, auth: any, remoteUser): Promise<Manifest | null> {\n return new Promise((resolve, reject) => {\n auth.allow_access({ packageName: pkg?.package?.name }, remoteUser, function (err, allowed) {\n if (err) {\n if (err.status && String(err.status).match(/^4\\d\\d$/)) {\n // auth plugin returns 4xx user error,\n // that's equivalent of !allowed basically\n allowed = false;\n return resolve(null);\n } else {\n reject(err);\n }\n } else {\n return resolve(allowed ? pkg : null);\n }\n });\n });\n }\n\n route.get(SEARCH_API_ENDPOINTS.search, async (req, res, next) => {\n const { query, url } = req;\n let [size, from] = ['size', 'from'].map((k) => query[k]);\n let data;\n const abort = new AbortController();\n\n req.socket.on('close', function () {\n debug('search web aborted');\n abort.abort();\n });\n\n size = parseInt(size, 10) || 20;\n from = parseInt(from, 10) || 0;\n\n try {\n debug('storage search initiated');\n data = await storage.search({\n query,\n url,\n abort,\n });\n debug('storage items tota: %o', data.length);\n const checkAccessPromises: searchUtils.SearchItemPkg[] = await Promise.all(\n data.map((pkgItem) => {\n return checkAccess(pkgItem, auth, req.remote_user);\n })\n );\n\n const final: searchUtils.SearchItemPkg[] = checkAccessPromises\n .filter((i) => !_.isNull(i))\n .slice(from, size);\n logger.debug(`search results ${final?.length}`);\n\n const response: searchUtils.SearchResults = {\n objects: final,\n total: final.length,\n time: new Date().toUTCString(),\n };\n\n res.status(HTTP_STATUS.OK).json(response);\n } catch (error) {\n logger.error({ error }, 'search endpoint has failed @{error.message}');\n next(next);\n return;\n }\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
package/build/v1/token.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Router } from 'express';
|
|
2
|
-
import { Auth } from '@verdaccio/auth';
|
|
3
|
-
import { Storage } from '@verdaccio/store';
|
|
4
|
-
import { Config, Logger, Token } from '@verdaccio/types';
|
|
1
|
+
import type { Router } from 'express';
|
|
2
|
+
import type { Auth } from '@verdaccio/auth';
|
|
3
|
+
import type { Storage } from '@verdaccio/store';
|
|
4
|
+
import type { Config, Logger, Token } from '@verdaccio/types';
|
|
5
5
|
export type NormalizeToken = Token & {
|
|
6
6
|
cidr_whitelist: string[];
|
|
7
7
|
created: string;
|
package/build/v1/token.js
CHANGED
|
@@ -3,146 +3,203 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports["default"] = _default;
|
|
7
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
8
|
var _auth = require("@verdaccio/auth");
|
|
9
9
|
var _core = require("@verdaccio/core");
|
|
10
10
|
var _middleware = require("@verdaccio/middleware");
|
|
11
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
12
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
13
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
14
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
15
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
16
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
17
|
+
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; }
|
|
18
|
+
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; }
|
|
19
|
+
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; }
|
|
20
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
21
|
+
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); }
|
|
12
22
|
// npm expects "cidr_whitelist" for token list
|
|
13
23
|
function normalizeToken(token) {
|
|
14
|
-
return {
|
|
15
|
-
...token,
|
|
24
|
+
return _objectSpread(_objectSpread({}, token), {}, {
|
|
16
25
|
cidr_whitelist: token.cidr || [],
|
|
17
26
|
created: new Date(token.created).toISOString()
|
|
18
|
-
};
|
|
27
|
+
});
|
|
19
28
|
}
|
|
20
29
|
|
|
21
30
|
// https://github.com/npm/npm-profile/blob/latest/lib/index.js
|
|
22
31
|
function _default(route, auth, storage, config, logger) {
|
|
23
|
-
route.get(_middleware.TOKEN_API_ENDPOINTS.get_tokens, (0, _middleware.rateLimit)(config
|
|
24
|
-
|
|
25
|
-
name
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (!_lodash.default.isBoolean(readonly) || !_lodash.default.isArray(cidr_whitelist)) {
|
|
62
|
-
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.BAD_DATA, _core.SUPPORT_ERRORS.PARAMETERS_NOT_VALID));
|
|
63
|
-
}
|
|
64
|
-
auth.authenticate(name, password, async (err, user) => {
|
|
65
|
-
if (err) {
|
|
66
|
-
const errorCode = err.message ? _core.HTTP_STATUS.UNAUTHORIZED : _core.HTTP_STATUS.INTERNAL_ERROR;
|
|
67
|
-
return next(_core.errorUtils.getCode(errorCode, err.message));
|
|
68
|
-
}
|
|
69
|
-
req.remote_user = user;
|
|
70
|
-
if (!_lodash.default.isFunction(storage.saveToken)) {
|
|
71
|
-
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.NOT_IMPLEMENTED, _core.SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT));
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
const token = await (0, _auth.getApiToken)(auth, config, user, password);
|
|
75
|
-
if (!token) {
|
|
76
|
-
throw _core.errorUtils.getInternalError();
|
|
32
|
+
route.get(_middleware.TOKEN_API_ENDPOINTS.get_tokens, (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), /*#__PURE__*/function () {
|
|
33
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req, res, next) {
|
|
34
|
+
var name, tokens, totalTokens, _t;
|
|
35
|
+
return _regenerator().w(function (_context) {
|
|
36
|
+
while (1) switch (_context.p = _context.n) {
|
|
37
|
+
case 0:
|
|
38
|
+
name = req.remote_user.name;
|
|
39
|
+
if (!(_lodash["default"].isNil(name) === false)) {
|
|
40
|
+
_context.n = 4;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
_context.p = 1;
|
|
44
|
+
_context.n = 2;
|
|
45
|
+
return storage.readTokens({
|
|
46
|
+
user: name
|
|
47
|
+
});
|
|
48
|
+
case 2:
|
|
49
|
+
tokens = _context.v;
|
|
50
|
+
totalTokens = tokens.length;
|
|
51
|
+
logger.debug({
|
|
52
|
+
totalTokens: totalTokens
|
|
53
|
+
}, 'token list retrieved: @{totalTokens}');
|
|
54
|
+
res.status(_core.HTTP_STATUS.OK);
|
|
55
|
+
return _context.a(2, next({
|
|
56
|
+
objects: tokens.map(normalizeToken),
|
|
57
|
+
urls: {
|
|
58
|
+
next: '' // TODO: pagination?
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
case 3:
|
|
62
|
+
_context.p = 3;
|
|
63
|
+
_t = _context.v;
|
|
64
|
+
logger.error({
|
|
65
|
+
error: _t.msg
|
|
66
|
+
}, 'token list has failed: @{error}');
|
|
67
|
+
return _context.a(2, next(_core.errorUtils.getCode(_core.HTTP_STATUS.INTERNAL_ERROR, _t.message)));
|
|
68
|
+
case 4:
|
|
69
|
+
return _context.a(2, next(_core.errorUtils.getUnauthorized()));
|
|
77
70
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
cidr: cidr_whitelist,
|
|
93
|
-
readonly,
|
|
94
|
-
created
|
|
95
|
-
};
|
|
96
|
-
await storage.saveToken(saveToken);
|
|
97
|
-
logger.debug({
|
|
98
|
-
key,
|
|
99
|
-
name
|
|
100
|
-
}, 'token @{key} was created for user @{name}');
|
|
101
|
-
res.set(_core.HEADERS.CACHE_CONTROL, 'no-cache, no-store');
|
|
102
|
-
return next(normalizeToken({
|
|
103
|
-
token,
|
|
104
|
-
user: name,
|
|
105
|
-
key: saveToken.key,
|
|
106
|
-
cidr: cidr_whitelist,
|
|
107
|
-
readonly,
|
|
108
|
-
created: saveToken.created
|
|
109
|
-
}));
|
|
110
|
-
} catch (error) {
|
|
111
|
-
logger.error({
|
|
112
|
-
error: error.msg
|
|
113
|
-
}, 'token creation has failed: @{error}');
|
|
114
|
-
return next(_core.errorUtils.getInternalError(error.message));
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
route.delete(_middleware.TOKEN_API_ENDPOINTS.delete_token, (0, _middleware.rateLimit)(config?.userRateLimit), async (req, res, next) => {
|
|
119
|
-
const {
|
|
120
|
-
params: {
|
|
121
|
-
tokenKey
|
|
122
|
-
}
|
|
123
|
-
} = req;
|
|
124
|
-
const {
|
|
125
|
-
name
|
|
126
|
-
} = req.remote_user;
|
|
127
|
-
if (_lodash.default.isNil(name) === false) {
|
|
128
|
-
logger.debug({
|
|
129
|
-
name
|
|
130
|
-
}, '@{name} has requested remove a token');
|
|
131
|
-
try {
|
|
132
|
-
await storage.deleteToken(name, tokenKey);
|
|
133
|
-
logger.info({
|
|
134
|
-
tokenKey,
|
|
135
|
-
name
|
|
136
|
-
}, 'token id @{tokenKey} was revoked for user @{name}');
|
|
137
|
-
return next({});
|
|
138
|
-
} catch (error) {
|
|
139
|
-
logger.error({
|
|
140
|
-
error: error.msg
|
|
141
|
-
}, 'token creation has failed: @{error}');
|
|
142
|
-
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.INTERNAL_ERROR, error.message));
|
|
143
|
-
}
|
|
71
|
+
}, _callee, null, [[1, 3]]);
|
|
72
|
+
}));
|
|
73
|
+
return function (_x, _x2, _x3) {
|
|
74
|
+
return _ref.apply(this, arguments);
|
|
75
|
+
};
|
|
76
|
+
}());
|
|
77
|
+
route.post(_middleware.TOKEN_API_ENDPOINTS.get_tokens, (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
|
|
78
|
+
var _req$body = req.body,
|
|
79
|
+
password = _req$body.password,
|
|
80
|
+
readonly = _req$body.readonly,
|
|
81
|
+
cidr_whitelist = _req$body.cidr_whitelist;
|
|
82
|
+
var name = req.remote_user.name;
|
|
83
|
+
if (!_lodash["default"].isBoolean(readonly) || !_lodash["default"].isArray(cidr_whitelist)) {
|
|
84
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.BAD_DATA, _core.SUPPORT_ERRORS.PARAMETERS_NOT_VALID));
|
|
144
85
|
}
|
|
145
|
-
|
|
86
|
+
auth.authenticate(name, password, /*#__PURE__*/function () {
|
|
87
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(err, user) {
|
|
88
|
+
var errorCode, token, key, maskedToken, created, saveToken, _t2;
|
|
89
|
+
return _regenerator().w(function (_context2) {
|
|
90
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
91
|
+
case 0:
|
|
92
|
+
if (!err) {
|
|
93
|
+
_context2.n = 1;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
errorCode = err.message ? _core.HTTP_STATUS.UNAUTHORIZED : _core.HTTP_STATUS.INTERNAL_ERROR;
|
|
97
|
+
return _context2.a(2, next(_core.errorUtils.getCode(errorCode, err.message)));
|
|
98
|
+
case 1:
|
|
99
|
+
req.remote_user = user;
|
|
100
|
+
if (_lodash["default"].isFunction(storage.saveToken)) {
|
|
101
|
+
_context2.n = 2;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
return _context2.a(2, next(_core.errorUtils.getCode(_core.HTTP_STATUS.NOT_IMPLEMENTED, _core.SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT)));
|
|
105
|
+
case 2:
|
|
106
|
+
_context2.p = 2;
|
|
107
|
+
_context2.n = 3;
|
|
108
|
+
return (0, _auth.getApiToken)(auth, config, user, password);
|
|
109
|
+
case 3:
|
|
110
|
+
token = _context2.v;
|
|
111
|
+
if (token) {
|
|
112
|
+
_context2.n = 4;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
throw _core.errorUtils.getInternalError();
|
|
116
|
+
case 4:
|
|
117
|
+
key = _core.cryptoUtils.stringToMD5(token); // TODO: use a utility here
|
|
118
|
+
maskedToken = _core.cryptoUtils.mask(token, 5);
|
|
119
|
+
created = new Date().getTime();
|
|
120
|
+
/**
|
|
121
|
+
* cidr_whitelist: is not being used, we pass it through
|
|
122
|
+
* token: we do not store the real token (it is generated once and retrieved
|
|
123
|
+
* to the user), just a mask of it.
|
|
124
|
+
*/
|
|
125
|
+
saveToken = {
|
|
126
|
+
user: name,
|
|
127
|
+
token: maskedToken,
|
|
128
|
+
key: key,
|
|
129
|
+
cidr: cidr_whitelist,
|
|
130
|
+
readonly: readonly,
|
|
131
|
+
created: created
|
|
132
|
+
};
|
|
133
|
+
_context2.n = 5;
|
|
134
|
+
return storage.saveToken(saveToken);
|
|
135
|
+
case 5:
|
|
136
|
+
logger.debug({
|
|
137
|
+
key: key,
|
|
138
|
+
name: name
|
|
139
|
+
}, 'token @{key} was created for user @{name}');
|
|
140
|
+
res.set(_core.HEADERS.CACHE_CONTROL, 'no-cache, no-store');
|
|
141
|
+
return _context2.a(2, next(normalizeToken({
|
|
142
|
+
token: token,
|
|
143
|
+
user: name,
|
|
144
|
+
key: saveToken.key,
|
|
145
|
+
cidr: cidr_whitelist,
|
|
146
|
+
readonly: readonly,
|
|
147
|
+
created: saveToken.created
|
|
148
|
+
})));
|
|
149
|
+
case 6:
|
|
150
|
+
_context2.p = 6;
|
|
151
|
+
_t2 = _context2.v;
|
|
152
|
+
logger.error({
|
|
153
|
+
error: _t2.msg
|
|
154
|
+
}, 'token creation has failed: @{error}');
|
|
155
|
+
return _context2.a(2, next(_core.errorUtils.getInternalError(_t2.message)));
|
|
156
|
+
}
|
|
157
|
+
}, _callee2, null, [[2, 6]]);
|
|
158
|
+
}));
|
|
159
|
+
return function (_x4, _x5) {
|
|
160
|
+
return _ref2.apply(this, arguments);
|
|
161
|
+
};
|
|
162
|
+
}());
|
|
146
163
|
});
|
|
164
|
+
route["delete"](_middleware.TOKEN_API_ENDPOINTS.delete_token, (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), /*#__PURE__*/function () {
|
|
165
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(req, res, next) {
|
|
166
|
+
var tokenKey, name, _t3;
|
|
167
|
+
return _regenerator().w(function (_context3) {
|
|
168
|
+
while (1) switch (_context3.p = _context3.n) {
|
|
169
|
+
case 0:
|
|
170
|
+
tokenKey = req.params.tokenKey;
|
|
171
|
+
name = req.remote_user.name;
|
|
172
|
+
if (!(_lodash["default"].isNil(name) === false)) {
|
|
173
|
+
_context3.n = 4;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
logger.debug({
|
|
177
|
+
name: name
|
|
178
|
+
}, '@{name} has requested remove a token');
|
|
179
|
+
_context3.p = 1;
|
|
180
|
+
_context3.n = 2;
|
|
181
|
+
return storage.deleteToken(name, tokenKey);
|
|
182
|
+
case 2:
|
|
183
|
+
logger.info({
|
|
184
|
+
tokenKey: tokenKey,
|
|
185
|
+
name: name
|
|
186
|
+
}, 'token id @{tokenKey} was revoked for user @{name}');
|
|
187
|
+
return _context3.a(2, next({}));
|
|
188
|
+
case 3:
|
|
189
|
+
_context3.p = 3;
|
|
190
|
+
_t3 = _context3.v;
|
|
191
|
+
logger.error({
|
|
192
|
+
error: _t3.msg
|
|
193
|
+
}, 'token creation has failed: @{error}');
|
|
194
|
+
return _context3.a(2, next(_core.errorUtils.getCode(_core.HTTP_STATUS.INTERNAL_ERROR, _t3.message)));
|
|
195
|
+
case 4:
|
|
196
|
+
return _context3.a(2, next(_core.errorUtils.getUnauthorized()));
|
|
197
|
+
}
|
|
198
|
+
}, _callee3, null, [[1, 3]]);
|
|
199
|
+
}));
|
|
200
|
+
return function (_x6, _x7, _x8) {
|
|
201
|
+
return _ref3.apply(this, arguments);
|
|
202
|
+
};
|
|
203
|
+
}());
|
|
147
204
|
}
|
|
148
205
|
//# sourceMappingURL=token.js.map
|