@verdaccio/web 9.0.0-next-9.3 → 9.0.0-next-9.4
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/_virtual/_rolldown/runtime.js +23 -0
- package/build/_virtual/_rolldown/runtime.mjs +7 -0
- package/build/api/index.d.ts +1 -1
- package/build/api/index.js +26 -37
- package/build/api/index.js.map +1 -1
- package/build/api/index.mjs +27 -0
- package/build/api/index.mjs.map +1 -0
- package/build/api/package.d.ts +3 -3
- package/build/api/package.js +73 -200
- package/build/api/package.js.map +1 -1
- package/build/api/package.mjs +74 -0
- package/build/api/package.mjs.map +1 -0
- package/build/api/readme.d.ts +2 -2
- package/build/api/readme.js +64 -122
- package/build/api/readme.js.map +1 -1
- package/build/api/readme.mjs +67 -0
- package/build/api/readme.mjs.map +1 -0
- package/build/api/search.d.ts +2 -2
- package/build/api/search.js +57 -99
- package/build/api/search.js.map +1 -1
- package/build/api/search.mjs +59 -0
- package/build/api/search.mjs.map +1 -0
- package/build/api/sidebar.d.ts +3 -3
- package/build/api/sidebar.js +56 -109
- package/build/api/sidebar.js.map +1 -1
- package/build/api/sidebar.mjs +57 -0
- package/build/api/sidebar.mjs.map +1 -0
- package/build/api/user.d.ts +2 -2
- package/build/api/user.js +97 -212
- package/build/api/user.js.map +1 -1
- package/build/api/user.mjs +97 -0
- package/build/api/user.mjs.map +1 -0
- package/build/author-utils.d.ts +1 -1
- package/build/author-utils.js +109 -160
- package/build/author-utils.js.map +1 -1
- package/build/author-utils.mjs +117 -0
- package/build/author-utils.mjs.map +1 -0
- package/build/index.js +17 -47
- package/build/index.mjs +4 -0
- package/build/middleware.d.ts +1 -1
- package/build/middleware.js +49 -90
- package/build/middleware.js.map +1 -1
- package/build/middleware.mjs +48 -0
- package/build/middleware.mjs.map +1 -0
- package/build/web-utils.d.ts +1 -1
- package/build/web-utils.js +24 -31
- package/build/web-utils.js.map +1 -1
- package/build/web-utils.mjs +28 -0
- package/build/web-utils.mjs.map +1 -0
- package/package.json +28 -17
- package/build/index.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) {
|
|
3
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
4
|
+
throw Error("Calling `require` for \"" + x + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
|
|
5
|
+
});
|
|
6
|
+
//#endregion
|
|
7
|
+
export { __require };
|
package/build/api/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: (auth: any, storage: any, config: any) => import(
|
|
1
|
+
declare const _default: (auth: any, storage: any, config: any) => import('express-serve-static-core').Router;
|
|
2
2
|
export default _default;
|
package/build/api/index.js
CHANGED
|
@@ -1,39 +1,28 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var route = (0, _express.Router)(); /* eslint new-cap: 0 */
|
|
25
|
-
route.use(_middleware.WebUrlsNamespace.data, (0, _middleware.rateLimit)(_objectSpread({
|
|
26
|
-
windowMs: 2 * 60 * 1000,
|
|
27
|
-
// 2 minutes
|
|
28
|
-
max: 5000
|
|
29
|
-
}, config === null || config === void 0 || (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.rateLimit)));
|
|
30
|
-
route.use(_middleware.WebUrlsNamespace.data, (0, _package["default"])(storage, auth, config));
|
|
31
|
-
route.use(_middleware.WebUrlsNamespace.data, (0, _search["default"])(storage, auth));
|
|
32
|
-
route.use(_middleware.WebUrlsNamespace.data, (0, _sidebar["default"])(config, storage, auth));
|
|
33
|
-
route.use(_middleware.WebUrlsNamespace.data, (0, _readme["default"])(storage, auth));
|
|
34
|
-
if ((0, _webUtils.hasLogin)(config)) {
|
|
35
|
-
route.use(_middleware.WebUrlsNamespace.sec, (0, _user["default"])(auth, config, storage));
|
|
36
|
-
}
|
|
37
|
-
return route;
|
|
1
|
+
require("../_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_web_utils = require("../web-utils.js");
|
|
3
|
+
const require_package = require("./package.js");
|
|
4
|
+
const require_readme = require("./readme.js");
|
|
5
|
+
const require_search = require("./search.js");
|
|
6
|
+
const require_sidebar = require("./sidebar.js");
|
|
7
|
+
const require_user = require("./user.js");
|
|
8
|
+
let express = require("express");
|
|
9
|
+
let _verdaccio_middleware = require("@verdaccio/middleware");
|
|
10
|
+
//#region src/api/index.ts
|
|
11
|
+
var api_default = (auth, storage, config) => {
|
|
12
|
+
const route = (0, express.Router)();
|
|
13
|
+
route.use(_verdaccio_middleware.WebUrlsNamespace.data, (0, _verdaccio_middleware.rateLimit)({
|
|
14
|
+
windowMs: 120 * 1e3,
|
|
15
|
+
max: 5e3,
|
|
16
|
+
...config?.web?.rateLimit
|
|
17
|
+
}));
|
|
18
|
+
route.use(_verdaccio_middleware.WebUrlsNamespace.data, require_package.default(storage, auth, config));
|
|
19
|
+
route.use(_verdaccio_middleware.WebUrlsNamespace.data, require_search.default(storage, auth));
|
|
20
|
+
route.use(_verdaccio_middleware.WebUrlsNamespace.data, require_sidebar.default(config, storage, auth));
|
|
21
|
+
route.use(_verdaccio_middleware.WebUrlsNamespace.data, require_readme.default(storage, auth));
|
|
22
|
+
if (require_web_utils.hasLogin(config)) route.use(_verdaccio_middleware.WebUrlsNamespace.sec, require_user.default(auth, config, storage));
|
|
23
|
+
return route;
|
|
38
24
|
};
|
|
25
|
+
//#endregion
|
|
26
|
+
exports.default = api_default;
|
|
27
|
+
|
|
39
28
|
//# sourceMappingURL=index.js.map
|
package/build/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/api/index.ts"],"sourcesContent":["import { Router } from 'express';\n\nimport { WebUrlsNamespace, rateLimit } from '@verdaccio/middleware';\n\nimport { hasLogin } from '../web-utils';\nimport packageApi from './package';\nimport readme from './readme';\nimport search from './search';\nimport sidebar from './sidebar';\nimport user from './user';\n\nexport default (auth, storage, config) => {\n const route = Router(); /* eslint new-cap: 0 */\n route.use(\n WebUrlsNamespace.data,\n rateLimit({\n windowMs: 2 * 60 * 1000, // 2 minutes\n max: 5000, // limit each IP to 1000 requests per windowMs\n ...config?.web?.rateLimit,\n })\n );\n route.use(WebUrlsNamespace.data, packageApi(storage, auth, config));\n route.use(WebUrlsNamespace.data, search(storage, auth));\n route.use(WebUrlsNamespace.data, sidebar(config, storage, auth));\n route.use(WebUrlsNamespace.data, readme(storage, auth));\n if (hasLogin(config)) {\n route.use(WebUrlsNamespace.sec, user(auth, config, storage));\n }\n return route;\n};\n"],"mappings":";;;;;;;;;;AAWA,IAAA,eAAgB,MAAM,SAAS,WAAW;CACxC,MAAM,SAAA,GAAA,QAAA,SAAgB;AACtB,OAAM,IACJ,sBAAA,iBAAiB,OAAA,GAAA,sBAAA,WACP;EACR,UAAU,MAAS;EACnB,KAAK;EACL,GAAG,QAAQ,KAAK;EACjB,CAAC,CACH;AACD,OAAM,IAAI,sBAAA,iBAAiB,MAAM,gBAAA,QAAW,SAAS,MAAM,OAAO,CAAC;AACnE,OAAM,IAAI,sBAAA,iBAAiB,MAAM,eAAA,QAAO,SAAS,KAAK,CAAC;AACvD,OAAM,IAAI,sBAAA,iBAAiB,MAAM,gBAAA,QAAQ,QAAQ,SAAS,KAAK,CAAC;AAChE,OAAM,IAAI,sBAAA,iBAAiB,MAAM,eAAA,QAAO,SAAS,KAAK,CAAC;AACvD,KAAI,kBAAA,SAAS,OAAO,CAClB,OAAM,IAAI,sBAAA,iBAAiB,KAAK,aAAA,QAAK,MAAM,QAAQ,QAAQ,CAAC;AAE9D,QAAO"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { hasLogin } from "../web-utils.mjs";
|
|
2
|
+
import addPackageWebApi from "./package.mjs";
|
|
3
|
+
import addReadmeWebApi from "./readme.mjs";
|
|
4
|
+
import addSearchWebApi from "./search.mjs";
|
|
5
|
+
import addSidebarWebApi from "./sidebar.mjs";
|
|
6
|
+
import addUserAuthApi from "./user.mjs";
|
|
7
|
+
import { Router } from "express";
|
|
8
|
+
import { WebUrlsNamespace, rateLimit } from "@verdaccio/middleware";
|
|
9
|
+
//#region src/api/index.ts
|
|
10
|
+
var api_default = (auth, storage, config) => {
|
|
11
|
+
const route = Router();
|
|
12
|
+
route.use(WebUrlsNamespace.data, rateLimit({
|
|
13
|
+
windowMs: 120 * 1e3,
|
|
14
|
+
max: 5e3,
|
|
15
|
+
...config?.web?.rateLimit
|
|
16
|
+
}));
|
|
17
|
+
route.use(WebUrlsNamespace.data, addPackageWebApi(storage, auth, config));
|
|
18
|
+
route.use(WebUrlsNamespace.data, addSearchWebApi(storage, auth));
|
|
19
|
+
route.use(WebUrlsNamespace.data, addSidebarWebApi(config, storage, auth));
|
|
20
|
+
route.use(WebUrlsNamespace.data, addReadmeWebApi(storage, auth));
|
|
21
|
+
if (hasLogin(config)) route.use(WebUrlsNamespace.sec, addUserAuthApi(auth, config, storage));
|
|
22
|
+
return route;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { api_default as default };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/api/index.ts"],"sourcesContent":["import { Router } from 'express';\n\nimport { WebUrlsNamespace, rateLimit } from '@verdaccio/middleware';\n\nimport { hasLogin } from '../web-utils';\nimport packageApi from './package';\nimport readme from './readme';\nimport search from './search';\nimport sidebar from './sidebar';\nimport user from './user';\n\nexport default (auth, storage, config) => {\n const route = Router(); /* eslint new-cap: 0 */\n route.use(\n WebUrlsNamespace.data,\n rateLimit({\n windowMs: 2 * 60 * 1000, // 2 minutes\n max: 5000, // limit each IP to 1000 requests per windowMs\n ...config?.web?.rateLimit,\n })\n );\n route.use(WebUrlsNamespace.data, packageApi(storage, auth, config));\n route.use(WebUrlsNamespace.data, search(storage, auth));\n route.use(WebUrlsNamespace.data, sidebar(config, storage, auth));\n route.use(WebUrlsNamespace.data, readme(storage, auth));\n if (hasLogin(config)) {\n route.use(WebUrlsNamespace.sec, user(auth, config, storage));\n }\n return route;\n};\n"],"mappings":";;;;;;;;;AAWA,IAAA,eAAgB,MAAM,SAAS,WAAW;CACxC,MAAM,QAAQ,QAAQ;AACtB,OAAM,IACJ,iBAAiB,MACjB,UAAU;EACR,UAAU,MAAS;EACnB,KAAK;EACL,GAAG,QAAQ,KAAK;EACjB,CAAC,CACH;AACD,OAAM,IAAI,iBAAiB,MAAM,iBAAW,SAAS,MAAM,OAAO,CAAC;AACnE,OAAM,IAAI,iBAAiB,MAAM,gBAAO,SAAS,KAAK,CAAC;AACvD,OAAM,IAAI,iBAAiB,MAAM,iBAAQ,QAAQ,SAAS,KAAK,CAAC;AAChE,OAAM,IAAI,iBAAiB,MAAM,gBAAO,SAAS,KAAK,CAAC;AACvD,KAAI,SAAS,OAAO,CAClB,OAAM,IAAI,iBAAiB,KAAK,eAAK,MAAM,QAAQ,QAAQ,CAAC;AAE9D,QAAO"}
|
package/build/api/package.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import
|
|
2
|
+
import { Auth } from '@verdaccio/auth';
|
|
3
3
|
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '@verdaccio/middleware';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import { Storage } from '@verdaccio/store';
|
|
5
|
+
import { Config } from '@verdaccio/types';
|
|
6
6
|
export { $RequestExtend, $ResponseExtend, $NextFunctionVer };
|
|
7
7
|
declare function addPackageWebApi(storage: Storage, auth: Auth, config: Config): Router;
|
|
8
8
|
export default addPackageWebApi;
|
package/build/api/package.js
CHANGED
|
@@ -1,204 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return _middleware.$RequestExtend;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
Object.defineProperty(exports, "$ResponseExtend", {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function get() {
|
|
22
|
-
return _middleware.$ResponseExtend;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
exports["default"] = void 0;
|
|
26
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
27
|
-
var _express = require("express");
|
|
28
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
29
|
-
var _config = require("@verdaccio/config");
|
|
30
|
-
var _logger = require("@verdaccio/logger");
|
|
31
|
-
var _middleware = require("@verdaccio/middleware");
|
|
32
|
-
var _tarball = require("@verdaccio/tarball");
|
|
33
|
-
var _authorUtils = require("../author-utils");
|
|
34
|
-
var _webUtils = require("../web-utils");
|
|
35
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
36
|
-
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; }
|
|
37
|
-
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; }
|
|
38
|
-
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; }
|
|
39
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
40
|
-
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); }
|
|
41
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
42
|
-
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; } }
|
|
43
|
-
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; }
|
|
44
|
-
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 }; })(); }
|
|
45
|
-
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); }
|
|
46
|
-
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); }
|
|
47
|
-
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); }); }; }
|
|
48
|
-
// Was required by other packages
|
|
49
|
-
|
|
50
|
-
var getOrder = function getOrder() {
|
|
51
|
-
var order = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';
|
|
52
|
-
return order === 'asc';
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_web_utils = require("../web-utils.js");
|
|
3
|
+
const require_author_utils = require("../author-utils.js");
|
|
4
|
+
let express = require("express");
|
|
5
|
+
let lodash = require("lodash");
|
|
6
|
+
lodash = require_runtime.__toESM(lodash);
|
|
7
|
+
let _verdaccio_logger = require("@verdaccio/logger");
|
|
8
|
+
let _verdaccio_middleware = require("@verdaccio/middleware");
|
|
9
|
+
let debug = require("debug");
|
|
10
|
+
debug = require_runtime.__toESM(debug);
|
|
11
|
+
let _verdaccio_config = require("@verdaccio/config");
|
|
12
|
+
let _verdaccio_tarball = require("@verdaccio/tarball");
|
|
13
|
+
//#region src/api/package.ts
|
|
14
|
+
var getOrder = (order = "asc") => {
|
|
15
|
+
return order === "asc";
|
|
53
16
|
};
|
|
54
|
-
var debug = (0,
|
|
17
|
+
var debug$1 = (0, debug.default)("verdaccio:web:api:package");
|
|
55
18
|
function addPackageWebApi(storage, auth, config) {
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
pkg = _step.value;
|
|
113
|
-
pkgCopy = _objectSpread({}, pkg);
|
|
114
|
-
pkgCopy.author = (0, _authorUtils.formatAuthor)(pkg.author);
|
|
115
|
-
_context2.p = 3;
|
|
116
|
-
_context2.n = 4;
|
|
117
|
-
return checkAllow(pkg.name, req.remote_user);
|
|
118
|
-
case 4:
|
|
119
|
-
if (!_context2.v) {
|
|
120
|
-
_context2.n = 5;
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
if (config.web) {
|
|
124
|
-
// @ts-ignore
|
|
125
|
-
pkgCopy.author.avatar = (0, _authorUtils.generateGravatarUrl)(pkgCopy.author.email, config.web.gravatar);
|
|
126
|
-
}
|
|
127
|
-
// convert any remote dist to a local reference
|
|
128
|
-
// eg: if the dist points to npmjs, switch to localhost:4873/prefix/etc.tar.gz
|
|
129
|
-
if (!_lodash["default"].isNil(pkgCopy.dist) && !_lodash["default"].isNull(pkgCopy.dist.tarball)) {
|
|
130
|
-
pkgCopy.dist.tarball = (0, _tarball.getLocalRegistryTarballUri)(pkgCopy.dist.tarball, pkg.name, requestOptions, config === null || config === void 0 ? void 0 : config.url_prefix);
|
|
131
|
-
}
|
|
132
|
-
permissions.push(pkgCopy);
|
|
133
|
-
case 5:
|
|
134
|
-
_context2.n = 7;
|
|
135
|
-
break;
|
|
136
|
-
case 6:
|
|
137
|
-
_context2.p = 6;
|
|
138
|
-
_t2 = _context2.v;
|
|
139
|
-
debug('process packages error %o', _t2);
|
|
140
|
-
_logger.logger.error({
|
|
141
|
-
name: pkg.name,
|
|
142
|
-
error: _t2
|
|
143
|
-
}, 'permission process for @{name} has failed: @{error}');
|
|
144
|
-
throw _t2;
|
|
145
|
-
case 7:
|
|
146
|
-
_context2.n = 2;
|
|
147
|
-
break;
|
|
148
|
-
case 8:
|
|
149
|
-
_context2.n = 10;
|
|
150
|
-
break;
|
|
151
|
-
case 9:
|
|
152
|
-
_context2.p = 9;
|
|
153
|
-
_t3 = _context2.v;
|
|
154
|
-
_iterator.e(_t3);
|
|
155
|
-
case 10:
|
|
156
|
-
_context2.p = 10;
|
|
157
|
-
_iterator.f();
|
|
158
|
-
return _context2.f(10);
|
|
159
|
-
case 11:
|
|
160
|
-
debug('allowed %o packages', permissions.length);
|
|
161
|
-
return _context2.a(2, permissions);
|
|
162
|
-
}
|
|
163
|
-
}, _callee2, null, [[3, 6], [1, 9, 10, 11]]);
|
|
164
|
-
}));
|
|
165
|
-
return _processPackages.apply(this, arguments);
|
|
166
|
-
}
|
|
167
|
-
pkgRouter.get(_middleware.WebUrls.packages_all, /*#__PURE__*/function () {
|
|
168
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req, res, next) {
|
|
169
|
-
var _config$web, localPackages, order, pkgs, _t;
|
|
170
|
-
return _regenerator().w(function (_context) {
|
|
171
|
-
while (1) switch (_context.p = _context.n) {
|
|
172
|
-
case 0:
|
|
173
|
-
debug('hit package web api %o');
|
|
174
|
-
_context.p = 1;
|
|
175
|
-
_context.n = 2;
|
|
176
|
-
return storage.getLocalDatabase();
|
|
177
|
-
case 2:
|
|
178
|
-
localPackages = _context.v;
|
|
179
|
-
order = getOrder(config === null || config === void 0 || (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.sort_packages);
|
|
180
|
-
debug('order %o', order);
|
|
181
|
-
_context.n = 3;
|
|
182
|
-
return processPackages(localPackages, req);
|
|
183
|
-
case 3:
|
|
184
|
-
pkgs = _context.v;
|
|
185
|
-
next((0, _webUtils.sortByName)(pkgs, order));
|
|
186
|
-
_context.n = 5;
|
|
187
|
-
break;
|
|
188
|
-
case 4:
|
|
189
|
-
_context.p = 4;
|
|
190
|
-
_t = _context.v;
|
|
191
|
-
next(_t);
|
|
192
|
-
case 5:
|
|
193
|
-
return _context.a(2);
|
|
194
|
-
}
|
|
195
|
-
}, _callee, null, [[1, 4]]);
|
|
196
|
-
}));
|
|
197
|
-
return function (_x, _x2, _x3) {
|
|
198
|
-
return _ref.apply(this, arguments);
|
|
199
|
-
};
|
|
200
|
-
}());
|
|
201
|
-
return pkgRouter;
|
|
19
|
+
const isLoginEnabled = require_web_utils.hasLogin(config);
|
|
20
|
+
debug$1("is login enabled: %o", isLoginEnabled);
|
|
21
|
+
const pkgRouter = (0, express.Router)();
|
|
22
|
+
const anonymousRemoteUser = (0, _verdaccio_config.createAnonymousRemoteUser)();
|
|
23
|
+
debug$1("initialized package web api");
|
|
24
|
+
const checkAllow = (name, remoteUser) => new Promise((resolve, reject) => {
|
|
25
|
+
const remoteUserAccess = !isLoginEnabled ? anonymousRemoteUser : remoteUser;
|
|
26
|
+
try {
|
|
27
|
+
auth.allow_access({ packageName: name }, remoteUserAccess, (err, allowed) => {
|
|
28
|
+
if (err) resolve(false);
|
|
29
|
+
return resolve(allowed);
|
|
30
|
+
});
|
|
31
|
+
} catch (err) {
|
|
32
|
+
reject(err);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
async function processPackages(packages = [], req) {
|
|
36
|
+
const permissions = [];
|
|
37
|
+
const packagesToProcess = packages.slice();
|
|
38
|
+
debug$1("process packages %o", packagesToProcess);
|
|
39
|
+
const requestOptions = (0, _verdaccio_middleware.getRequestOptions)(req);
|
|
40
|
+
for (const pkg of packagesToProcess) {
|
|
41
|
+
const pkgCopy = { ...pkg };
|
|
42
|
+
pkgCopy.author = require_author_utils.formatAuthor(pkg.author);
|
|
43
|
+
try {
|
|
44
|
+
if (await checkAllow(pkg.name, req.remote_user)) {
|
|
45
|
+
if (config.web) pkgCopy.author.avatar = require_author_utils.generateGravatarUrl(pkgCopy.author.email, config.web.gravatar);
|
|
46
|
+
if (!lodash.default.isNil(pkgCopy.dist) && !lodash.default.isNull(pkgCopy.dist.tarball)) pkgCopy.dist.tarball = (0, _verdaccio_tarball.getLocalRegistryTarballUri)(pkgCopy.dist.tarball, pkg.name, requestOptions, config?.url_prefix);
|
|
47
|
+
permissions.push(pkgCopy);
|
|
48
|
+
}
|
|
49
|
+
} catch (err) {
|
|
50
|
+
debug$1("process packages error %o", err);
|
|
51
|
+
_verdaccio_logger.logger.error({
|
|
52
|
+
name: pkg.name,
|
|
53
|
+
error: err
|
|
54
|
+
}, "permission process for @{name} has failed: @{error}");
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
debug$1("allowed %o packages", permissions.length);
|
|
59
|
+
return permissions;
|
|
60
|
+
}
|
|
61
|
+
pkgRouter.get(_verdaccio_middleware.WebUrls.packages_all, async function(req, res, next) {
|
|
62
|
+
debug$1("hit package web api %o");
|
|
63
|
+
try {
|
|
64
|
+
const localPackages = await storage.getLocalDatabase();
|
|
65
|
+
const order = getOrder(config?.web?.sort_packages);
|
|
66
|
+
debug$1("order %o", order);
|
|
67
|
+
next(require_web_utils.sortByName(await processPackages(localPackages, req), order));
|
|
68
|
+
} catch (error) {
|
|
69
|
+
next(error);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return pkgRouter;
|
|
202
73
|
}
|
|
203
|
-
|
|
74
|
+
//#endregion
|
|
75
|
+
exports.default = addPackageWebApi;
|
|
76
|
+
|
|
204
77
|
//# sourceMappingURL=package.js.map
|
package/build/api/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","names":["_debug","_interopRequireDefault","require","_express","_lodash","_config","_logger","_middleware","_tarball","_authorUtils","_webUtils","e","__esModule","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","_typeof","Symbol","toPrimitive","call","TypeError","String","Number","_createForOfIteratorHelper","iterator","Array","isArray","_unsupportedIterableToArray","_n","F","s","n","done","f","a","u","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","_regenerator","toStringTag","c","prototype","Generator","create","_regeneratorDefine2","p","y","G","v","d","bind","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","_regeneratorDefine","_invoke","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","getOrder","order","undefined","debug","buildDebug","addPackageWebApi","storage","auth","config","isLoginEnabled","hasLogin","pkgRouter","Router","anonymousRemoteUser","createAnonymousRemoteUser","checkAllow","remoteUser","reject","remoteUserAccess","allow_access","packageName","err","allowed","processPackages","_processPackages","_callee2","packages","req","permissions","packagesToProcess","requestOptions","_iterator","_step","pkg","pkgCopy","_args2","_t2","_t3","_context2","getRequestOptions","author","formatAuthor","remote_user","web","avatar","generateGravatarUrl","email","gravatar","_","isNil","dist","isNull","tarball","getLocalRegistryTarballUri","url_prefix","logger","error","get","WebUrls","packages_all","_ref","_callee","res","_config$web","localPackages","pkgs","_t","_context","getLocalDatabase","sort_packages","sortByName","_x","_x2","_x3","_default","exports"],"sources":["../../src/api/package.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\nimport _ from 'lodash';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { createAnonymousRemoteUser } from '@verdaccio/config';\nimport { logger } from '@verdaccio/logger';\nimport {\n $NextFunctionVer,\n $RequestExtend,\n $ResponseExtend,\n WebUrls,\n getRequestOptions,\n} from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport { getLocalRegistryTarballUri } from '@verdaccio/tarball';\nimport type { Config, RemoteUser, Version } from '@verdaccio/types';\n\nimport { formatAuthor, generateGravatarUrl } from '../author-utils';\nimport { hasLogin, sortByName } from '../web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst getOrder = (order = 'asc') => {\n return order === 'asc';\n};\n\nconst debug = buildDebug('verdaccio:web:api:package');\n\nfunction addPackageWebApi(storage: Storage, auth: Auth, config: Config): Router {\n const isLoginEnabled = hasLogin(config);\n debug('is login enabled: %o', isLoginEnabled);\n const pkgRouter = Router(); /* eslint new-cap: 0 */\n const anonymousRemoteUser: RemoteUser = createAnonymousRemoteUser();\n\n debug('initialized package web api');\n const checkAllow = (name: string, remoteUser: RemoteUser): Promise<boolean> =>\n new Promise((resolve, reject): void => {\n const remoteUserAccess = !isLoginEnabled ? anonymousRemoteUser : remoteUser;\n try {\n auth.allow_access({ packageName: name }, remoteUserAccess, (err, allowed): void => {\n if (err) {\n resolve(false);\n }\n return resolve(allowed as boolean);\n });\n } catch (err: any) {\n reject(err);\n }\n });\n\n async function processPackages(packages: Version[] = [], req): Promise<Version[]> {\n const permissions: Version[] = [];\n const packagesToProcess = packages.slice();\n debug('process packages %o', packagesToProcess);\n const requestOptions = getRequestOptions(req);\n for (const pkg of packagesToProcess) {\n const pkgCopy = { ...pkg };\n pkgCopy.author = formatAuthor(pkg.author);\n try {\n if (await checkAllow(pkg.name, req.remote_user)) {\n if (config.web) {\n // @ts-ignore\n pkgCopy.author.avatar = generateGravatarUrl(pkgCopy.author.email, config.web.gravatar);\n }\n // convert any remote dist to a local reference\n // eg: if the dist points to npmjs, switch to localhost:4873/prefix/etc.tar.gz\n if (!_.isNil(pkgCopy.dist) && !_.isNull(pkgCopy.dist.tarball)) {\n pkgCopy.dist.tarball = getLocalRegistryTarballUri(\n pkgCopy.dist.tarball,\n pkg.name,\n requestOptions,\n config?.url_prefix\n );\n }\n permissions.push(pkgCopy);\n }\n } catch (err: any) {\n debug('process packages error %o', err);\n logger.error(\n { name: pkg.name, error: err },\n 'permission process for @{name} has failed: @{error}'\n );\n throw err;\n }\n }\n\n debug('allowed %o packages', permissions.length);\n return permissions;\n }\n\n // Get list of all visible package\n pkgRouter.get(\n WebUrls.packages_all,\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n debug('hit package web api %o');\n\n try {\n const localPackages: Version[] = await storage.getLocalDatabase();\n\n const order = getOrder(config?.web?.sort_packages);\n debug('order %o', order);\n const pkgs = await processPackages(localPackages, req);\n next(sortByName(pkgs, order));\n } catch (error: any) {\n next(error);\n }\n }\n );\n\n return pkgRouter;\n}\n\nexport default addPackageWebApi;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"package.js","names":[],"sources":["../../src/api/package.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\nimport _ from 'lodash';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { createAnonymousRemoteUser } from '@verdaccio/config';\nimport { logger } from '@verdaccio/logger';\nimport {\n $NextFunctionVer,\n $RequestExtend,\n $ResponseExtend,\n WebUrls,\n getRequestOptions,\n} from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport { getLocalRegistryTarballUri } from '@verdaccio/tarball';\nimport type { Config, RemoteUser, Version } from '@verdaccio/types';\n\nimport { formatAuthor, generateGravatarUrl } from '../author-utils';\nimport { hasLogin, sortByName } from '../web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst getOrder = (order = 'asc') => {\n return order === 'asc';\n};\n\nconst debug = buildDebug('verdaccio:web:api:package');\n\nfunction addPackageWebApi(storage: Storage, auth: Auth, config: Config): Router {\n const isLoginEnabled = hasLogin(config);\n debug('is login enabled: %o', isLoginEnabled);\n const pkgRouter = Router(); /* eslint new-cap: 0 */\n const anonymousRemoteUser: RemoteUser = createAnonymousRemoteUser();\n\n debug('initialized package web api');\n const checkAllow = (name: string, remoteUser: RemoteUser): Promise<boolean> =>\n new Promise((resolve, reject): void => {\n const remoteUserAccess = !isLoginEnabled ? anonymousRemoteUser : remoteUser;\n try {\n auth.allow_access({ packageName: name }, remoteUserAccess, (err, allowed): void => {\n if (err) {\n resolve(false);\n }\n return resolve(allowed as boolean);\n });\n } catch (err: any) {\n reject(err);\n }\n });\n\n async function processPackages(packages: Version[] = [], req): Promise<Version[]> {\n const permissions: Version[] = [];\n const packagesToProcess = packages.slice();\n debug('process packages %o', packagesToProcess);\n const requestOptions = getRequestOptions(req);\n for (const pkg of packagesToProcess) {\n const pkgCopy = { ...pkg };\n pkgCopy.author = formatAuthor(pkg.author);\n try {\n if (await checkAllow(pkg.name, req.remote_user)) {\n if (config.web) {\n // @ts-ignore\n pkgCopy.author.avatar = generateGravatarUrl(pkgCopy.author.email, config.web.gravatar);\n }\n // convert any remote dist to a local reference\n // eg: if the dist points to npmjs, switch to localhost:4873/prefix/etc.tar.gz\n if (!_.isNil(pkgCopy.dist) && !_.isNull(pkgCopy.dist.tarball)) {\n pkgCopy.dist.tarball = getLocalRegistryTarballUri(\n pkgCopy.dist.tarball,\n pkg.name,\n requestOptions,\n config?.url_prefix\n );\n }\n permissions.push(pkgCopy);\n }\n } catch (err: any) {\n debug('process packages error %o', err);\n logger.error(\n { name: pkg.name, error: err },\n 'permission process for @{name} has failed: @{error}'\n );\n throw err;\n }\n }\n\n debug('allowed %o packages', permissions.length);\n return permissions;\n }\n\n // Get list of all visible package\n pkgRouter.get(\n WebUrls.packages_all,\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n debug('hit package web api %o');\n\n try {\n const localPackages: Version[] = await storage.getLocalDatabase();\n\n const order = getOrder(config?.web?.sort_packages);\n debug('order %o', order);\n const pkgs = await processPackages(localPackages, req);\n next(sortByName(pkgs, order));\n } catch (error: any) {\n next(error);\n }\n }\n );\n\n return pkgRouter;\n}\n\nexport default addPackageWebApi;\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAM,YAAY,QAAQ,UAAU;AAClC,QAAO,UAAU;;AAGnB,IAAM,WAAA,GAAA,MAAA,SAAmB,4BAA4B;AAErD,SAAS,iBAAiB,SAAkB,MAAY,QAAwB;CAC9E,MAAM,iBAAiB,kBAAA,SAAS,OAAO;AACvC,SAAM,wBAAwB,eAAe;CAC7C,MAAM,aAAA,GAAA,QAAA,SAAoB;CAC1B,MAAM,uBAAA,GAAA,kBAAA,4BAA6D;AAEnE,SAAM,8BAA8B;CACpC,MAAM,cAAc,MAAc,eAChC,IAAI,SAAS,SAAS,WAAiB;EACrC,MAAM,mBAAmB,CAAC,iBAAiB,sBAAsB;AACjE,MAAI;AACF,QAAK,aAAa,EAAE,aAAa,MAAM,EAAE,mBAAmB,KAAK,YAAkB;AACjF,QAAI,IACF,SAAQ,MAAM;AAEhB,WAAO,QAAQ,QAAmB;KAClC;WACK,KAAU;AACjB,UAAO,IAAI;;GAEb;CAEJ,eAAe,gBAAgB,WAAsB,EAAE,EAAE,KAAyB;EAChF,MAAM,cAAyB,EAAE;EACjC,MAAM,oBAAoB,SAAS,OAAO;AAC1C,UAAM,uBAAuB,kBAAkB;EAC/C,MAAM,kBAAA,GAAA,sBAAA,mBAAmC,IAAI;AAC7C,OAAK,MAAM,OAAO,mBAAmB;GACnC,MAAM,UAAU,EAAE,GAAG,KAAK;AAC1B,WAAQ,SAAS,qBAAA,aAAa,IAAI,OAAO;AACzC,OAAI;AACF,QAAI,MAAM,WAAW,IAAI,MAAM,IAAI,YAAY,EAAE;AAC/C,SAAI,OAAO,IAET,SAAQ,OAAO,SAAS,qBAAA,oBAAoB,QAAQ,OAAO,OAAO,OAAO,IAAI,SAAS;AAIxF,SAAI,CAAC,OAAA,QAAE,MAAM,QAAQ,KAAK,IAAI,CAAC,OAAA,QAAE,OAAO,QAAQ,KAAK,QAAQ,CAC3D,SAAQ,KAAK,WAAA,GAAA,mBAAA,4BACX,QAAQ,KAAK,SACb,IAAI,MACJ,gBACA,QAAQ,WACT;AAEH,iBAAY,KAAK,QAAQ;;YAEpB,KAAU;AACjB,YAAM,6BAA6B,IAAI;AACvC,sBAAA,OAAO,MACL;KAAE,MAAM,IAAI;KAAM,OAAO;KAAK,EAC9B,sDACD;AACD,UAAM;;;AAIV,UAAM,uBAAuB,YAAY,OAAO;AAChD,SAAO;;AAIT,WAAU,IACR,sBAAA,QAAQ,cACR,eACE,KACA,KACA,MACe;AACf,UAAM,yBAAyB;AAE/B,MAAI;GACF,MAAM,gBAA2B,MAAM,QAAQ,kBAAkB;GAEjE,MAAM,QAAQ,SAAS,QAAQ,KAAK,cAAc;AAClD,WAAM,YAAY,MAAM;AAExB,QAAK,kBAAA,WADQ,MAAM,gBAAgB,eAAe,IAAI,EAChC,MAAM,CAAC;WACtB,OAAY;AACnB,QAAK,MAAM;;GAGhB;AAED,QAAO"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { hasLogin, sortByName } from "../web-utils.mjs";
|
|
2
|
+
import { formatAuthor, generateGravatarUrl } from "../author-utils.mjs";
|
|
3
|
+
import { Router } from "express";
|
|
4
|
+
import _ from "lodash";
|
|
5
|
+
import { logger } from "@verdaccio/logger";
|
|
6
|
+
import { WebUrls, getRequestOptions } from "@verdaccio/middleware";
|
|
7
|
+
import buildDebug from "debug";
|
|
8
|
+
import { createAnonymousRemoteUser } from "@verdaccio/config";
|
|
9
|
+
import { getLocalRegistryTarballUri } from "@verdaccio/tarball";
|
|
10
|
+
//#region src/api/package.ts
|
|
11
|
+
var getOrder = (order = "asc") => {
|
|
12
|
+
return order === "asc";
|
|
13
|
+
};
|
|
14
|
+
var debug = buildDebug("verdaccio:web:api:package");
|
|
15
|
+
function addPackageWebApi(storage, auth, config) {
|
|
16
|
+
const isLoginEnabled = hasLogin(config);
|
|
17
|
+
debug("is login enabled: %o", isLoginEnabled);
|
|
18
|
+
const pkgRouter = Router();
|
|
19
|
+
const anonymousRemoteUser = createAnonymousRemoteUser();
|
|
20
|
+
debug("initialized package web api");
|
|
21
|
+
const checkAllow = (name, remoteUser) => new Promise((resolve, reject) => {
|
|
22
|
+
const remoteUserAccess = !isLoginEnabled ? anonymousRemoteUser : remoteUser;
|
|
23
|
+
try {
|
|
24
|
+
auth.allow_access({ packageName: name }, remoteUserAccess, (err, allowed) => {
|
|
25
|
+
if (err) resolve(false);
|
|
26
|
+
return resolve(allowed);
|
|
27
|
+
});
|
|
28
|
+
} catch (err) {
|
|
29
|
+
reject(err);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
async function processPackages(packages = [], req) {
|
|
33
|
+
const permissions = [];
|
|
34
|
+
const packagesToProcess = packages.slice();
|
|
35
|
+
debug("process packages %o", packagesToProcess);
|
|
36
|
+
const requestOptions = getRequestOptions(req);
|
|
37
|
+
for (const pkg of packagesToProcess) {
|
|
38
|
+
const pkgCopy = { ...pkg };
|
|
39
|
+
pkgCopy.author = formatAuthor(pkg.author);
|
|
40
|
+
try {
|
|
41
|
+
if (await checkAllow(pkg.name, req.remote_user)) {
|
|
42
|
+
if (config.web) pkgCopy.author.avatar = generateGravatarUrl(pkgCopy.author.email, config.web.gravatar);
|
|
43
|
+
if (!_.isNil(pkgCopy.dist) && !_.isNull(pkgCopy.dist.tarball)) pkgCopy.dist.tarball = getLocalRegistryTarballUri(pkgCopy.dist.tarball, pkg.name, requestOptions, config?.url_prefix);
|
|
44
|
+
permissions.push(pkgCopy);
|
|
45
|
+
}
|
|
46
|
+
} catch (err) {
|
|
47
|
+
debug("process packages error %o", err);
|
|
48
|
+
logger.error({
|
|
49
|
+
name: pkg.name,
|
|
50
|
+
error: err
|
|
51
|
+
}, "permission process for @{name} has failed: @{error}");
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
debug("allowed %o packages", permissions.length);
|
|
56
|
+
return permissions;
|
|
57
|
+
}
|
|
58
|
+
pkgRouter.get(WebUrls.packages_all, async function(req, res, next) {
|
|
59
|
+
debug("hit package web api %o");
|
|
60
|
+
try {
|
|
61
|
+
const localPackages = await storage.getLocalDatabase();
|
|
62
|
+
const order = getOrder(config?.web?.sort_packages);
|
|
63
|
+
debug("order %o", order);
|
|
64
|
+
next(sortByName(await processPackages(localPackages, req), order));
|
|
65
|
+
} catch (error) {
|
|
66
|
+
next(error);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return pkgRouter;
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { addPackageWebApi as default };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=package.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.mjs","names":[],"sources":["../../src/api/package.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\nimport _ from 'lodash';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { createAnonymousRemoteUser } from '@verdaccio/config';\nimport { logger } from '@verdaccio/logger';\nimport {\n $NextFunctionVer,\n $RequestExtend,\n $ResponseExtend,\n WebUrls,\n getRequestOptions,\n} from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport { getLocalRegistryTarballUri } from '@verdaccio/tarball';\nimport type { Config, RemoteUser, Version } from '@verdaccio/types';\n\nimport { formatAuthor, generateGravatarUrl } from '../author-utils';\nimport { hasLogin, sortByName } from '../web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst getOrder = (order = 'asc') => {\n return order === 'asc';\n};\n\nconst debug = buildDebug('verdaccio:web:api:package');\n\nfunction addPackageWebApi(storage: Storage, auth: Auth, config: Config): Router {\n const isLoginEnabled = hasLogin(config);\n debug('is login enabled: %o', isLoginEnabled);\n const pkgRouter = Router(); /* eslint new-cap: 0 */\n const anonymousRemoteUser: RemoteUser = createAnonymousRemoteUser();\n\n debug('initialized package web api');\n const checkAllow = (name: string, remoteUser: RemoteUser): Promise<boolean> =>\n new Promise((resolve, reject): void => {\n const remoteUserAccess = !isLoginEnabled ? anonymousRemoteUser : remoteUser;\n try {\n auth.allow_access({ packageName: name }, remoteUserAccess, (err, allowed): void => {\n if (err) {\n resolve(false);\n }\n return resolve(allowed as boolean);\n });\n } catch (err: any) {\n reject(err);\n }\n });\n\n async function processPackages(packages: Version[] = [], req): Promise<Version[]> {\n const permissions: Version[] = [];\n const packagesToProcess = packages.slice();\n debug('process packages %o', packagesToProcess);\n const requestOptions = getRequestOptions(req);\n for (const pkg of packagesToProcess) {\n const pkgCopy = { ...pkg };\n pkgCopy.author = formatAuthor(pkg.author);\n try {\n if (await checkAllow(pkg.name, req.remote_user)) {\n if (config.web) {\n // @ts-ignore\n pkgCopy.author.avatar = generateGravatarUrl(pkgCopy.author.email, config.web.gravatar);\n }\n // convert any remote dist to a local reference\n // eg: if the dist points to npmjs, switch to localhost:4873/prefix/etc.tar.gz\n if (!_.isNil(pkgCopy.dist) && !_.isNull(pkgCopy.dist.tarball)) {\n pkgCopy.dist.tarball = getLocalRegistryTarballUri(\n pkgCopy.dist.tarball,\n pkg.name,\n requestOptions,\n config?.url_prefix\n );\n }\n permissions.push(pkgCopy);\n }\n } catch (err: any) {\n debug('process packages error %o', err);\n logger.error(\n { name: pkg.name, error: err },\n 'permission process for @{name} has failed: @{error}'\n );\n throw err;\n }\n }\n\n debug('allowed %o packages', permissions.length);\n return permissions;\n }\n\n // Get list of all visible package\n pkgRouter.get(\n WebUrls.packages_all,\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n debug('hit package web api %o');\n\n try {\n const localPackages: Version[] = await storage.getLocalDatabase();\n\n const order = getOrder(config?.web?.sort_packages);\n debug('order %o', order);\n const pkgs = await processPackages(localPackages, req);\n next(sortByName(pkgs, order));\n } catch (error: any) {\n next(error);\n }\n }\n );\n\n return pkgRouter;\n}\n\nexport default addPackageWebApi;\n"],"mappings":";;;;;;;;;;AAuBA,IAAM,YAAY,QAAQ,UAAU;AAClC,QAAO,UAAU;;AAGnB,IAAM,QAAQ,WAAW,4BAA4B;AAErD,SAAS,iBAAiB,SAAkB,MAAY,QAAwB;CAC9E,MAAM,iBAAiB,SAAS,OAAO;AACvC,OAAM,wBAAwB,eAAe;CAC7C,MAAM,YAAY,QAAQ;CAC1B,MAAM,sBAAkC,2BAA2B;AAEnE,OAAM,8BAA8B;CACpC,MAAM,cAAc,MAAc,eAChC,IAAI,SAAS,SAAS,WAAiB;EACrC,MAAM,mBAAmB,CAAC,iBAAiB,sBAAsB;AACjE,MAAI;AACF,QAAK,aAAa,EAAE,aAAa,MAAM,EAAE,mBAAmB,KAAK,YAAkB;AACjF,QAAI,IACF,SAAQ,MAAM;AAEhB,WAAO,QAAQ,QAAmB;KAClC;WACK,KAAU;AACjB,UAAO,IAAI;;GAEb;CAEJ,eAAe,gBAAgB,WAAsB,EAAE,EAAE,KAAyB;EAChF,MAAM,cAAyB,EAAE;EACjC,MAAM,oBAAoB,SAAS,OAAO;AAC1C,QAAM,uBAAuB,kBAAkB;EAC/C,MAAM,iBAAiB,kBAAkB,IAAI;AAC7C,OAAK,MAAM,OAAO,mBAAmB;GACnC,MAAM,UAAU,EAAE,GAAG,KAAK;AAC1B,WAAQ,SAAS,aAAa,IAAI,OAAO;AACzC,OAAI;AACF,QAAI,MAAM,WAAW,IAAI,MAAM,IAAI,YAAY,EAAE;AAC/C,SAAI,OAAO,IAET,SAAQ,OAAO,SAAS,oBAAoB,QAAQ,OAAO,OAAO,OAAO,IAAI,SAAS;AAIxF,SAAI,CAAC,EAAE,MAAM,QAAQ,KAAK,IAAI,CAAC,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAC3D,SAAQ,KAAK,UAAU,2BACrB,QAAQ,KAAK,SACb,IAAI,MACJ,gBACA,QAAQ,WACT;AAEH,iBAAY,KAAK,QAAQ;;YAEpB,KAAU;AACjB,UAAM,6BAA6B,IAAI;AACvC,WAAO,MACL;KAAE,MAAM,IAAI;KAAM,OAAO;KAAK,EAC9B,sDACD;AACD,UAAM;;;AAIV,QAAM,uBAAuB,YAAY,OAAO;AAChD,SAAO;;AAIT,WAAU,IACR,QAAQ,cACR,eACE,KACA,KACA,MACe;AACf,QAAM,yBAAyB;AAE/B,MAAI;GACF,MAAM,gBAA2B,MAAM,QAAQ,kBAAkB;GAEjE,MAAM,QAAQ,SAAS,QAAQ,KAAK,cAAc;AAClD,SAAM,YAAY,MAAM;AAExB,QAAK,WADQ,MAAM,gBAAgB,eAAe,IAAI,EAChC,MAAM,CAAC;WACtB,OAAY;AACnB,QAAK,MAAM;;GAGhB;AAED,QAAO"}
|