@verdaccio/web 9.0.0-next-9.3 → 9.0.0-next-9.5

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.
Files changed (51) hide show
  1. package/build/_virtual/_rolldown/runtime.js +23 -0
  2. package/build/_virtual/_rolldown/runtime.mjs +7 -0
  3. package/build/api/index.d.ts +1 -1
  4. package/build/api/index.js +26 -37
  5. package/build/api/index.js.map +1 -1
  6. package/build/api/index.mjs +27 -0
  7. package/build/api/index.mjs.map +1 -0
  8. package/build/api/package.d.ts +3 -3
  9. package/build/api/package.js +79 -200
  10. package/build/api/package.js.map +1 -1
  11. package/build/api/package.mjs +80 -0
  12. package/build/api/package.mjs.map +1 -0
  13. package/build/api/readme.d.ts +2 -2
  14. package/build/api/readme.js +64 -122
  15. package/build/api/readme.js.map +1 -1
  16. package/build/api/readme.mjs +67 -0
  17. package/build/api/readme.mjs.map +1 -0
  18. package/build/api/search.d.ts +2 -2
  19. package/build/api/search.js +57 -99
  20. package/build/api/search.js.map +1 -1
  21. package/build/api/search.mjs +59 -0
  22. package/build/api/search.mjs.map +1 -0
  23. package/build/api/sidebar.d.ts +3 -3
  24. package/build/api/sidebar.js +56 -109
  25. package/build/api/sidebar.js.map +1 -1
  26. package/build/api/sidebar.mjs +57 -0
  27. package/build/api/sidebar.mjs.map +1 -0
  28. package/build/api/user.d.ts +2 -2
  29. package/build/api/user.js +97 -212
  30. package/build/api/user.js.map +1 -1
  31. package/build/api/user.mjs +97 -0
  32. package/build/api/user.mjs.map +1 -0
  33. package/build/author-utils.d.ts +1 -1
  34. package/build/author-utils.js +109 -160
  35. package/build/author-utils.js.map +1 -1
  36. package/build/author-utils.mjs +117 -0
  37. package/build/author-utils.mjs.map +1 -0
  38. package/build/index.js +18 -47
  39. package/build/index.mjs +4 -0
  40. package/build/middleware.d.ts +1 -1
  41. package/build/middleware.js +49 -90
  42. package/build/middleware.js.map +1 -1
  43. package/build/middleware.mjs +48 -0
  44. package/build/middleware.mjs.map +1 -0
  45. package/build/web-utils.d.ts +2 -1
  46. package/build/web-utils.js +31 -31
  47. package/build/web-utils.js.map +1 -1
  48. package/build/web-utils.mjs +34 -0
  49. package/build/web-utils.mjs.map +1 -0
  50. package/package.json +30 -19
  51. package/build/index.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ import { Router } from "express";
