@verdaccio/web 6.0.0-6-next.19 → 6.0.0-6-next.23

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 (58) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/build/api/index.d.ts +2 -0
  3. package/build/api/index.js +41 -0
  4. package/build/api/index.js.map +1 -0
  5. package/build/api/package.d.ts +2 -2
  6. package/build/api/package.js +26 -24
  7. package/build/api/package.js.map +1 -1
  8. package/build/api/readme.d.ts +2 -2
  9. package/build/api/readme.js +16 -10
  10. package/build/api/readme.js.map +1 -1
  11. package/build/api/search.d.ts +1 -1
  12. package/build/api/search.js +9 -3
  13. package/build/api/search.js.map +1 -1
  14. package/build/api/sidebar.d.ts +2 -2
  15. package/build/api/sidebar.js +22 -12
  16. package/build/api/sidebar.js.map +1 -1
  17. package/build/api/user.d.ts +2 -2
  18. package/build/api/user.js +10 -3
  19. package/build/api/user.js.map +1 -1
  20. package/build/middleware/render-web.js +7 -7
  21. package/build/middleware/render-web.js.map +1 -1
  22. package/build/middleware/web-api.d.ts +1 -1
  23. package/build/middleware/web-api.js +4 -26
  24. package/build/middleware/web-api.js.map +1 -1
  25. package/build/renderHTML.js +14 -14
  26. package/build/renderHTML.js.map +1 -1
  27. package/build/template.js +2 -2
  28. package/build/template.js.map +1 -1
  29. package/build/utils/web-utils.d.ts +1 -2
  30. package/build/utils/web-utils.js +5 -71
  31. package/build/utils/web-utils.js.map +1 -1
  32. package/build/web-middleware.js.map +1 -1
  33. package/package.json +20 -22
  34. package/src/api/index.ts +20 -0
  35. package/src/api/package.ts +10 -9
  36. package/src/api/readme.ts +9 -7
  37. package/src/api/search.ts +10 -6
  38. package/src/api/sidebar.ts +12 -9
  39. package/src/api/user.ts +9 -6
  40. package/src/middleware/render-web.ts +4 -3
  41. package/src/middleware/web-api.ts +7 -24
  42. package/src/renderHTML.ts +4 -3
  43. package/src/template.ts +3 -1
  44. package/src/utils/web-utils.ts +3 -55
  45. package/src/web-middleware.ts +1 -0
  46. package/test/api.packages.test.ts +4 -2
  47. package/test/api.readme.test.ts +4 -3
  48. package/test/api.search.test.ts +6 -5
  49. package/test/api.sidebar.test.ts +3 -2
  50. package/test/api.user.test.ts +6 -4
  51. package/test/helper.ts +7 -5
  52. package/test/render.test.ts +3 -1
  53. package/test/template.test.ts +1 -0
  54. package/test/utils.spec.ts +1 -209
  55. package/build/utils/user.d.ts +0 -5
  56. package/build/utils/user.js +0 -34
  57. package/build/utils/user.js.map +0 -1
  58. package/src/utils/user.ts +0 -37
package/CHANGELOG.md CHANGED
@@ -1,5 +1,86 @@
1
1
  # @verdaccio/web
2
2
 
3
+ ## 6.0.0-6-next.23
4
+
5
+ ### Minor Changes
6
+
7
+ - 048ac95e: feat: align with v5 ui endpoints and ui small bugfix
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [730b5d8c]
12
+ - @verdaccio/logger@6.0.0-6-next.9
13
+ - @verdaccio/auth@6.0.0-6-next.17
14
+ - @verdaccio/loaders@6.0.0-6-next.9
15
+ - @verdaccio/middleware@6.0.0-6-next.17
16
+ - @verdaccio/store@6.0.0-6-next.18
17
+
18
+ ## 6.0.0-6-next.22
19
+
20
+ ### Major Changes
21
+
22
+ - 000d4374: feat: upgrade to material ui 5
23
+
24
+ ### Minor Changes
25
+
26
+ - 24b9be02: refactor: improve docker image build with strict dependencies and prod build
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies [a828271d]
31
+ - Updated dependencies [24b9be02]
32
+ - Updated dependencies [e75c0a3b]
33
+ - Updated dependencies [b13a3fef]
34
+ - @verdaccio/tarball@11.0.0-6-next.11
35
+ - @verdaccio/store@6.0.0-6-next.17
36
+ - @verdaccio/utils@6.0.0-6-next.10
37
+ - @verdaccio/core@6.0.0-6-next.4
38
+ - @verdaccio/middleware@6.0.0-6-next.16
39
+ - @verdaccio/logger@6.0.0-6-next.8
40
+ - @verdaccio/auth@6.0.0-6-next.16
41
+ - @verdaccio/config@6.0.0-6-next.12
42
+ - @verdaccio/url@11.0.0-6-next.8
43
+ - @verdaccio/loaders@6.0.0-6-next.8
44
+ - @verdaccio/readme@11.0.0-6-next.4
45
+
46
+ ## 6.0.0-6-next.21
47
+
48
+ ### Minor Changes
49
+
50
+ - f86c31ed: feat: migrate web sidebar endpoint to fastify
51
+
52
+ reuse utils methods between packages
53
+
54
+ - 20c9e43e: dist tags Implementation on Fastify
55
+
56
+ ### Patch Changes
57
+
58
+ - Updated dependencies [f86c31ed]
59
+ - Updated dependencies [20c9e43e]
60
+ - @verdaccio/store@6.0.0-6-next.16
61
+ - @verdaccio/utils@6.0.0-6-next.9
62
+ - @verdaccio/auth@6.0.0-6-next.15
63
+ - @verdaccio/config@6.0.0-6-next.11
64
+ - @verdaccio/tarball@11.0.0-6-next.10
65
+ - @verdaccio/middleware@6.0.0-6-next.15
66
+ - @verdaccio/loaders@6.0.0-6-next.7
67
+
68
+ ## 6.0.0-6-next.20
69
+
70
+ ### Patch Changes
71
+
72
+ - Updated dependencies [6c1eb021]
73
+ - @verdaccio/core@6.0.0-6-next.3
74
+ - @verdaccio/logger@6.0.0-6-next.7
75
+ - @verdaccio/auth@6.0.0-6-next.14
76
+ - @verdaccio/config@6.0.0-6-next.10
77
+ - @verdaccio/tarball@11.0.0-6-next.9
78
+ - @verdaccio/url@11.0.0-6-next.7
79
+ - @verdaccio/loaders@6.0.0-6-next.7
80
+ - @verdaccio/middleware@6.0.0-6-next.14
81
+ - @verdaccio/store@6.0.0-6-next.15
82
+ - @verdaccio/utils@6.0.0-6-next.8
83
+
3
84
  ## 6.0.0-6-next.19
