@verdaccio/web 6.0.0-6-next.18 → 6.0.0-6-next.22
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/CHANGELOG.md +95 -0
- package/build/api/package.d.ts +1 -1
- package/build/api/package.js +18 -22
- package/build/api/package.js.map +1 -1
- package/build/api/readme.d.ts +1 -1
- package/build/api/readme.js +9 -9
- package/build/api/readme.js.map +1 -1
- package/build/api/search.js +3 -3
- package/build/api/search.js.map +1 -1
- package/build/api/sidebar.d.ts +1 -1
- package/build/api/sidebar.js +17 -13
- package/build/api/sidebar.js.map +1 -1
- package/build/api/user.d.ts +1 -1
- package/build/api/user.js +9 -9
- package/build/api/user.js.map +1 -1
- package/build/middleware/render-web.js +9 -9
- package/build/middleware/render-web.js.map +1 -1
- package/build/middleware/security.js +5 -5
- package/build/middleware/security.js.map +1 -1
- package/build/middleware/web-api.d.ts +1 -1
- package/build/middleware/web-api.js +6 -6
- package/build/middleware/web-api.js.map +1 -1
- package/build/renderHTML.js +16 -16
- package/build/renderHTML.js.map +1 -1
- package/build/template.js +2 -2
- package/build/template.js.map +1 -1
- package/build/utils/web-utils.d.ts +1 -2
- package/build/utils/web-utils.js +5 -71
- package/build/utils/web-utils.js.map +1 -1
- package/build/web-middleware.js.map +1 -1
- package/package.json +20 -22
- package/src/api/package.ts +6 -7
- package/src/api/readme.ts +5 -5
- package/src/api/search.ts +6 -4
- package/src/api/sidebar.ts +7 -7
- package/src/api/user.ts +9 -9
- package/src/middleware/render-web.ts +5 -4
- package/src/middleware/security.ts +1 -1
- package/src/middleware/web-api.ts +7 -6
- package/src/renderHTML.ts +5 -4
- package/src/template.ts +3 -1
- package/src/utils/web-utils.ts +3 -55
- package/src/web-middleware.ts +1 -0
- package/test/api.packages.test.ts +3 -1
- package/test/api.readme.test.ts +2 -1
- package/test/api.search.test.ts +3 -2
- package/test/api.sidebar.test.ts +2 -1
- package/test/api.user.test.ts +3 -1
- package/test/helper.ts +7 -5
- package/test/render.test.ts +3 -1
- package/test/template.test.ts +1 -0
- package/test/utils.spec.ts +1 -209
- package/build/utils/user.d.ts +0 -5
- package/build/utils/user.js +0 -34
- package/build/utils/user.js.map +0 -1
- package/src/utils/user.ts +0 -37
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,100 @@
|
|
|
1
1
|
# @verdaccio/web
|
|
2
2
|
|
|
3
|
+
## 6.0.0-6-next.22
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 000d4374: feat: upgrade to material ui 5
|
|
8
|
+
|
|
9
|
+
### Minor Changes
|
|
10
|
+
|
|
11
|
+
- 24b9be02: refactor: improve docker image build with strict dependencies and prod build
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [a828271d]
|
|
16
|
+
- Updated dependencies [24b9be02]
|
|
17
|
+
- Updated dependencies [e75c0a3b]
|
|
18
|
+
- Updated dependencies [b13a3fef]
|
|
19
|
+
- @verdaccio/tarball@11.0.0-6-next.11
|
|
20
|
+
- @verdaccio/store@6.0.0-6-next.17
|
|
21
|
+
- @verdaccio/utils@6.0.0-6-next.10
|
|
22
|
+
- @verdaccio/core@6.0.0-6-next.4
|
|
23
|
+
- @verdaccio/middleware@6.0.0-6-next.16
|
|
24
|
+
- @verdaccio/logger@6.0.0-6-next.8
|
|
25
|
+
- @verdaccio/auth@6.0.0-6-next.16
|
|
26
|
+
- @verdaccio/config@6.0.0-6-next.12
|
|
27
|
+
- @verdaccio/url@11.0.0-6-next.8
|
|
28
|
+
- @verdaccio/loaders@6.0.0-6-next.8
|
|
29
|
+
- @verdaccio/readme@11.0.0-6-next.4
|
|
30
|
+
|
|
31
|
+
## 6.0.0-6-next.21
|
|
32
|
+
|
|
33
|
+
### Minor Changes
|
|
34
|
+
|
|
35
|
+
- f86c31ed: feat: migrate web sidebar endpoint to fastify
|
|
36
|
+
|
|
37
|
+
reuse utils methods between packages
|
|
38
|
+
|
|
39
|
+
- 20c9e43e: dist tags Implementation on Fastify
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- Updated dependencies [f86c31ed]
|
|
44
|
+
- Updated dependencies [20c9e43e]
|
|
45
|
+
- @verdaccio/store@6.0.0-6-next.16
|
|
46
|
+
- @verdaccio/utils@6.0.0-6-next.9
|
|
47
|
+
- @verdaccio/auth@6.0.0-6-next.15
|
|
48
|
+
- @verdaccio/config@6.0.0-6-next.11
|
|
49
|
+
- @verdaccio/tarball@11.0.0-6-next.10
|
|
50
|
+
- @verdaccio/middleware@6.0.0-6-next.15
|
|
51
|
+
- @verdaccio/loaders@6.0.0-6-next.7
|
|
52
|
+
|
|
53
|
+
## 6.0.0-6-next.20
|
|
54
|
+
|
|
55
|
+
### Patch Changes
|
|
56
|
+
|
|
57
|
+
- Updated dependencies [6c1eb021]
|
|
58
|
+
- @verdaccio/core@6.0.0-6-next.3
|
|
59
|
+
- @verdaccio/logger@6.0.0-6-next.7
|
|
60
|
+
- @verdaccio/auth@6.0.0-6-next.14
|
|
61
|
+
- @verdaccio/config@6.0.0-6-next.10
|
|
62
|
+
- @verdaccio/tarball@11.0.0-6-next.9
|
|
63
|
+
- @verdaccio/url@11.0.0-6-next.7
|
|
64
|
+
- @verdaccio/loaders@6.0.0-6-next.7
|
|
65
|
+
- @verdaccio/middleware@6.0.0-6-next.14
|
|
66
|
+
- @verdaccio/store@6.0.0-6-next.15
|
|
67
|
+
- @verdaccio/utils@6.0.0-6-next.8
|
|
68
|
+
|
|
69
|
+
## 6.0.0-6-next.19
|
|
70
|
+
|
|
71
|
+
### Major Changes
|
|
72
|
+
|
|
73
|
+
- 794af76c: Remove Node 12 support
|
|
74
|
+
|
|
75
|
+
- We need move to the new `undici` and does not support Node.js 12
|
|
76
|
+
|
|
77
|
+
### Minor Changes
|
|
78
|
+
|
|
79
|
+
- 154b2ecd: refactor: remove @verdaccio/commons-api in favor @verdaccio/core and remove duplications
|
|
80
|
+
|
|
81
|
+
### Patch Changes
|
|
82
|
+
|
|
83
|
+
- Updated dependencies [794af76c]
|
|
84
|
+
- Updated dependencies [b702ea36]
|
|
85
|
+
- Updated dependencies [154b2ecd]
|
|
86
|
+
- @verdaccio/auth@6.0.0-6-next.13
|
|
87
|
+
- @verdaccio/config@6.0.0-6-next.9
|
|
88
|
+
- @verdaccio/core@6.0.0-6-next.2
|
|
89
|
+
- @verdaccio/readme@11.0.0-6-next.4
|
|
90
|
+
- @verdaccio/tarball@11.0.0-6-next.8
|
|
91
|
+
- @verdaccio/url@11.0.0-6-next.6
|
|
92
|
+
- @verdaccio/loaders@6.0.0-6-next.6
|
|
93
|
+
- @verdaccio/logger@6.0.0-6-next.6
|
|
94
|
+
- @verdaccio/middleware@6.0.0-6-next.13
|
|
95
|
+
- @verdaccio/store@6.0.0-6-next.14
|
|
96
|
+
- @verdaccio/utils@6.0.0-6-next.7
|
|
97
|
+
|
|
3
98
|
## 6.0.0-6-next.18
|
|
4
99
|
|
|
5
100
|
### Patch Changes
|
package/build/api/package.d.ts
CHANGED
|
@@ -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';
|
package/build/api/package.js
CHANGED
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "$
|
|
6
|
+
Object.defineProperty(exports, "$NextFunctionVer", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return _middleware.$
|
|
9
|
+
return _middleware.$NextFunctionVer;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "$
|
|
12
|
+
Object.defineProperty(exports, "$RequestExtend", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function () {
|
|
15
|
-
return _middleware.$
|
|
15
|
+
return _middleware.$RequestExtend;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
Object.defineProperty(exports, "$
|
|
18
|
+
Object.defineProperty(exports, "$ResponseExtend", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function () {
|
|
21
|
-
return _middleware.$
|
|
21
|
+
return _middleware.$ResponseExtend;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
exports.default = void 0;
|
|
@@ -27,26 +27,18 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
27
27
|
|
|
28
28
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _logger = require("@verdaccio/logger");
|
|
31
31
|
|
|
32
32
|
var _middleware = require("@verdaccio/middleware");
|
|
33
33
|
|
|
34
|
-
var _logger = require("@verdaccio/logger");
|
|
35
|
-
|
|
36
34
|
var _tarball = require("@verdaccio/tarball");
|
|
37
35
|
|
|
38
|
-
var
|
|
36
|
+
var _utils = require("@verdaccio/utils");
|
|
39
37
|
|
|
40
38
|
var _webUtils = require("../utils/web-utils");
|
|
41
39
|
|
|
42
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
43
41
|
|
|
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
42
|
// Was required by other packages
|
|
51
43
|
const getOrder = (order = 'asc') => {
|
|
52
44
|
return order === 'asc';
|
|
@@ -55,9 +47,9 @@ const getOrder = (order = 'asc') => {
|
|
|
55
47
|
const debug = (0, _debug.default)('verdaccio:web:api:package');
|
|
56
48
|
|
|
57
49
|
function addPackageWebApi(route, storage, auth, config) {
|
|
58
|
-
var
|
|
50
|
+
var _config$web;
|
|
59
51
|
|
|
60
|
-
const isLoginEnabled = (
|
|
52
|
+
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; // eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
61
53
|
|
|
62
54
|
const anonymousRemoteUser = {
|
|
63
55
|
name: undefined,
|
|
@@ -101,20 +93,24 @@ function addPackageWebApi(route, storage, auth, config) {
|
|
|
101
93
|
debug('process packages %o', packagesToProcess);
|
|
102
94
|
|
|
103
95
|
for (const pkg of packagesToProcess) {
|
|
104
|
-
const pkgCopy =
|
|
105
|
-
|
|
96
|
+
const pkgCopy = { ...pkg
|
|
97
|
+
};
|
|
106
98
|
pkgCopy.author = (0, _utils.formatAuthor)(pkg.author);
|
|
107
99
|
|
|
108
100
|
try {
|
|
109
101
|
if (await checkAllow(pkg.name, req.remote_user)) {
|
|
110
102
|
if (config.web) {
|
|
111
|
-
pkgCopy.author.avatar = (0,
|
|
103
|
+
pkgCopy.author.avatar = (0, _utils.generateGravatarUrl)(pkgCopy.author.email, config.web.gravatar);
|
|
112
104
|
} // convert any remote dist to a local reference
|
|
113
105
|
// eg: if the dist points to npmjs, switch to localhost:4873/prefix/etc.tar.gz
|
|
114
106
|
|
|
115
107
|
|
|
116
108
|
if (!_lodash.default.isNil(pkgCopy.dist) && !_lodash.default.isNull(pkgCopy.dist.tarball)) {
|
|
117
|
-
pkgCopy.dist.tarball = (0, _tarball.getLocalRegistryTarballUri)(pkgCopy.dist.tarball, pkg.name,
|
|
109
|
+
pkgCopy.dist.tarball = (0, _tarball.getLocalRegistryTarballUri)(pkgCopy.dist.tarball, pkg.name, {
|
|
110
|
+
protocol: req.protocol,
|
|
111
|
+
headers: req.headers,
|
|
112
|
+
host: req.hostname
|
|
113
|
+
}, config === null || config === void 0 ? void 0 : config.url_prefix);
|
|
118
114
|
}
|
|
119
115
|
|
|
120
116
|
permissions.push(pkgCopy);
|
package/build/api/package.js.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;
|
|
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","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(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 { 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}\n\nexport default addPackageWebApi;\n"],"file":"package.js"}
|
package/build/api/readme.d.ts
CHANGED
|
@@ -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';
|
package/build/api/readme.js
CHANGED
|
@@ -3,33 +3,33 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "$
|
|
6
|
+
Object.defineProperty(exports, "$NextFunctionVer", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return _middleware.$
|
|
9
|
+
return _middleware.$NextFunctionVer;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "$
|
|
12
|
+
Object.defineProperty(exports, "$RequestExtend", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function () {
|
|
15
|
-
return _middleware.$
|
|
15
|
+
return _middleware.$RequestExtend;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
Object.defineProperty(exports, "$
|
|
18
|
+
Object.defineProperty(exports, "$ResponseExtend", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function () {
|
|
21
|
-
return _middleware.$
|
|
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
|
|
28
|
+
var _core = require("@verdaccio/core");
|
|
29
29
|
|
|
30
30
|
var _middleware = require("@verdaccio/middleware");
|
|
31
31
|
|
|
32
|
-
var
|
|
32
|
+
var _readme = _interopRequireDefault(require("@verdaccio/readme"));
|
|
33
33
|
|
|
34
34
|
var _webUtils = require("../utils/web-utils");
|
|
35
35
|
|
|
@@ -58,7 +58,7 @@ function addReadmeWebApi(route, storage, auth) {
|
|
|
58
58
|
return next(err);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
res.set(
|
|
61
|
+
res.set(_core.HEADER_TYPE.CONTENT_TYPE, _core.HEADERS.TEXT_PLAIN_UTF8);
|
|
62
62
|
|
|
63
63
|
try {
|
|
64
64
|
next((0, _webUtils.parseReadme)(info.name, info.readme));
|
package/build/api/readme.js.map
CHANGED
|
@@ -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;;
|
|
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;;AAIA;;AACA;;AACA;;AAIA;;;;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 { 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(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"}
|
package/build/api/search.js
CHANGED
|
@@ -7,9 +7,9 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _debug = _interopRequireDefault(require("debug"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _core = require("@verdaccio/core");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _store = require("@verdaccio/store");
|
|
13
13
|
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
|
|
@@ -42,7 +42,7 @@ function addSearchWebApi(route, storage, auth) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
debug('access succeed');
|
|
45
|
-
resolve(pkg.versions[pkg[
|
|
45
|
+
resolve(pkg.versions[pkg[_core.DIST_TAGS].latest]);
|
|
46
46
|
});
|
|
47
47
|
} else {
|
|
48
48
|
reject(err);
|
package/build/api/search.js.map
CHANGED
|
@@ -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":";;;;;;;AAAA;;
|
|
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 { 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(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"}
|
package/build/api/sidebar.d.ts
CHANGED
|
@@ -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';
|
package/build/api/sidebar.js
CHANGED
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "$
|
|
6
|
+
Object.defineProperty(exports, "$NextFunctionVer", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return _middleware.$
|
|
9
|
+
return _middleware.$NextFunctionVer;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "$
|
|
12
|
+
Object.defineProperty(exports, "$RequestExtend", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function () {
|
|
15
|
-
return _middleware.$
|
|
15
|
+
return _middleware.$RequestExtend;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
Object.defineProperty(exports, "$
|
|
18
|
+
Object.defineProperty(exports, "$ResponseExtend", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function () {
|
|
21
|
-
return _middleware.$
|
|
21
|
+
return _middleware.$ResponseExtend;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
exports.default = void 0;
|
|
@@ -27,14 +27,14 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
27
27
|
|
|
28
28
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
29
29
|
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
var _commonsApi = require("@verdaccio/commons-api");
|
|
30
|
+
var _core = require("@verdaccio/core");
|
|
33
31
|
|
|
34
32
|
var _middleware = require("@verdaccio/middleware");
|
|
35
33
|
|
|
36
34
|
var _tarball = require("@verdaccio/tarball");
|
|
37
35
|
|
|
36
|
+
var _utils = require("@verdaccio/utils");
|
|
37
|
+
|
|
38
38
|
var _webUtils = require("../utils/web-utils");
|
|
39
39
|
|
|
40
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -60,21 +60,25 @@ function addSidebarWebApi(route, config, storage, auth) {
|
|
|
60
60
|
|
|
61
61
|
let sideBarInfo = _lodash.default.clone(info);
|
|
62
62
|
|
|
63
|
-
sideBarInfo.versions = (0, _tarball.convertDistRemoteToLocalTarballUrls)(info,
|
|
63
|
+
sideBarInfo.versions = (0, _tarball.convertDistRemoteToLocalTarballUrls)(info, {
|
|
64
|
+
protocol: req.protocol,
|
|
65
|
+
headers: req.headers,
|
|
66
|
+
host: req.hostname
|
|
67
|
+
}, config.url_prefix).versions;
|
|
64
68
|
|
|
65
69
|
if (typeof v === 'string' && (0, _utils.isVersionValid)(info, v)) {
|
|
66
70
|
sideBarInfo.latest = sideBarInfo.versions[v];
|
|
67
71
|
sideBarInfo.latest.author = (0, _utils.formatAuthor)(sideBarInfo.latest.author);
|
|
68
72
|
} else {
|
|
69
|
-
sideBarInfo.latest = sideBarInfo.versions[info[
|
|
73
|
+
sideBarInfo.latest = sideBarInfo.versions[info[_core.DIST_TAGS].latest];
|
|
70
74
|
sideBarInfo.latest.author = (0, _utils.formatAuthor)(sideBarInfo.latest.author);
|
|
71
75
|
}
|
|
72
76
|
|
|
73
77
|
sideBarInfo = (0, _webUtils.deleteProperties)(['readme', '_attachments', '_rev', 'name'], sideBarInfo);
|
|
74
|
-
const authorAvatar = config.web ? (0,
|
|
78
|
+
const authorAvatar = config.web ? (0, _utils.addGravatarSupport)(sideBarInfo, config.web.gravatar) : (0, _utils.addGravatarSupport)(sideBarInfo);
|
|
75
79
|
next(authorAvatar);
|
|
76
80
|
} else {
|
|
77
|
-
res.status(
|
|
81
|
+
res.status(_core.HTTP_STATUS.NOT_FOUND);
|
|
78
82
|
res.end();
|
|
79
83
|
}
|
|
80
84
|
}
|
package/build/api/sidebar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/sidebar.ts"],"names":["debug","addSidebarWebApi","route","config","storage","auth","can","get","req","res","next","packageName","params","scope","package","getPackage","name","uplinksLook","keepUpLinkData","callback","err","info","_","isNil","v","query","sideBarInfo","clone","versions","url_prefix","latest","author","DIST_TAGS","authorAvatar","web","gravatar","status","HTTP_STATUS","NOT_FOUND","end"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["../../src/api/sidebar.ts"],"names":["debug","addSidebarWebApi","route","config","storage","auth","can","get","req","res","next","packageName","params","scope","package","getPackage","name","uplinksLook","keepUpLinkData","callback","err","info","_","isNil","v","query","sideBarInfo","clone","versions","protocol","headers","host","hostname","url_prefix","latest","author","DIST_TAGS","authorAvatar","web","gravatar","status","HTTP_STATUS","NOT_FOUND","end"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAGA;;AACA;;AAEA;;AAEA;;AAEA;;;;AAOA,MAAMA,KAAK,GAAG,oBAAW,2BAAX,CAAd;;AAEA,SAASC,gBAAT,CAA0BC,KAA1B,EAAyCC,MAAzC,EAAyDC,OAAzD,EAA2EC,IAA3E,EAA8F;AAC5FL,EAAAA,KAAK,CAAC,6BAAD,CAAL;AACA,QAAMM,GAAG,GAAG,uBAAMD,IAAN,CAAZ,CAF4F,CAG5F;;AACAH,EAAAA,KAAK,CAACK,GAAN,CACE,8BADF,EAEED,GAAG,CAAC,QAAD,CAFL,EAGE,UAAUE,GAAV,EAA+BC,GAA/B,EAAqDC,IAArD,EAAmF;AACjF,UAAMC,WAAmB,GAAGH,GAAG,CAACI,MAAJ,CAAWC,KAAX,GACxB,wBAASL,GAAG,CAACI,MAAJ,CAAWC,KAApB,EAA2BL,GAAG,CAACI,MAAJ,CAAWE,OAAtC,CADwB,GAExBN,GAAG,CAACI,MAAJ,CAAWE,OAFf;AAIAV,IAAAA,OAAO,CAACW,UAAR,CAAmB;AACjBC,MAAAA,IAAI,EAAEL,WADW;AAEjBM,MAAAA,WAAW,EAAE,IAFI;AAGjBC,MAAAA,cAAc,EAAE,IAHC;AAIjBV,MAAAA,GAJiB;AAKjBW,MAAAA,QAAQ,EAAE,UAAUC,GAAV,EAAsBC,IAAtB,EAAmD;AAC3D,YAAIC,gBAAEC,KAAF,CAAQH,GAAR,CAAJ,EAAkB;AAChB,gBAAM;AAAEI,YAAAA;AAAF,cAAQhB,GAAG,CAACiB,KAAlB;;AACA,cAAIC,WAAW,GAAGJ,gBAAEK,KAAF,CAAQN,IAAR,CAAlB;;AACAK,UAAAA,WAAW,CAACE,QAAZ,GAAuB,kDACrBP,IADqB,EAErB;AAAEQ,YAAAA,QAAQ,EAAErB,GAAG,CAACqB,QAAhB;AAA0BC,YAAAA,OAAO,EAAEtB,GAAG,CAACsB,OAAvC;AAAuDC,YAAAA,IAAI,EAAEvB,GAAG,CAACwB;AAAjE,WAFqB,EAGrB7B,MAAM,CAAC8B,UAHc,EAIrBL,QAJF;;AAKA,cAAI,OAAOJ,CAAP,KAAa,QAAb,IAAyB,2BAAeH,IAAf,EAAqBG,CAArB,CAA7B,EAAsD;AACpDE,YAAAA,WAAW,CAACQ,MAAZ,GAAqBR,WAAW,CAACE,QAAZ,CAAqBJ,CAArB,CAArB;AACAE,YAAAA,WAAW,CAACQ,MAAZ,CAAmBC,MAAnB,GAA4B,yBAAaT,WAAW,CAACQ,MAAZ,CAAmBC,MAAhC,CAA5B;AACD,WAHD,MAGO;AACLT,YAAAA,WAAW,CAACQ,MAAZ,GAAqBR,WAAW,CAACE,QAAZ,CAAqBP,IAAI,CAACe,eAAD,CAAJ,CAAgBF,MAArC,CAArB;AACAR,YAAAA,WAAW,CAACQ,MAAZ,CAAmBC,MAAnB,GAA4B,yBAAaT,WAAW,CAACQ,MAAZ,CAAmBC,MAAhC,CAA5B;AACD;;AACDT,UAAAA,WAAW,GAAG,gCAAiB,CAAC,QAAD,EAAW,cAAX,EAA2B,MAA3B,EAAmC,MAAnC,CAAjB,EAA6DA,WAA7D,CAAd;AACA,gBAAMW,YAAY,GAAGlC,MAAM,CAACmC,GAAP,GACjB,+BAAmBZ,WAAnB,EAAgCvB,MAAM,CAACmC,GAAP,CAAWC,QAA3C,CADiB,GAEjB,+BAAmBb,WAAnB,CAFJ;AAGAhB,UAAAA,IAAI,CAAC2B,YAAD,CAAJ;AACD,SApBD,MAoBO;AACL5B,UAAAA,GAAG,CAAC+B,MAAJ,CAAWC,kBAAYC,SAAvB;AACAjC,UAAAA,GAAG,CAACkC,GAAJ;AACD;AACF;AA9BgB,KAAnB;AAgCD,GAxCH;AA0CD;;eAEc1C,gB","sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\nimport _ from 'lodash';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { DIST_TAGS, HTTP_STATUS } from '@verdaccio/core';\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend, allow } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { convertDistRemoteToLocalTarballUrls } from '@verdaccio/tarball';\nimport { Config, Package, Version } from '@verdaccio/types';\nimport { addGravatarSupport, formatAuthor, isVersionValid } from '@verdaccio/utils';\n\nimport { AuthorAvatar, addScope, deleteProperties } 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\nexport type $SidebarPackage = Package & { latest: Version };\nconst debug = buildDebug('verdaccio:web:api:sidebar');\n\nfunction addSidebarWebApi(route: Router, config: Config, storage: Storage, auth: IAuth): void {\n debug('initialized sidebar web api');\n const can = allow(auth);\n // Get package readme\n route.get(\n '/sidebar/(@:scope/)?:package',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName: string = req.params.scope\n ? addScope(req.params.scope, req.params.package)\n : req.params.package;\n\n storage.getPackage({\n name: packageName,\n uplinksLook: true,\n keepUpLinkData: true,\n req,\n callback: function (err: Error, info: $SidebarPackage): void {\n if (_.isNil(err)) {\n const { v } = req.query;\n let sideBarInfo = _.clone(info);\n sideBarInfo.versions = convertDistRemoteToLocalTarballUrls(\n info,\n { protocol: req.protocol, headers: req.headers as any, host: req.hostname },\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 } else {\n res.status(HTTP_STATUS.NOT_FOUND);\n res.end();\n }\n },\n });\n }\n );\n}\n\nexport default addSidebarWebApi;\n"],"file":"sidebar.js"}
|
package/build/api/user.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { Config } from '@verdaccio/types';
|
|
3
2
|
import { IAuth } from '@verdaccio/auth';
|
|
3
|
+
import { Config } from '@verdaccio/types';
|
|
4
4
|
declare function addUserAuthApi(route: Router, auth: IAuth, config: Config): void;
|
|
5
5
|
export default addUserAuthApi;
|
package/build/api/user.js
CHANGED
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
-
|
|
10
8
|
var _debug = _interopRequireDefault(require("debug"));
|
|
11
9
|
|
|
12
|
-
var
|
|
10
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@verdaccio/core");
|
|
13
13
|
|
|
14
14
|
var _utils = require("@verdaccio/utils");
|
|
15
15
|
|
|
@@ -28,9 +28,9 @@ function addUserAuthApi(route, auth, config) {
|
|
|
28
28
|
debug('authenticate %o', username);
|
|
29
29
|
auth.authenticate(username, password, async (err, user) => {
|
|
30
30
|
if (err) {
|
|
31
|
-
const errorCode = err.message ?
|
|
31
|
+
const errorCode = err.message ? _core.HTTP_STATUS.UNAUTHORIZED : _core.HTTP_STATUS.INTERNAL_ERROR;
|
|
32
32
|
debug('error authenticate %o', errorCode);
|
|
33
|
-
next(
|
|
33
|
+
next(_core.errorUtils.getCode(errorCode, err.message));
|
|
34
34
|
} else {
|
|
35
35
|
req.remote_user = user;
|
|
36
36
|
const jWTSignOptions = config.security.web.sign;
|
|
@@ -45,10 +45,10 @@ function addUserAuthApi(route, auth, config) {
|
|
|
45
45
|
if ((config === null || config === void 0 ? void 0 : (_config$flags = config.flags) === null || _config$flags === void 0 ? void 0 : _config$flags.changePassword) === true) {
|
|
46
46
|
route.put('/reset_password', function (req, res, next) {
|
|
47
47
|
if (_lodash.default.isNil(req.remote_user.name)) {
|
|
48
|
-
res.status(
|
|
48
|
+
res.status(_core.HTTP_STATUS.UNAUTHORIZED);
|
|
49
49
|
return next({
|
|
50
50
|
// FUTURE: update to a more meaningful message
|
|
51
|
-
message:
|
|
51
|
+
message: _core.API_ERROR.MUST_BE_LOGGED
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -66,11 +66,11 @@ function addUserAuthApi(route, auth, config) {
|
|
|
66
66
|
ok: true
|
|
67
67
|
});
|
|
68
68
|
} else {
|
|
69
|
-
return next(
|
|
69
|
+
return next(_core.errorUtils.getInternalError(_core.API_ERROR.INTERNAL_SERVER_ERROR));
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
72
|
} else {
|
|
73
|
-
return next(
|
|
73
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.BAD_REQUEST, _core.APP_ERROR.PASSWORD_VALIDATION));
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
76
|
}
|
package/build/api/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/user.ts"],"names":["debug","addUserAuthApi","route","auth","config","post","req","res","next","username","password","body","authenticate","err","user","errorCode","message","HTTP_STATUS","UNAUTHORIZED","INTERNAL_ERROR","
|
|
1
|
+
{"version":3,"sources":["../../src/api/user.ts"],"names":["debug","addUserAuthApi","route","auth","config","post","req","res","next","username","password","body","authenticate","err","user","errorCode","message","HTTP_STATUS","UNAUTHORIZED","INTERNAL_ERROR","errorUtils","getCode","remote_user","jWTSignOptions","security","web","sign","token","jwtEncrypt","name","flags","changePassword","put","_","isNil","status","API_ERROR","MUST_BE_LOGGED","new","old","isUpdated","ok","getInternalError","INTERNAL_SERVER_ERROR","BAD_REQUEST","APP_ERROR","PASSWORD_VALIDATION"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { Request, Response, Router } from 'express';\nimport _ from 'lodash';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { API_ERROR, APP_ERROR, HTTP_STATUS, errorUtils } from '@verdaccio/core';\nimport { Config, JWTSignOptions, RemoteUser } from '@verdaccio/types';\nimport { validatePassword } from '@verdaccio/utils';\n\nimport { $NextFunctionVer } from './package';\n\nconst debug = buildDebug('verdaccio:web:api:user');\n\nfunction addUserAuthApi(route: Router, auth: IAuth, config: Config): void {\n route.post('/login', function (req: Request, res: Response, next: $NextFunctionVer): void {\n const { username, password } = req.body;\n debug('authenticate %o', username);\n auth.authenticate(username, password, async (err, user: RemoteUser): Promise<void> => {\n if (err) {\n const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR;\n debug('error authenticate %o', errorCode);\n next(errorUtils.getCode(errorCode, err.message));\n } else {\n req.remote_user = user;\n const jWTSignOptions: JWTSignOptions = config.security.web.sign;\n\n next({\n token: await auth.jwtEncrypt(user, jWTSignOptions),\n username: req.remote_user.name,\n });\n }\n });\n });\n\n if (config?.flags?.changePassword === true) {\n route.put(\n '/reset_password',\n function (req: Request, res: Response, next: $NextFunctionVer): void {\n if (_.isNil(req.remote_user.name)) {\n res.status(HTTP_STATUS.UNAUTHORIZED);\n return next({\n // FUTURE: update to a more meaningful message\n message: API_ERROR.MUST_BE_LOGGED,\n });\n }\n\n const { password } = req.body;\n const { name } = req.remote_user;\n\n if (validatePassword(password.new) === false) {\n auth.changePassword(\n name as string,\n password.old,\n password.new,\n (err, isUpdated): void => {\n if (_.isNil(err) && isUpdated) {\n next({\n ok: true,\n });\n } else {\n return next(errorUtils.getInternalError(API_ERROR.INTERNAL_SERVER_ERROR));\n }\n }\n );\n } else {\n return next(errorUtils.getCode(HTTP_STATUS.BAD_REQUEST, APP_ERROR.PASSWORD_VALIDATION));\n }\n }\n );\n }\n}\n\nexport default addUserAuthApi;\n"],"file":"user.js"}
|