2
+ import _ from "lodash";
3
+ import { errorUtils } from "@verdaccio/core";
4
+ import { WebUrls } from "@verdaccio/middleware";
5
+ import buildDebug from "debug";
6
+ import { URLSearchParams } from "node:url";
7
+ //#region src/api/search.ts
8
+ var debug = buildDebug("verdaccio:web:api:search");
9
+ function checkAccess(pkg, auth, remoteUser) {
10
+ return new Promise((resolve, reject) => {
11
+ auth.allow_access({ packageName: pkg?.package?.name }, remoteUser, function(err, allowed) {
12
+ if (err) if (err.status && String(err.status).match(/^4\d\d$/)) {
13
+ allowed = false;
14
+ return resolve(null);
15
+ } else reject(err);
16
+ else return resolve(allowed ? pkg : null);
17
+ });
18
+ });
19
+ }
20
+ function addSearchWebApi(storage, auth) {
21
+ const router = Router();
22
+ router.get(WebUrls.search, async function(req, _res, next) {
23
+ try {
24
+ const abort = new AbortController();
25
+ req.socket.on("close", function() {
26
+ debug("search web aborted");
27
+ abort.abort();
28
+ });
29
+ const text = req.params.anything ?? "";
30
+ const size = 20;
31
+ const from = 0;
32
+ const query = {
33
+ from: 0,
34
+ maintenance: .5,
35
+ popularity: .98,
36
+ quality: .65,
37
+ size: 20,
38
+ text
39
+ };
40
+ const urlParams = new URLSearchParams(query);
41
+ debug("search web init");
42
+ const data = await storage?.search({
43
+ query,
44
+ url: `/-/v1/search?${urlParams.toString()}`,
45
+ abort
46
+ });
47
+ next((await Promise.all(data.map((pkgItem) => {
48
+ return checkAccess(pkgItem, auth, req.remote_user);
49
+ }))).filter((i) => !_.isNull(i)).slice(from, size));
50
+ } catch (err) {
51
+ next(errorUtils.getInternalError(err.message));
52
+ }
53
+ });
54
+ return router;
55
+ }
56
+ //#endregion
57
+ export { addSearchWebApi as default };
58
+
59
+ //# sourceMappingURL=search.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.mjs","names":[],"sources":["../../src/api/search.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\nimport _ from 'lodash';\nimport { URLSearchParams } from 'node:url';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { errorUtils } from '@verdaccio/core';\nimport type { SearchQuery } from '@verdaccio/core/src/search-utils';\nimport { WebUrls } from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport type { Manifest } from '@verdaccio/types';\n\nimport type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from './package';\n\nconst debug = buildDebug('verdaccio:web:api:search');\n\nfunction 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\nfunction addSearchWebApi(storage: Storage, auth: Auth): Router {\n const router = Router(); /* eslint new-cap: 0 */\n router.get(\n WebUrls.search,\n async function (\n req: $RequestExtend,\n _res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n try {\n const abort = new AbortController();\n req.socket.on('close', function () {\n debug('search web aborted');\n abort.abort();\n });\n const text: string = (req.params.anything as string) ?? '';\n // These values are declared as optimal by npm cli\n // FUTURE: could be overwritten by ui settings.\n const size = 20;\n const from = 0;\n const query: SearchQuery = {\n from: 0,\n maintenance: 0.5,\n popularity: 0.98,\n quality: 0.65,\n size: 20,\n text,\n };\n // @ts-ignore\n const urlParams = new URLSearchParams(query);\n debug('search web init');\n const data = await storage?.search({\n query,\n url: `/-/v1/search?${urlParams.toString()}`,\n abort,\n });\n const checkAccessPromises = await Promise.all(\n data.map((pkgItem) => {\n return checkAccess(pkgItem, auth, req.remote_user);\n })\n );\n\n const final = checkAccessPromises\n .filter((i): i is Manifest => !_.isNull(i))\n .slice(from, size);\n\n next(final);\n } catch (err: any) {\n next(errorUtils.getInternalError(err.message));\n }\n }\n );\n return router;\n}\n\nexport default addSearchWebApi;\n"],"mappings":";;;;;;;AAcA,IAAM,QAAQ,WAAW,2BAA2B;AAEpD,SAAS,YAAY,KAAU,MAAW,YAAsC;AAC9E,QAAO,IAAI,SAAS,SAAS,WAAW;AACtC,OAAK,aAAa,EAAE,aAAa,KAAK,SAAS,MAAM,EAAE,YAAY,SAAU,KAAK,SAAS;AACzF,OAAI,IACF,KAAI,IAAI,UAAU,OAAO,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE;AAGrD,cAAU;AACV,WAAO,QAAQ,KAAK;SAEpB,QAAO,IAAI;OAGb,QAAO,QAAQ,UAAU,MAAM,KAAK;IAEtC;GACF;;AAGJ,SAAS,gBAAgB,SAAkB,MAAoB;CAC7D,MAAM,SAAS,QAAQ;AACvB,QAAO,IACL,QAAQ,QACR,eACE,KACA,MACA,MACe;AACf,MAAI;GACF,MAAM,QAAQ,IAAI,iBAAiB;AACnC,OAAI,OAAO,GAAG,SAAS,WAAY;AACjC,UAAM,qBAAqB;AAC3B,UAAM,OAAO;KACb;GACF,MAAM,OAAgB,IAAI,OAAO,YAAuB;GAGxD,MAAM,OAAO;GACb,MAAM,OAAO;GACb,MAAM,QAAqB;IACzB,MAAM;IACN,aAAa;IACb,YAAY;IACZ,SAAS;IACT,MAAM;IACN;IACD;GAED,MAAM,YAAY,IAAI,gBAAgB,MAAM;AAC5C,SAAM,kBAAkB;GACxB,MAAM,OAAO,MAAM,SAAS,OAAO;IACjC;IACA,KAAK,gBAAgB,UAAU,UAAU;IACzC;IACD,CAAC;AAWF,SAV4B,MAAM,QAAQ,IACxC,KAAK,KAAK,YAAY;AACpB,WAAO,YAAY,SAAS,MAAM,IAAI,YAAY;KAClD,CACH,EAGE,QAAQ,MAAqB,CAAC,EAAE,OAAO,EAAE,CAAC,CAC1C,MAAM,MAAM,KAAK,CAET;WACJ,KAAU;AACjB,QAAK,WAAW,iBAAiB,IAAI,QAAQ,CAAC;;GAGnD;AACD,QAAO"}
@@ -1,8 +1,8 @@
1
1
  import { Router } from 'express';