4
85
 
5
86
  ### Major Changes
@@ -0,0 +1,2 @@
1
+ declare const _default: (auth: any, storage: any, config: any) => import("express-serve-static-core").Router;
2
+ export default _default;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _express = require("express");
9
+
10
+ var _webUtils = require("../utils/web-utils");
11
+
12
+ var _package = _interopRequireDefault(require("./package"));
13
+
14
+ var _readme = _interopRequireDefault(require("./readme"));
15
+
16
+ var _search = _interopRequireDefault(require("./search"));
17
+
18
+ var _sidebar = _interopRequireDefault(require("./sidebar"));
19
+
20
+ var _user = _interopRequireDefault(require("./user"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ var _default = (auth, storage, config) => {
25
+ const route = (0, _express.Router)();
26
+ /* eslint new-cap: 0 */
27
+
28
+ route.use('/data/', (0, _package.default)(storage, auth, config));
29
+ route.use('/data/', (0, _search.default)(storage, auth));
30
+ route.use('/data/', (0, _sidebar.default)(config, storage, auth));
31
+ route.use('/data/', (0, _readme.default)(storage, auth));
32
+
33
+ if ((0, _webUtils.hasLogin)(config)) {
34
+ route.use('/sec/', (0, _user.default)(auth, config));
35
+ }
36
+
37
+ return route;
38
+ };
39
+
40
+ exports.default = _default;
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/api/index.ts"],"names":["auth","storage","config","route","use"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;eAEe,CAACA,IAAD,EAAOC,OAAP,EAAgBC,MAAhB,KAA2B;AACxC,QAAMC,KAAK,GAAG,sBAAd;AAAwB;;AACxBA,EAAAA,KAAK,CAACC,GAAN,CAAU,QAAV,EAAoB,sBAAWH,OAAX,EAAoBD,IAApB,EAA0BE,MAA1B,CAApB;AACAC,EAAAA,KAAK,CAACC,GAAN,CAAU,QAAV,EAAoB,qBAAOH,OAAP,EAAgBD,IAAhB,CAApB;AACAG,EAAAA,KAAK,CAACC,GAAN,CAAU,QAAV,EAAoB,sBAAQF,MAAR,EAAgBD,OAAhB,EAAyBD,IAAzB,CAApB;AACAG,EAAAA,KAAK,CAACC,GAAN,CAAU,QAAV,EAAoB,qBAAOH,OAAP,EAAgBD,IAAhB,CAApB;;AACA,MAAI,wBAASE,MAAT,CAAJ,EAAsB;AACpBC,IAAAA,KAAK,CAACC,GAAN,CAAU,OAAV,EAAmB,mBAAKJ,IAAL,EAAWE,MAAX,CAAnB;AACD;;AACD,SAAOC,KAAP;AACD,C","sourcesContent":["import { Router } from 'express';\n\nimport { hasLogin } from '../utils/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('/data/', packageApi(storage, auth, config));\n route.use('/data/', search(storage, auth));\n route.use('/data/', sidebar(config, storage, auth));\n route.use('/data/', readme(storage, auth));\n if (hasLogin(config)) {\n route.use('/sec/', user(auth, config));\n }\n return route;\n};\n"],"file":"index.js"}
@@ -1,6 +1,6 @@
1
- import { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '@verdaccio/middleware';
2
1
  import { Router } from 'express';
3
2
  import { IAuth } from '@verdaccio/auth';
3
+ import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '@verdaccio/middleware';
4
4
  import { Storage } from '@verdaccio/store';
5
5
  import { Config, Package } from '@verdaccio/types';
6
6
  import { AuthorAvatar } from '../utils/web-utils';
@@ -11,5 +11,5 @@ export declare type PackageExt = Package & {
11
11
  tarball: string;
12
12
  };
13
13
  };
14
- declare function addPackageWebApi(route: Router, storage: Storage, auth: IAuth, config: Config): void;
14
+ declare function addPackageWebApi(storage: Storage, auth: IAuth, config: Config): Router;
15
15
  export default addPackageWebApi;
@@ -3,50 +3,44 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "$RequestExtend", {
6
+ Object.defineProperty(exports, "$NextFunctionVer", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _middleware.$RequestExtend;
9
+ return _middleware.$NextFunctionVer;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "$ResponseExtend", {
12
+ Object.defineProperty(exports, "$RequestExtend", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _middleware.$ResponseExtend;
15
+ return _middleware.$RequestExtend;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "$NextFunctionVer", {
18
+ Object.defineProperty(exports, "$ResponseExtend", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _middleware.$NextFunctionVer;
21
+ return _middleware.$ResponseExtend;
22
22
  }
23
23
  });
24
24
  exports.default = void 0;
25
25
 
26
26
  var _debug = _interopRequireDefault(require("debug"));
27
27
 
28
+ var _express = require("express");
29
+
28
30
  var _lodash = _interopRequireDefault(require("lodash"));
29
31
 
30
- var _utils = require("@verdaccio/utils");
32
+ var _logger = require("@verdaccio/logger");
31
33
 
32
34
  var _middleware = require("@verdaccio/middleware");
33
35
 
34
- var _logger = require("@verdaccio/logger");
35
-
36
36
  var _tarball = require("@verdaccio/tarball");
37
37
 
38
- var _user = require("../utils/user");
38
+ var _utils = require("@verdaccio/utils");
39
39
 
40
40
  var _webUtils = require("../utils/web-utils");
41
41
 
42
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
43
 
44
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
45
-
46
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
47
-
48
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
49
-
50
44
  // Was required by other packages
51
45
  const getOrder = (order = 'asc') => {
52
46
  return order === 'asc';
@@ -54,10 +48,13 @@ const getOrder = (order = 'asc') => {
54
48
 
55
49
  const debug = (0, _debug.default)('verdaccio:web:api:package');
56
50
 
57
- function addPackageWebApi(route, storage, auth, config) {
58
- var _ref, _config$web;
51
+ function addPackageWebApi(storage, auth, config) {
52
+ var _config$web;
59
53
 
60
- const isLoginEnabled = (_ref = (config === null || config === void 0 ? void 0 : (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.login) === true) !== null && _ref !== void 0 ? _ref : true; // eslint-disable-next-line @typescript-eslint/no-unused-vars
54
+ const isLoginEnabled = (config === null || config === void 0 ? void 0 : (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.login) === true ?? true;
55
+ const pkgRouter = (0, _express.Router)();
56
+ /* eslint new-cap: 0 */
57
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
61
58
 
62
59
  const anonymousRemoteUser = {
63
60
  name: undefined,
@@ -86,7 +83,7 @@ function addPackageWebApi(route, storage, auth, config) {
86
83
  }); // Get list of all visible package
87
84
 
88
85
 
89
- route.get('/packages', function (req, res, next) {
86
+ pkgRouter.get('/packages', function (req, res, next) {
90
87
  debug('hit package web api %o');
91
88
  storage.getLocalDatabase(async function (err, packages) {
92
89
  var _config$web2;
@@ -101,20 +98,24 @@ function addPackageWebApi(route, storage, auth, config) {
101
98
  debug('process packages %o', packagesToProcess);
102
99
 
103
100
  for (const pkg of packagesToProcess) {
104
- const pkgCopy = _objectSpread({}, pkg);
105
-
101
+ const pkgCopy = { ...pkg
102
+ };
106
103
  pkgCopy.author = (0, _utils.formatAuthor)(pkg.author);
107
104
 
108
105
  try {
109
106
  if (await checkAllow(pkg.name, req.remote_user)) {
110
107
  if (config.web) {
111
- pkgCopy.author.avatar = (0, _user.generateGravatarUrl)(pkgCopy.author.email, config.web.gravatar);
108
+ pkgCopy.author.avatar = (0, _utils.generateGravatarUrl)(pkgCopy.author.email, config.web.gravatar);
112
109
  } // convert any remote dist to a local reference
113
110
  // eg: if the dist points to npmjs, switch to localhost:4873/prefix/etc.tar.gz
114
111
 
115
112
 
116
113
  if (!_lodash.default.isNil(pkgCopy.dist) && !_lodash.default.isNull(pkgCopy.dist.tarball)) {
117
- pkgCopy.dist.tarball = (0, _tarball.getLocalRegistryTarballUri)(pkgCopy.dist.tarball, pkg.name, req, config === null || config === void 0 ? void 0 : config.url_prefix);
114
+ pkgCopy.dist.tarball = (0, _tarball.getLocalRegistryTarballUri)(pkgCopy.dist.tarball, pkg.name, {
115
+ protocol: req.protocol,
116
+ headers: req.headers,
117
+ host: req.hostname
118
+ }, config === null || config === void 0 ? void 0 : config.url_prefix);
118
119
  }
119
120
 
120
121
  permissions.push(pkgCopy);
@@ -144,6 +145,7 @@ function addPackageWebApi(route, storage, auth, config) {
144
145
  }
145
146
  });
146
147
  });
148
+ return pkgRouter;
147
149
  }
148
150
 
149
151
  var _default = addPackageWebApi;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/api/package.ts"],"names":["getOrder","order","debug","addPackageWebApi","route","storage","auth","config","isLoginEnabled","web","login","anonymousRemoteUser","name","undefined","real_groups","groups","checkAllow","remoteUser","Promise","resolve","reject","allow_access","packageName","err","allowed","get","req","res","next","getLocalDatabase","packages","processPackages","permissions","packagesToProcess","slice","pkg","pkgCopy","author","remote_user","avatar","email","gravatar","_","isNil","dist","isNull","tarball","url_prefix","push","logger","error","sort_packages"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\nimport { formatAuthor } from '@verdaccio/utils';\n\nimport { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '@verdaccio/middleware';\nimport { logger } from '@verdaccio/logger';\nimport { Router } from 'express';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { Config, Package, RemoteUser } from '@verdaccio/types';\n\nimport { getLocalRegistryTarballUri } from '@verdaccio/tarball';\nimport { generateGravatarUrl } from '../utils/user';\nimport { AuthorAvatar, sortByName } from '../utils/web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst getOrder = (order = 'asc') => {\n return order === 'asc';\n};\n\nexport type PackageExt = Package & { author: AuthorAvatar; dist?: { tarball: string } };\n\nconst debug = buildDebug('verdaccio:web:api:package');\n\nfunction addPackageWebApi(route: Router, storage: Storage, auth: IAuth, config: Config): void {\n const isLoginEnabled = config?.web?.login === true ?? true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const anonymousRemoteUser: RemoteUser = {\n name: undefined,\n real_groups: [],\n groups: [],\n };\n\n debug('initialized package web api');\n const checkAllow = (name: string, remoteUser: RemoteUser): Promise<boolean> =>\n new Promise((resolve, reject): void => {\n debug('is login disabled %o', isLoginEnabled);\n // FIXME: this logic does not work, review\n // const remoteUserAccess = !isLoginEnabled ? anonymousRemoteUser : remoteUser;\n try {\n auth.allow_access({ packageName: name }, remoteUser, (err, allowed): void => {\n if (err) {\n resolve(false);\n }\n resolve(allowed);\n });\n } catch (err: any) {\n reject(err);\n }\n });\n\n // Get list of all visible package\n route.get(\n '/packages',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n debug('hit package web api %o');\n storage.getLocalDatabase(async function (err, packages): Promise<void> {\n if (err) {\n throw err;\n }\n async function processPackages(packages: PackageExt[] = []): Promise<PackageExt[]> {\n const permissions: PackageExt[] = [];\n const packagesToProcess = packages.slice();\n debug('process packages %o', packagesToProcess);\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 pkgCopy.author.avatar = generateGravatarUrl(\n pkgCopy.author.email,\n config.web.gravatar\n );\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 req,\n config?.url_prefix\n );\n }\n permissions.push(pkgCopy);\n }\n } catch (err: any) {\n debug('process packages error %o', err);\n logger.logger.error(\n { name: pkg.name, error: err },\n 'permission process for @{name} has failed: @{error}'\n );\n throw err;\n }\n }\n\n return permissions;\n }\n\n const order = getOrder(config?.web?.sort_packages);\n debug('order %o', order);\n\n try {\n next(sortByName(await processPackages(packages), order));\n } catch (error: any) {\n next(error);\n }\n });\n }\n );\n}\n\nexport default addPackageWebApi;\n"],"file":"package.js"}
1
+ {"version":3,"sources":["../../src/api/package.ts"],"names":["getOrder","order","debug","addPackageWebApi","storage","auth","config","isLoginEnabled","web","login","pkgRouter","anonymousRemoteUser","name","undefined","real_groups","groups","checkAllow","remoteUser","Promise","resolve","reject","allow_access","packageName","err","allowed","get","req","res","next","getLocalDatabase","packages","processPackages","permissions","packagesToProcess","slice","pkg","pkgCopy","author","remote_user","avatar","email","gravatar","_","isNil","dist","isNull","tarball","protocol","headers","host","hostname","url_prefix","push","logger","error","sort_packages"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\nimport _ from 'lodash';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { logger } from '@verdaccio/logger';\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { getLocalRegistryTarballUri } from '@verdaccio/tarball';\nimport { Config, Package, RemoteUser } from '@verdaccio/types';\nimport { formatAuthor, generateGravatarUrl } from '@verdaccio/utils';\n\nimport { AuthorAvatar, sortByName } from '../utils/web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nconst getOrder = (order = 'asc') => {\n return order === 'asc';\n};\n\nexport type PackageExt = Package & { author: AuthorAvatar; dist?: { tarball: string } };\n\nconst debug = buildDebug('verdaccio:web:api:package');\n\nfunction addPackageWebApi(storage: Storage, auth: IAuth, config: Config): Router {\n const isLoginEnabled = config?.web?.login === true ?? true;\n const pkgRouter = Router(); /* eslint new-cap: 0 */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const anonymousRemoteUser: RemoteUser = {\n name: undefined,\n real_groups: [],\n groups: [],\n };\n\n debug('initialized package web api');\n const checkAllow = (name: string, remoteUser: RemoteUser): Promise<boolean> =>\n new Promise((resolve, reject): void => {\n debug('is login disabled %o', isLoginEnabled);\n // FIXME: this logic does not work, review\n // const remoteUserAccess = !isLoginEnabled ? anonymousRemoteUser : remoteUser;\n try {\n auth.allow_access({ packageName: name }, remoteUser, (err, allowed): void => {\n if (err) {\n resolve(false);\n }\n resolve(allowed);\n });\n } catch (err: any) {\n reject(err);\n }\n });\n\n // Get list of all visible package\n pkgRouter.get(\n '/packages',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n debug('hit package web api %o');\n storage.getLocalDatabase(async function (err, packages): Promise<void> {\n if (err) {\n throw err;\n }\n async function processPackages(packages: PackageExt[] = []): Promise<PackageExt[]> {\n const permissions: PackageExt[] = [];\n const packagesToProcess = packages.slice();\n debug('process packages %o', packagesToProcess);\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 pkgCopy.author.avatar = generateGravatarUrl(\n pkgCopy.author.email,\n config.web.gravatar\n );\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 { protocol: req.protocol, headers: req.headers as any, host: req.hostname },\n config?.url_prefix\n );\n }\n permissions.push(pkgCopy);\n }\n } catch (err: any) {\n debug('process packages error %o', err);\n logger.logger.error(\n { name: pkg.name, error: err },\n 'permission process for @{name} has failed: @{error}'\n );\n throw err;\n }\n }\n\n return permissions;\n }\n\n const order = getOrder(config?.web?.sort_packages);\n debug('order %o', order);\n\n try {\n next(sortByName(await processPackages(packages), order));\n } catch (error: any) {\n next(error);\n }\n });\n }\n );\n return pkgRouter;\n}\n\nexport default addPackageWebApi;\n"],"file":"package.js"}
@@ -1,6 +1,6 @@
1
- import { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '@verdaccio/middleware';
2
1
  import { Router } from 'express';
3
2
  import { IAuth } from '@verdaccio/auth';
3
+ import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '@verdaccio/middleware';
4
4
  import { Storage } from '@verdaccio/store';
5
5
  import { Package } from '@verdaccio/types';
6
6
  import { AuthorAvatar } from '../utils/web-utils';
@@ -12,5 +12,5 @@ export declare type PackageExt = Package & {
12
12
  };
13
13
  };
14
14
  export declare const NOT_README_FOUND = "ERROR: No README data found!";
15
- declare function addReadmeWebApi(route: Router, storage: Storage, auth: IAuth): void;
15
+ declare function addReadmeWebApi(storage: Storage, auth: IAuth): Router;
16
16
  export default addReadmeWebApi;
@@ -3,33 +3,35 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "$RequestExtend", {
6
+ Object.defineProperty(exports, "$NextFunctionVer", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _middleware.$RequestExtend;
9
+ return _middleware.$NextFunctionVer;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "$ResponseExtend", {
12
+ Object.defineProperty(exports, "$RequestExtend", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _middleware.$ResponseExtend;
15
+ return _middleware.$RequestExtend;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "$NextFunctionVer", {
18
+ Object.defineProperty(exports, "$ResponseExtend", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _middleware.$NextFunctionVer;
21
+ return _middleware.$ResponseExtend;
22
22
  }
23
23
  });
24
24
  exports.default = exports.NOT_README_FOUND = void 0;
25
25
 
26
26
  var _debug = _interopRequireDefault(require("debug"));
27
27
 
28
- var _readme = _interopRequireDefault(require("@verdaccio/readme"));
28
+ var _express = require("express");
29
+
30
+ var _core = require("@verdaccio/core");
29
31
 
30
32
  var _middleware = require("@verdaccio/middleware");
31
33
 
32
- var _core = require("@verdaccio/core");
34
+ var _readme = _interopRequireDefault(require("@verdaccio/readme"));
33
35
 
34
36
  var _webUtils = require("../utils/web-utils");
35
37
 
@@ -39,10 +41,13 @@ const debug = (0, _debug.default)('verdaccio:web:api:readme');
39
41
  const NOT_README_FOUND = 'ERROR: No README data found!';
40
42
  exports.NOT_README_FOUND = NOT_README_FOUND;
41
43
 
42
- function addReadmeWebApi(route, storage, auth) {
44
+ function addReadmeWebApi(storage, auth) {
43
45
  debug('initialized readme web api');
44
46
  const can = (0, _middleware.allow)(auth);
45
- route.get('/package/readme/(@:scope/)?:package/:version?', can('access'), function (req, res, next) {
47
+ const pkgRouter = (0, _express.Router)();
48
+ /* eslint new-cap: 0 */
49
+
50
+ pkgRouter.get('/package/readme/(@:scope/)?:package/:version?', can('access'), function (req, res, next) {
46
51
  debug('readme hit');
47
52
  const packageName = req.params.scope ? (0, _webUtils.addScope)(req.params.scope, req.params.package) : req.params.package;
48
53
  debug('readme name %o', packageName); // @ts-ignore
@@ -68,6 +73,7 @@ function addReadmeWebApi(route, storage, auth) {
68
73
  }
69
74
  });
70
75
  });
76
+ return pkgRouter;
71
77
  }
72
78
 
73
79
  var _default = addReadmeWebApi;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/api/readme.ts"],"names":["debug","NOT_README_FOUND","addReadmeWebApi","route","storage","auth","can","get","req","res","next","packageName","params","scope","package","getPackage","name","uplinksLook","callback","err","info","set","HEADER_TYPE","CONTENT_TYPE","HEADERS","TEXT_PLAIN_UTF8","readme"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAMA;;;;AAMA,MAAMA,KAAK,GAAG,oBAAW,0BAAX,CAAd;AAEO,MAAMC,gBAAgB,GAAG,8BAAzB;;;AAEP,SAASC,eAAT,CAAyBC,KAAzB,EAAwCC,OAAxC,EAA0DC,IAA1D,EAA6E;AAC3EL,EAAAA,KAAK,CAAC,4BAAD,CAAL;AACA,QAAMM,GAAG,GAAG,uBAAMD,IAAN,CAAZ;AAEAF,EAAAA,KAAK,CAACI,GAAN,CACE,+CADF,EAEED,GAAG,CAAC,QAAD,CAFL,EAGE,UAAUE,GAAV,EAA+BC,GAA/B,EAAqDC,IAArD,EAAmF;AACjFV,IAAAA,KAAK,CAAC,YAAD,CAAL;AACA,UAAMW,WAAW,GAAGH,GAAG,CAACI,MAAJ,CAAWC,KAAX,GAChB,wBAASL,GAAG,CAACI,MAAJ,CAAWC,KAApB,EAA2BL,GAAG,CAACI,MAAJ,CAAWE,OAAtC,CADgB,GAEhBN,GAAG,CAACI,MAAJ,CAAWE,OAFf;AAGAd,IAAAA,KAAK,CAAC,gBAAD,EAAmBW,WAAnB,CAAL,CALiF,CAOjF;;AACAP,IAAAA,OAAO,CAACW,UAAR,CAAmB;AACjBC,MAAAA,IAAI,EAAEL,WADW;AAEjBM,MAAAA,WAAW,EAAE,IAFI;AAGjBT,MAAAA,GAHiB;AAIjBU,MAAAA,QAAQ,EAAE,UAAUC,GAAV,EAAeC,IAAf,EAA2B;AACnCpB,QAAAA,KAAK,CAAC,eAAD,EAAkBoB,IAAlB,aAAkBA,IAAlB,uBAAkBA,IAAI,CAAEJ,IAAxB,CAAL;;AACA,YAAIG,GAAJ,EAAS;AACP,iBAAOT,IAAI,CAACS,GAAD,CAAX;AACD;;AAEDV,QAAAA,GAAG,CAACY,GAAJ,CAAQC,kBAAYC,YAApB,EAAkCC,cAAQC,eAA1C;;AACA,YAAI;AACFf,UAAAA,IAAI,CAAC,2BAAYU,IAAI,CAACJ,IAAjB,EAAuBI,IAAI,CAACM,MAA5B,CAAD,CAAJ;AACD,SAFD,CAEE,MAAM;AACNhB,UAAAA,IAAI,CAAC,qBAAeT,gBAAf,CAAD,CAAJ;AACD;AACF;AAhBgB,KAAnB;AAkBD,GA7BH;AA+BD;;eAEcC,e","sourcesContent":["import buildDebug from 'debug';\nimport sanitizyReadme from '@verdaccio/readme';\n\nimport { allow, $RequestExtend, $ResponseExtend, $NextFunctionVer } from '@verdaccio/middleware';\nimport { HEADER_TYPE, HEADERS } from '@verdaccio/core';\nimport { Router } from 'express';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nimport { addScope, AuthorAvatar, parseReadme } from '../utils/web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nexport type PackageExt = Package & { author: AuthorAvatar; dist?: { tarball: string } };\n\nconst debug = buildDebug('verdaccio:web:api:readme');\n\nexport const NOT_README_FOUND = 'ERROR: No README data found!';\n\nfunction addReadmeWebApi(route: Router, storage: Storage, auth: IAuth): void {\n debug('initialized readme web api');\n const can = allow(auth);\n\n route.get(\n '/package/readme/(@:scope/)?:package/:version?',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n debug('readme hit');\n const packageName = req.params.scope\n ? addScope(req.params.scope, req.params.package)\n : req.params.package;\n debug('readme name %o', packageName);\n\n // @ts-ignore\n storage.getPackage({\n name: packageName,\n uplinksLook: true,\n req,\n callback: function (err, info): void {\n debug('readme plg %o', info?.name);\n if (err) {\n return next(err);\n }\n\n res.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8);\n try {\n next(parseReadme(info.name, info.readme));\n } catch {\n next(sanitizyReadme(NOT_README_FOUND));\n }\n },\n });\n }\n );\n}\n\nexport default addReadmeWebApi;\n"],"file":"readme.js"}
1
+ {"version":3,"sources":["../../src/api/readme.ts"],"names":["debug","NOT_README_FOUND","addReadmeWebApi","storage","auth","can","pkgRouter","get","req","res","next","packageName","params","scope","package","getPackage","name","uplinksLook","callback","err","info","set","HEADER_TYPE","CONTENT_TYPE","HEADERS","TEXT_PLAIN_UTF8","readme"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAGA;;AACA;;AACA;;AAIA;;;;AAMA,MAAMA,KAAK,GAAG,oBAAW,0BAAX,CAAd;AAEO,MAAMC,gBAAgB,GAAG,8BAAzB;;;AAEP,SAASC,eAAT,CAAyBC,OAAzB,EAA2CC,IAA3C,EAAgE;AAC9DJ,EAAAA,KAAK,CAAC,4BAAD,CAAL;AACA,QAAMK,GAAG,GAAG,uBAAMD,IAAN,CAAZ;AACA,QAAME,SAAS,GAAG,sBAAlB;AAA4B;;AAE5BA,EAAAA,SAAS,CAACC,GAAV,CACE,+CADF,EAEEF,GAAG,CAAC,QAAD,CAFL,EAGE,UAAUG,GAAV,EAA+BC,GAA/B,EAAqDC,IAArD,EAAmF;AACjFV,IAAAA,KAAK,CAAC,YAAD,CAAL;AACA,UAAMW,WAAW,GAAGH,GAAG,CAACI,MAAJ,CAAWC,KAAX,GAChB,wBAASL,GAAG,CAACI,MAAJ,CAAWC,KAApB,EAA2BL,GAAG,CAACI,MAAJ,CAAWE,OAAtC,CADgB,GAEhBN,GAAG,CAACI,MAAJ,CAAWE,OAFf;AAGAd,IAAAA,KAAK,CAAC,gBAAD,EAAmBW,WAAnB,CAAL,CALiF,CAOjF;;AACAR,IAAAA,OAAO,CAACY,UAAR,CAAmB;AACjBC,MAAAA,IAAI,EAAEL,WADW;AAEjBM,MAAAA,WAAW,EAAE,IAFI;AAGjBT,MAAAA,GAHiB;AAIjBU,MAAAA,QAAQ,EAAE,UAAUC,GAAV,EAAeC,IAAf,EAA2B;AACnCpB,QAAAA,KAAK,CAAC,eAAD,EAAkBoB,IAAlB,aAAkBA,IAAlB,uBAAkBA,IAAI,CAAEJ,IAAxB,CAAL;;AACA,YAAIG,GAAJ,EAAS;AACP,iBAAOT,IAAI,CAACS,GAAD,CAAX;AACD;;AAEDV,QAAAA,GAAG,CAACY,GAAJ,CAAQC,kBAAYC,YAApB,EAAkCC,cAAQC,eAA1C;;AACA,YAAI;AACFf,UAAAA,IAAI,CAAC,2BAAYU,IAAI,CAACJ,IAAjB,EAAuBI,IAAI,CAACM,MAA5B,CAAD,CAAJ;AACD,SAFD,CAEE,MAAM;AACNhB,UAAAA,IAAI,CAAC,qBAAeT,gBAAf,CAAD,CAAJ;AACD;AACF;AAhBgB,KAAnB;AAkBD,GA7BH;AA+BA,SAAOK,SAAP;AACD;;eAEcJ,e","sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { HEADERS, HEADER_TYPE } from '@verdaccio/core';\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend, allow } from '@verdaccio/middleware';\nimport sanitizyReadme from '@verdaccio/readme';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nimport { AuthorAvatar, addScope, parseReadme } from '../utils/web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\nexport type PackageExt = Package & { author: AuthorAvatar; dist?: { tarball: string } };\n\nconst debug = buildDebug('verdaccio:web:api:readme');\n\nexport const NOT_README_FOUND = 'ERROR: No README data found!';\n\nfunction addReadmeWebApi(storage: Storage, auth: IAuth): Router {\n debug('initialized readme web api');\n const can = allow(auth);\n const pkgRouter = Router(); /* eslint new-cap: 0 */\n\n pkgRouter.get(\n '/package/readme/(@:scope/)?:package/:version?',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n debug('readme hit');\n const packageName = req.params.scope\n ? addScope(req.params.scope, req.params.package)\n : req.params.package;\n debug('readme name %o', packageName);\n\n // @ts-ignore\n storage.getPackage({\n name: packageName,\n uplinksLook: true,\n req,\n callback: function (err, info): void {\n debug('readme plg %o', info?.name);\n if (err) {\n return next(err);\n }\n\n res.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8);\n try {\n next(parseReadme(info.name, info.readme));\n } catch {\n next(sanitizyReadme(NOT_README_FOUND));\n }\n },\n });\n }\n );\n return pkgRouter;\n}\n\nexport default addReadmeWebApi;\n"],"file":"readme.js"}
@@ -1,5 +1,5 @@
1
1
  import { Router } from 'express';
2
2
  import { IAuth } from '@verdaccio/auth';
3
3
  import { Storage } from '@verdaccio/store';
4
- declare function addSearchWebApi(route: Router, storage: Storage, auth: IAuth): void;
4
+ declare function addSearchWebApi(storage: Storage, auth: IAuth): Router;
5
5
  export default addSearchWebApi;
@@ -7,15 +7,20 @@ exports.default = void 0;
7
7
 
8
8
  var _debug = _interopRequireDefault(require("debug"));
9
9
 
10
- var _store = require("@verdaccio/store");
10
+ var _express = require("express");
11
11
 
12
12
  var _core = require("@verdaccio/core");
13
13
 
14
+ var _store = require("@verdaccio/store");
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
 
16
18
  const debug = (0, _debug.default)('verdaccio:web:api:search');
17
19
 
18
- function addSearchWebApi(route, storage, auth) {
20
+ function addSearchWebApi(storage, auth) {
21
+ const router = (0, _express.Router)();
22
+ /* eslint new-cap: 0 */
23
+
19
24
  const getPackageInfo = async function (name, remoteUser) {
20
25
  return new Promise((resolve, reject) => {
21
26
  debug('searching for %o', name);
@@ -55,7 +60,7 @@ function addSearchWebApi(route, storage, auth) {
55
60
  });
56
61
  };
57
62
 
58
- route.get('/search/:anything', async function (req, res, next) {
63
+ router.get('/search/:anything', async function (req, res, next) {
59
64
  const results = _store.SearchInstance.query(req.params.anything);
60
65
 
61
66
  debug('search results %o', results);
@@ -78,6 +83,7 @@ function addSearchWebApi(route, storage, auth) {
78
83
  next([]);
79
84
  }
80
85
  });
86
+ return router;
81
87
  }
82
88
 
83
89
  var _default = addSearchWebApi;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/api/search.ts"],"names":["debug","addSearchWebApi","route","storage","auth","getPackageInfo","name","remoteUser","Promise","resolve","reject","getPackage","uplinksLook","callback","err","pkg","message","allow_access","packageName","allowed","versions","DIST_TAGS","latest","get","req","res","next","results","SearchInstance","query","params","anything","length","packages","result","ref","remote_user","push"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { SearchInstance } from '@verdaccio/store';\nimport { DIST_TAGS } from '@verdaccio/core';\nimport { Router } from 'express';\nimport { Package } from '@verdaccio/types';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { $ResponseExtend, $RequestExtend, $NextFunctionVer } from './package';\n\nconst debug = buildDebug('verdaccio:web:api:search');\n\nfunction addSearchWebApi(route: Router, storage: Storage, auth: IAuth): void {\n const getPackageInfo = async function (name, remoteUser): Promise<any> {\n return new Promise((resolve, reject) => {\n debug('searching for %o', name);\n try {\n // @ts-ignore\n storage.getPackage({\n name,\n uplinksLook: false,\n callback: (err, pkg: Package): void => {\n debug('callback get package err %o', err?.message);\n if (!err && pkg) {\n debug('valid package %o', pkg?.name);\n auth.allow_access(\n { packageName: pkg.name },\n remoteUser,\n function (err, allowed): void {\n debug('is allowed %o', allowed);\n if (err || !allowed) {\n debug('deny access');\n reject(err);\n return;\n }\n debug('access succeed');\n resolve(pkg.versions[pkg[DIST_TAGS].latest]);\n }\n );\n } else {\n reject(err);\n }\n },\n });\n } catch (err: any) {\n reject(err);\n }\n });\n };\n\n route.get(\n '/search/:anything',\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n const results = SearchInstance.query(req.params.anything);\n debug('search results %o', results);\n if (results.length > 0) {\n let packages: Package[] = [];\n for (let result of results) {\n try {\n const pkg = await getPackageInfo(result.ref, req.remote_user);\n debug('package found %o', result.ref);\n packages.push(pkg);\n } catch (err: any) {\n debug('search for %o failed err %o', result.ref, err?.message);\n }\n }\n next(packages);\n } else {\n next([]);\n }\n }\n );\n}\n\nexport default addSearchWebApi;\n"],"file":"search.js"}
1
+ {"version":3,"sources":["../../src/api/search.ts"],"names":["debug","addSearchWebApi","storage","auth","router","getPackageInfo","name","remoteUser","Promise","resolve","reject","getPackage","uplinksLook","callback","err","pkg","message","allow_access","packageName","allowed","versions","DIST_TAGS","latest","get","req","res","next","results","SearchInstance","query","params","anything","length","packages","result","ref","remote_user","push"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { DIST_TAGS } from '@verdaccio/core';\nimport { SearchInstance } from '@verdaccio/store';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from './package';\n\nconst debug = buildDebug('verdaccio:web:api:search');\n\nfunction addSearchWebApi(storage: Storage, auth: IAuth): Router {\n const router = Router(); /* eslint new-cap: 0 */\n const getPackageInfo = async function (name, remoteUser): Promise<any> {\n return new Promise((resolve, reject) => {\n debug('searching for %o', name);\n try {\n // @ts-ignore\n storage.getPackage({\n name,\n uplinksLook: false,\n callback: (err, pkg: Package): void => {\n debug('callback get package err %o', err?.message);\n if (!err && pkg) {\n debug('valid package %o', pkg?.name);\n auth.allow_access(\n { packageName: pkg.name },\n remoteUser,\n function (err, allowed): void {\n debug('is allowed %o', allowed);\n if (err || !allowed) {\n debug('deny access');\n reject(err);\n return;\n }\n debug('access succeed');\n resolve(pkg.versions[pkg[DIST_TAGS].latest]);\n }\n );\n } else {\n reject(err);\n }\n },\n });\n } catch (err: any) {\n reject(err);\n }\n });\n };\n\n router.get(\n '/search/:anything',\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n const results = SearchInstance.query(req.params.anything);\n debug('search results %o', results);\n if (results.length > 0) {\n let packages: Package[] = [];\n for (let result of results) {\n try {\n const pkg = await getPackageInfo(result.ref, req.remote_user);\n debug('package found %o', result.ref);\n packages.push(pkg);\n } catch (err: any) {\n debug('search for %o failed err %o', result.ref, err?.message);\n }\n }\n next(packages);\n } else {\n next([]);\n }\n }\n );\n return router;\n}\n\nexport default addSearchWebApi;\n"],"file":"search.js"}
@@ -1,6 +1,6 @@
1
- import { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '@verdaccio/middleware';
2
1
  import { Router } from 'express';
3
2
  import { IAuth } from '@verdaccio/auth';
3
+ import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '@verdaccio/middleware';
4
4
  import { Storage } from '@verdaccio/store';
5
5
  import { Config, Package, Version } from '@verdaccio/types';
6
6
  import { AuthorAvatar } from '../utils/web-utils';
@@ -14,5 +14,5 @@ export declare type PackageExt = Package & {
14
14
  export declare type $SidebarPackage = Package & {
15
15
  latest: Version;
16
16
  };
17
- declare function addSidebarWebApi(route: Router, config: Config, storage: Storage, auth: IAuth): void;
17
+ declare function addSidebarWebApi(config: Config, storage: Storage, auth: IAuth): Router;
18
18
  export default addSidebarWebApi;
@@ -3,31 +3,31 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "$RequestExtend", {
6
+ Object.defineProperty(exports, "$NextFunctionVer", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _middleware.$RequestExtend;
9
+ return _middleware.$NextFunctionVer;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "$ResponseExtend", {
12
+ Object.defineProperty(exports, "$RequestExtend", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _middleware.$ResponseExtend;
15
+ return _middleware.$RequestExtend;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "$NextFunctionVer", {
18
+ Object.defineProperty(exports, "$ResponseExtend", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _middleware.$NextFunctionVer;
21
+ return _middleware.$ResponseExtend;
22
22
  }
23
23
  });
24
24
  exports.default = void 0;
25
25
 
26
26
  var _debug = _interopRequireDefault(require("debug"));
27
27
 
28
- var _lodash = _interopRequireDefault(require("lodash"));
28
+ var _express = require("express");
29
29
 
30
- var _utils = require("@verdaccio/utils");
30
+ var _lodash = _interopRequireDefault(require("lodash"));
31
31
 
32
32
  var _core = require("@verdaccio/core");
33
33
 
@@ -35,17 +35,22 @@ var _middleware = require("@verdaccio/middleware");
35
35
 
36
36
  var _tarball = require("@verdaccio/tarball");
37
37
 
38
+ var _utils = require("@verdaccio/utils");
39
+
38
40
  var _webUtils = require("../utils/web-utils");
39
41
 
40
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
43
 
42
44
  const debug = (0, _debug.default)('verdaccio:web:api:sidebar');
43
45
 
44
- function addSidebarWebApi(route, config, storage, auth) {
46
+ function addSidebarWebApi(config, storage, auth) {
45
47
  debug('initialized sidebar web api');
48
+ const router = (0, _express.Router)();
49
+ /* eslint new-cap: 0 */
50
+
46
51
  const can = (0, _middleware.allow)(auth); // Get package readme
47
52
 
48
- route.get('/sidebar/(@:scope/)?:package', can('access'), function (req, res, next) {
53
+ router.get('/sidebar/(@:scope/)?:package', can('access'), function (req, res, next) {
49
54
  const packageName = req.params.scope ? (0, _webUtils.addScope)(req.params.scope, req.params.package) : req.params.package;
50
55
  storage.getPackage({
51
56
  name: packageName,
@@ -60,7 +65,11 @@ function addSidebarWebApi(route, config, storage, auth) {
60
65
 
61
66
  let sideBarInfo = _lodash.default.clone(info);
62
67
 
63
- sideBarInfo.versions = (0, _tarball.convertDistRemoteToLocalTarballUrls)(info, req, config.url_prefix).versions;
68
+ sideBarInfo.versions = (0, _tarball.convertDistRemoteToLocalTarballUrls)(info, {
69
+ protocol: req.protocol,
70
+ headers: req.headers,
71
+ host: req.hostname
72
+ }, config.url_prefix).versions;
64
73
 
65
74
  if (typeof v === 'string' && (0, _utils.isVersionValid)(info, v)) {
66
75
  sideBarInfo.latest = sideBarInfo.versions[v];
@@ -71,7 +80,7 @@ function addSidebarWebApi(route, config, storage, auth) {
71
80
  }
72
81
 
73
82
  sideBarInfo = (0, _webUtils.deleteProperties)(['readme', '_attachments', '_rev', 'name'], sideBarInfo);
74
- const authorAvatar = config.web ? (0, _webUtils.addGravatarSupport)(sideBarInfo, config.web.gravatar) : (0, _webUtils.addGravatarSupport)(sideBarInfo);
83
+ const authorAvatar = config.web ? (0, _utils.addGravatarSupport)(sideBarInfo, config.web.gravatar) : (0, _utils.addGravatarSupport)(sideBarInfo);
75
84
  next(authorAvatar);
76
85
  } else {
77
86
  res.status(_core.HTTP_STATUS.NOT_FOUND);
@@ -80,6 +89,7 @@ function addSidebarWebApi(route, config, storage, auth) {
80
89
  }
81
90
  });
82
91
  });
92
+ return router;
83
93
  }
84
94
 
85
95
  var _default = addSidebarWebApi;