2
- import type { Auth } from '@verdaccio/auth';
2
+ import { Auth } from '@verdaccio/auth';
3
3
  import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '@verdaccio/middleware';
4
- import type { Storage } from '@verdaccio/store';
5
- import type { Config } from '@verdaccio/types';
4
+ import { Storage } from '@verdaccio/store';
5
+ import { Config } from '@verdaccio/types';
6
6
  export { $RequestExtend, $ResponseExtend, $NextFunctionVer };
7
7
  declare function addSidebarWebApi(config: Config, storage: Storage, auth: Auth): Router;
8
8
  export default addSidebarWebApi;
@@ -1,112 +1,59 @@
1
- "use strict";
2
-
3
- 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); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- Object.defineProperty(exports, "$NextFunctionVer", {
8
- enumerable: true,
9
- get: function get() {
10
- return _middleware.$NextFunctionVer;
11
- }
12
- });
13
- Object.defineProperty(exports, "$RequestExtend", {
14
- enumerable: true,
15
- get: function get() {
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 _core = require("@verdaccio/core");
29
- var _logger = require("@verdaccio/logger");
30
- var _middleware = require("@verdaccio/middleware");
31
- var _tarball = require("@verdaccio/tarball");
32
- var _authorUtils = require("../author-utils");
33
- var _webUtils = require("../web-utils");
34
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
35
- 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 }; })(); }
36
- 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); }
37
- 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; }
38
- 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; }
39
- 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; }
40
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
41
- 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); }
42
- 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); }
43
- 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); }); }; }
44
- // Was required by other packages
45
-
46
- var debug = (0, _debug["default"])('verdaccio:web:api:sidebar');
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 _verdaccio_core = require("@verdaccio/core");
6
+ let _verdaccio_logger = require("@verdaccio/logger");
7
+ let _verdaccio_middleware = require("@verdaccio/middleware");
8
+ let debug = require("debug");
9
+ debug = require_runtime.__toESM(debug);
10
+ let _verdaccio_tarball = require("@verdaccio/tarball");
11
+ //#region src/api/sidebar.ts
12
+ var debug$1 = (0, debug.default)("verdaccio:web:api:sidebar");
47
13
  function addSidebarWebApi(config, storage, auth) {
48
- debug('initialized sidebar web api');
49
- var router = (0, _express.Router)(); /* eslint new-cap: 0 */
50
- var can = (0, _middleware.allow)(auth, {
51
- beforeAll: function beforeAll(a, b) {
52
- return _logger.logger.trace(a, b);
53
- },
54
- afterAll: function afterAll(a, b) {
55
- return _logger.logger.trace(a, b);
56
- }
57
- });
58
- // Get package sidebar
59
- router.get([_middleware.WebUrls.sidebar_scopped_package, _middleware.WebUrls.sidebar_package], can('access'), /*#__PURE__*/function () {
60
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req, res, next) {
61
- var rawScope, scope, name, requestOptions, info, v, sideBarInfo, authorAvatar, _t;
62
- return _regenerator().w(function (_context) {
63
- while (1) switch (_context.p = _context.n) {
64
- case 0:
65
- rawScope = req.params.scope; // May include '@'
66
- scope = rawScope ? rawScope.slice(1) : null; // Remove '@' if present
67
- name = scope ? (0, _webUtils.addScope)(scope, req.params["package"]) : req.params["package"];
68
- requestOptions = (0, _middleware.getRequestOptions)(req);
69
- _context.p = 1;
70
- _context.n = 2;
71
- return storage.getPackageByOptions({
72
- name: name,
73
- uplinksLook: true,
74
- keepUpLinkData: true,
75
- requestOptions: requestOptions
76
- });
77
- case 2:
78
- info = _context.v;
79
- // TODO: sanitize query
80
- v = req.query.v;
81
- sideBarInfo = _objectSpread({}, info);
82
- sideBarInfo.versions = (0, _tarball.convertDistRemoteToLocalTarballUrls)(info, requestOptions, config.url_prefix).versions;
83
- if (typeof v === 'string' && (0, _webUtils.isVersionValid)(info, v)) {
84
- sideBarInfo.latest = sideBarInfo.versions[v];
85
- sideBarInfo.latest.author = (0, _authorUtils.formatAuthor)(sideBarInfo.latest.author);
86
- } else {
87
- sideBarInfo.latest = sideBarInfo.versions[info[_core.DIST_TAGS].latest];
88
- sideBarInfo.latest.author = (0, _authorUtils.formatAuthor)(sideBarInfo.latest.author);
89
- }
90
- sideBarInfo = (0, _webUtils.deleteProperties)(['readme', '_attachments', '_rev', 'name'], sideBarInfo);
91
- authorAvatar = config.web ? (0, _authorUtils.addGravatarSupport)(sideBarInfo, config.web.gravatar) : (0, _authorUtils.addGravatarSupport)(sideBarInfo);
92
- next(authorAvatar);
93
- _context.n = 4;
94
- break;
95
- case 3:
96
- _context.p = 3;
97
- _t = _context.v;
98
- res.status(_core.HTTP_STATUS.NOT_FOUND);
99
- res.end();
100
- case 4:
101
- return _context.a(2);
102
- }
103
- }, _callee, null, [[1, 3]]);
104
- }));
105
- return function (_x, _x2, _x3) {
106
- return _ref.apply(this, arguments);
107
- };
108
- }());
109
- return router;
14
+ debug$1("initialized sidebar web api");
15
+ const router = (0, express.Router)();
16
+ const can = (0, _verdaccio_middleware.allow)(auth, {
17
+ beforeAll: (a, b) => _verdaccio_logger.logger.trace(a, b),
18
+ afterAll: (a, b) => _verdaccio_logger.logger.trace(a, b)
19
+ });
20
+ router.get([_verdaccio_middleware.WebUrls.sidebar_scopped_package, _verdaccio_middleware.WebUrls.sidebar_package], can("access"), async function(req, res, next) {
21
+ const rawScope = req.params.scope;
22
+ const scope = rawScope ? rawScope.slice(1) : null;
23
+ const name = scope ? require_web_utils.addScope(scope, req.params.package) : req.params.package;
24
+ const requestOptions = (0, _verdaccio_middleware.getRequestOptions)(req);
25
+ try {
26
+ const info = await storage.getPackageByOptions({
27
+ name,
28
+ uplinksLook: true,
29
+ keepUpLinkData: true,
30
+ requestOptions
31
+ });
32
+ const { v } = req.query;
33
+ let sideBarInfo = { ...info };
34
+ sideBarInfo.versions = (0, _verdaccio_tarball.convertDistRemoteToLocalTarballUrls)(info, requestOptions, config.url_prefix).versions;
35
+ if (typeof v === "string" && require_web_utils.isVersionValid(info, v)) {
36
+ sideBarInfo.latest = sideBarInfo.versions[v];
37
+ sideBarInfo.latest.author = require_author_utils.formatAuthor(sideBarInfo.latest.author);
38
+ } else {
39
+ sideBarInfo.latest = sideBarInfo.versions[info[_verdaccio_core.DIST_TAGS].latest];
40
+ sideBarInfo.latest.author = require_author_utils.formatAuthor(sideBarInfo.latest.author);
41
+ }
42
+ sideBarInfo = require_web_utils.deleteProperties([
43
+ "readme",
44
+ "_attachments",
45
+ "_rev",
46
+ "name"
47
+ ], sideBarInfo);
48
+ next(config.web ? require_author_utils.addGravatarSupport(sideBarInfo, config.web.gravatar) : require_author_utils.addGravatarSupport(sideBarInfo));
49
+ } catch {
50
+ res.status(_verdaccio_core.HTTP_STATUS.NOT_FOUND);
51
+ res.end();
52
+ }
53
+ });
54
+ return router;
110
55
  }
111
- var _default = exports["default"] = addSidebarWebApi;
56
+ //#endregion
57
+ exports.default = addSidebarWebApi;
58
+
112
59
  //# sourceMappingURL=sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","names":["_debug","_interopRequireDefault","require","_express","_core","_logger","_middleware","_tarball","_authorUtils","_webUtils","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","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","_typeof","toPrimitive","String","Number","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","debug","buildDebug","addSidebarWebApi","config","storage","auth","router","Router","can","allow","beforeAll","b","logger","trace","afterAll","get","WebUrls","sidebar_scopped_package","sidebar_package","_ref","_callee","req","res","next","rawScope","scope","name","requestOptions","info","sideBarInfo","authorAvatar","_t","_context","params","slice","addScope","getRequestOptions","getPackageByOptions","uplinksLook","keepUpLinkData","query","versions","convertDistRemoteToLocalTarballUrls","url_prefix","isVersionValid","latest","author","formatAuthor","DIST_TAGS","deleteProperties","web","addGravatarSupport","gravatar","status","HTTP_STATUS","NOT_FOUND","end","_x","_x2","_x3","_default","exports"],"sources":["../../src/api/sidebar.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { DIST_TAGS, HTTP_STATUS } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport {\n $NextFunctionVer,\n $RequestExtend,\n $ResponseExtend,\n WebUrls,\n allow,\n getRequestOptions,\n} from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport { convertDistRemoteToLocalTarballUrls } from '@verdaccio/tarball';\nimport type { Config, Manifest, WebManifest } from '@verdaccio/types';\n\nimport { addGravatarSupport, formatAuthor } from '../author-utils';\nimport { addScope, deleteProperties, isVersionValid } from '../web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst debug = buildDebug('verdaccio:web:api:sidebar');\n\nfunction addSidebarWebApi(config: Config, storage: Storage, auth: Auth): Router {\n debug('initialized sidebar web api');\n const router = Router(); /* eslint new-cap: 0 */\n const can = allow(auth, {\n beforeAll: (a, b) => logger.trace(a, b),\n afterAll: (a, b) => logger.trace(a, b),\n });\n // Get package sidebar\n router.get(\n [WebUrls.sidebar_scopped_package, WebUrls.sidebar_package],\n can('access'),\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n const rawScope = req.params.scope; // May include '@'\n const scope = rawScope ? rawScope.slice(1) : null; // Remove '@' if present\n const name: string = scope ? addScope(scope, req.params.package) : req.params.package;\n const requestOptions = getRequestOptions(req);\n try {\n const info = (await storage.getPackageByOptions({\n name,\n uplinksLook: true,\n keepUpLinkData: true,\n requestOptions,\n })) as Manifest;\n // TODO: sanitize query\n const { v } = req.query;\n let sideBarInfo = { ...info } as WebManifest;\n sideBarInfo.versions = convertDistRemoteToLocalTarballUrls(\n info,\n requestOptions,\n config.url_prefix\n ).versions;\n if (typeof v === 'string' && isVersionValid(info, v)) {\n sideBarInfo.latest = sideBarInfo.versions[v];\n sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);\n } else {\n sideBarInfo.latest = sideBarInfo.versions[info[DIST_TAGS].latest];\n sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);\n }\n sideBarInfo = deleteProperties(['readme', '_attachments', '_rev', 'name'], sideBarInfo);\n const authorAvatar = config.web\n ? addGravatarSupport(sideBarInfo, config.web.gravatar)\n : addGravatarSupport(sideBarInfo);\n next(authorAvatar);\n } catch {\n res.status(HTTP_STATUS.NOT_FOUND);\n res.end();\n }\n }\n );\n\n return router;\n}\n\nexport default addSidebarWebApi;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"sidebar.js","names":[],"sources":["../../src/api/sidebar.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { DIST_TAGS, HTTP_STATUS } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport {\n $NextFunctionVer,\n $RequestExtend,\n $ResponseExtend,\n WebUrls,\n allow,\n getRequestOptions,\n} from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport { convertDistRemoteToLocalTarballUrls } from '@verdaccio/tarball';\nimport type { Config, Manifest, WebManifest } from '@verdaccio/types';\n\nimport { addGravatarSupport, formatAuthor } from '../author-utils';\nimport { addScope, deleteProperties, isVersionValid } from '../web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst debug = buildDebug('verdaccio:web:api:sidebar');\n\nfunction addSidebarWebApi(config: Config, storage: Storage, auth: Auth): Router {\n debug('initialized sidebar web api');\n const router = Router(); /* eslint new-cap: 0 */\n const can = allow(auth, {\n beforeAll: (a, b) => logger.trace(a, b),\n afterAll: (a, b) => logger.trace(a, b),\n });\n // Get package sidebar\n router.get(\n [WebUrls.sidebar_scopped_package, WebUrls.sidebar_package],\n can('access'),\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n const rawScope = req.params.scope; // May include '@'\n const scope = rawScope ? rawScope.slice(1) : null; // Remove '@' if present\n const name: string = scope ? addScope(scope, req.params.package) : req.params.package;\n const requestOptions = getRequestOptions(req);\n try {\n const info = (await storage.getPackageByOptions({\n name,\n uplinksLook: true,\n keepUpLinkData: true,\n requestOptions,\n })) as Manifest;\n // TODO: sanitize query\n const { v } = req.query;\n let sideBarInfo = { ...info } as WebManifest;\n sideBarInfo.versions = convertDistRemoteToLocalTarballUrls(\n info,\n requestOptions,\n config.url_prefix\n ).versions;\n if (typeof v === 'string' && isVersionValid(info, v)) {\n sideBarInfo.latest = sideBarInfo.versions[v];\n sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);\n } else {\n sideBarInfo.latest = sideBarInfo.versions[info[DIST_TAGS].latest];\n sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);\n }\n sideBarInfo = deleteProperties(['readme', '_attachments', '_rev', 'name'], sideBarInfo);\n const authorAvatar = config.web\n ? addGravatarSupport(sideBarInfo, config.web.gravatar)\n : addGravatarSupport(sideBarInfo);\n next(authorAvatar);\n } catch {\n res.status(HTTP_STATUS.NOT_FOUND);\n res.end();\n }\n }\n );\n\n return router;\n}\n\nexport default addSidebarWebApi;\n"],"mappings":";;;;;;;;;;;AAuBA,IAAM,WAAA,GAAA,MAAA,SAAmB,4BAA4B;AAErD,SAAS,iBAAiB,QAAgB,SAAkB,MAAoB;AAC9E,SAAM,8BAA8B;CACpC,MAAM,UAAA,GAAA,QAAA,SAAiB;CACvB,MAAM,OAAA,GAAA,sBAAA,OAAY,MAAM;EACtB,YAAY,GAAG,MAAM,kBAAA,OAAO,MAAM,GAAG,EAAE;EACvC,WAAW,GAAG,MAAM,kBAAA,OAAO,MAAM,GAAG,EAAE;EACvC,CAAC;AAEF,QAAO,IACL,CAAC,sBAAA,QAAQ,yBAAyB,sBAAA,QAAQ,gBAAgB,EAC1D,IAAI,SAAS,EACb,eACE,KACA,KACA,MACe;EACf,MAAM,WAAW,IAAI,OAAO;EAC5B,MAAM,QAAQ,WAAW,SAAS,MAAM,EAAE,GAAG;EAC7C,MAAM,OAAe,QAAQ,kBAAA,SAAS,OAAO,IAAI,OAAO,QAAQ,GAAG,IAAI,OAAO;EAC9E,MAAM,kBAAA,GAAA,sBAAA,mBAAmC,IAAI;AAC7C,MAAI;GACF,MAAM,OAAQ,MAAM,QAAQ,oBAAoB;IAC9C;IACA,aAAa;IACb,gBAAgB;IAChB;IACD,CAAC;GAEF,MAAM,EAAE,MAAM,IAAI;GAClB,IAAI,cAAc,EAAE,GAAG,MAAM;AAC7B,eAAY,YAAA,GAAA,mBAAA,qCACV,MACA,gBACA,OAAO,WACR,CAAC;AACF,OAAI,OAAO,MAAM,YAAY,kBAAA,eAAe,MAAM,EAAE,EAAE;AACpD,gBAAY,SAAS,YAAY,SAAS;AAC1C,gBAAY,OAAO,SAAS,qBAAA,aAAa,YAAY,OAAO,OAAO;UAC9D;AACL,gBAAY,SAAS,YAAY,SAAS,KAAK,gBAAA,WAAW;AAC1D,gBAAY,OAAO,SAAS,qBAAA,aAAa,YAAY,OAAO,OAAO;;AAErE,iBAAc,kBAAA,iBAAiB;IAAC;IAAU;IAAgB;IAAQ;IAAO,EAAE,YAAY;AAIvF,QAHqB,OAAO,MACxB,qBAAA,mBAAmB,aAAa,OAAO,IAAI,SAAS,GACpD,qBAAA,mBAAmB,YAAY,CACjB;UACZ;AACN,OAAI,OAAO,gBAAA,YAAY,UAAU;AACjC,OAAI,KAAK;;GAGd;AAED,QAAO"}
@@ -0,0 +1,57 @@
1
+ import { addScope, deleteProperties, isVersionValid } from "../web-utils.mjs";
2
+ import { addGravatarSupport, formatAuthor } from "../author-utils.mjs";
3
+ import { Router } from "express";
4
+ import { DIST_TAGS, HTTP_STATUS } from "@verdaccio/core";
5
+ import { logger } from "@verdaccio/logger";
6
+ import { WebUrls, allow, getRequestOptions } from "@verdaccio/middleware";
7
+ import buildDebug from "debug";
8
+ import { convertDistRemoteToLocalTarballUrls } from "@verdaccio/tarball";
9
+ //#region src/api/sidebar.ts
10
+ var debug = buildDebug("verdaccio:web:api:sidebar");
11
+ function addSidebarWebApi(config, storage, auth) {
12
+ debug("initialized sidebar web api");
13
+ const router = Router();
14
+ const can = allow(auth, {
15
+ beforeAll: (a, b) => logger.trace(a, b),
16
+ afterAll: (a, b) => logger.trace(a, b)
17
+ });
18
+ router.get([WebUrls.sidebar_scopped_package, WebUrls.sidebar_package], can("access"), async function(req, res, next) {
19
+ const rawScope = req.params.scope;
20
+ const scope = rawScope ? rawScope.slice(1) : null;
21
+ const name = scope ? addScope(scope, req.params.package) : req.params.package;
22
+ const requestOptions = getRequestOptions(req);
23
+ try {
24
+ const info = await storage.getPackageByOptions({
25
+ name,
26
+ uplinksLook: true,
27
+ keepUpLinkData: true,
28
+ requestOptions
29
+ });
30
+ const { v } = req.query;
31
+ let sideBarInfo = { ...info };
32
+ sideBarInfo.versions = convertDistRemoteToLocalTarballUrls(info, requestOptions, config.url_prefix).versions;
33
+ if (typeof v === "string" && isVersionValid(info, v)) {
34
+ sideBarInfo.latest = sideBarInfo.versions[v];
35
+ sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);
36
+ } else {
37
+ sideBarInfo.latest = sideBarInfo.versions[info[DIST_TAGS].latest];
38
+ sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);
39
+ }
40
+ sideBarInfo = deleteProperties([
41
+ "readme",
42
+ "_attachments",
43
+ "_rev",
44
+ "name"
45
+ ], sideBarInfo);
46
+ next(config.web ? addGravatarSupport(sideBarInfo, config.web.gravatar) : addGravatarSupport(sideBarInfo));
47
+ } catch {
48
+ res.status(HTTP_STATUS.NOT_FOUND);
49
+ res.end();
50
+ }
51
+ });
52
+ return router;
53
+ }
54
+ //#endregion
55
+ export { addSidebarWebApi as default };
56
+
57
+ //# sourceMappingURL=sidebar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.mjs","names":[],"sources":["../../src/api/sidebar.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport type { Auth } from '@verdaccio/auth';\nimport { DIST_TAGS, HTTP_STATUS } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport {\n $NextFunctionVer,\n $RequestExtend,\n $ResponseExtend,\n WebUrls,\n allow,\n getRequestOptions,\n} from '@verdaccio/middleware';\nimport type { Storage } from '@verdaccio/store';\nimport { convertDistRemoteToLocalTarballUrls } from '@verdaccio/tarball';\nimport type { Config, Manifest, WebManifest } from '@verdaccio/types';\n\nimport { addGravatarSupport, formatAuthor } from '../author-utils';\nimport { addScope, deleteProperties, isVersionValid } from '../web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst debug = buildDebug('verdaccio:web:api:sidebar');\n\nfunction addSidebarWebApi(config: Config, storage: Storage, auth: Auth): Router {\n debug('initialized sidebar web api');\n const router = Router(); /* eslint new-cap: 0 */\n const can = allow(auth, {\n beforeAll: (a, b) => logger.trace(a, b),\n afterAll: (a, b) => logger.trace(a, b),\n });\n // Get package sidebar\n router.get(\n [WebUrls.sidebar_scopped_package, WebUrls.sidebar_package],\n can('access'),\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n const rawScope = req.params.scope; // May include '@'\n const scope = rawScope ? rawScope.slice(1) : null; // Remove '@' if present\n const name: string = scope ? addScope(scope, req.params.package) : req.params.package;\n const requestOptions = getRequestOptions(req);\n try {\n const info = (await storage.getPackageByOptions({\n name,\n uplinksLook: true,\n keepUpLinkData: true,\n requestOptions,\n })) as Manifest;\n // TODO: sanitize query\n const { v } = req.query;\n let sideBarInfo = { ...info } as WebManifest;\n sideBarInfo.versions = convertDistRemoteToLocalTarballUrls(\n info,\n requestOptions,\n config.url_prefix\n ).versions;\n if (typeof v === 'string' && isVersionValid(info, v)) {\n sideBarInfo.latest = sideBarInfo.versions[v];\n sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);\n } else {\n sideBarInfo.latest = sideBarInfo.versions[info[DIST_TAGS].latest];\n sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author);\n }\n sideBarInfo = deleteProperties(['readme', '_attachments', '_rev', 'name'], sideBarInfo);\n const authorAvatar = config.web\n ? addGravatarSupport(sideBarInfo, config.web.gravatar)\n : addGravatarSupport(sideBarInfo);\n next(authorAvatar);\n } catch {\n res.status(HTTP_STATUS.NOT_FOUND);\n res.end();\n }\n }\n );\n\n return router;\n}\n\nexport default addSidebarWebApi;\n"],"mappings":";;;;;;;;;AAuBA,IAAM,QAAQ,WAAW,4BAA4B;AAErD,SAAS,iBAAiB,QAAgB,SAAkB,MAAoB;AAC9E,OAAM,8BAA8B;CACpC,MAAM,SAAS,QAAQ;CACvB,MAAM,MAAM,MAAM,MAAM;EACtB,YAAY,GAAG,MAAM,OAAO,MAAM,GAAG,EAAE;EACvC,WAAW,GAAG,MAAM,OAAO,MAAM,GAAG,EAAE;EACvC,CAAC;AAEF,QAAO,IACL,CAAC,QAAQ,yBAAyB,QAAQ,gBAAgB,EAC1D,IAAI,SAAS,EACb,eACE,KACA,KACA,MACe;EACf,MAAM,WAAW,IAAI,OAAO;EAC5B,MAAM,QAAQ,WAAW,SAAS,MAAM,EAAE,GAAG;EAC7C,MAAM,OAAe,QAAQ,SAAS,OAAO,IAAI,OAAO,QAAQ,GAAG,IAAI,OAAO;EAC9E,MAAM,iBAAiB,kBAAkB,IAAI;AAC7C,MAAI;GACF,MAAM,OAAQ,MAAM,QAAQ,oBAAoB;IAC9C;IACA,aAAa;IACb,gBAAgB;IAChB;IACD,CAAC;GAEF,MAAM,EAAE,MAAM,IAAI;GAClB,IAAI,cAAc,EAAE,GAAG,MAAM;AAC7B,eAAY,WAAW,oCACrB,MACA,gBACA,OAAO,WACR,CAAC;AACF,OAAI,OAAO,MAAM,YAAY,eAAe,MAAM,EAAE,EAAE;AACpD,gBAAY,SAAS,YAAY,SAAS;AAC1C,gBAAY,OAAO,SAAS,aAAa,YAAY,OAAO,OAAO;UAC9D;AACL,gBAAY,SAAS,YAAY,SAAS,KAAK,WAAW;AAC1D,gBAAY,OAAO,SAAS,aAAa,YAAY,OAAO,OAAO;;AAErE,iBAAc,iBAAiB;IAAC;IAAU;IAAgB;IAAQ;IAAO,EAAE,YAAY;AAIvF,QAHqB,OAAO,MACxB,mBAAmB,aAAa,OAAO,IAAI,SAAS,GACpD,mBAAmB,YAAY,CACjB;UACZ;AACN,OAAI,OAAO,YAAY,UAAU;AACjC,OAAI,KAAK;;GAGd;AAED,QAAO"}
@@ -1,5 +1,5 @@
1
1
  import { Router } from 'express';
2
- import { type Auth } from '@verdaccio/auth';
3
- import type { Config } from '@verdaccio/types';
2
+ import { Auth } from '@verdaccio/auth';
3
+ import { Config } from '@verdaccio/types';
4
4
  declare function addUserAuthApi(auth: Auth, config: Config, storage: Storage): Router;
5
5
  export default addUserAuthApi;