@verdaccio/api 6.0.0-6-next.15 → 6.0.0-6-next.16
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 +28 -0
- package/build/dist-tags.js +8 -8
- package/build/dist-tags.js.map +1 -1
- package/build/index.js +6 -0
- package/build/index.js.map +1 -1
- package/build/package.js +6 -6
- package/build/package.js.map +1 -1
- package/build/publish.js +18 -18
- package/build/publish.js.map +1 -1
- package/build/search.js +2 -2
- package/build/search.js.map +1 -1
- package/build/star.js +4 -4
- package/build/star.js.map +1 -1
- package/build/stars.js +3 -3
- package/build/stars.js.map +1 -1
- package/build/user.js +12 -12
- package/build/user.js.map +1 -1
- package/build/v1/profile.js +10 -10
- package/build/v1/profile.js.map +1 -1
- package/build/v1/search.js +14 -5
- package/build/v1/search.js.map +1 -1
- package/build/v1/token.js +12 -12
- package/build/v1/token.js.map +1 -1
- package/build/whoami.js +0 -1
- package/build/whoami.js.map +1 -1
- package/package.json +15 -14
- package/src/dist-tags.ts +8 -8
- package/src/index.ts +5 -0
- package/src/package.ts +3 -3
- package/src/publish.ts +11 -4
- package/src/search.ts +1 -1
- package/src/star.ts +1 -1
- package/src/stars.ts +1 -1
- package/src/user.ts +7 -7
- package/src/v1/profile.ts +7 -7
- package/src/v1/search.ts +11 -5
- package/src/v1/token.ts +11 -11
- package/src/whoami.ts +0 -1
- package/test/integration/_helper.ts +2 -1
- package/test/integration/package.spec.ts +1 -1
- package/test/integration/ping.spec.ts +1 -1
- package/test/integration/publish.spec.ts +3 -8
- package/test/integration/user.spec.ts +6 -8
- package/test/integration/whoami.spec.ts +1 -1
- package/test/unit/publish.spec.ts +3 -4
- package/tsconfig.json +0 -3
package/build/stars.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.default = _default;
|
|
|
7
7
|
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _core = require("@verdaccio/core");
|
|
11
11
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
@@ -19,8 +19,8 @@ function _default(route, storage) {
|
|
|
19
19
|
return next(err);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const filteredPackages = localPackages.filter(localPackage => _lodash.default.keys(localPackage[
|
|
23
|
-
res.status(
|
|
22
|
+
const filteredPackages = localPackages.filter(localPackage => _lodash.default.keys(localPackage[_core.USERS]).includes(remoteUsername));
|
|
23
|
+
res.status(_core.HTTP_STATUS.OK);
|
|
24
24
|
next({
|
|
25
25
|
rows: filteredPackages.map(filteredPackage => ({
|
|
26
26
|
value: filteredPackage.name
|
package/build/stars.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stars.ts"],"names":["route","storage","get","req","res","next","remoteUsername","remote_user","name","getLocalDatabase","err","localPackages","filteredPackages","filter","localPackage","_","keys","USERS","includes","status","HTTP_STATUS","OK","rows","map","filteredPackage","value"],"mappings":";;;;;;;AAAA;;AAGA;;;;AAQe,kBAAUA,KAAV,EAAyBC,OAAzB,EAAiD;AAC9DD,EAAAA,KAAK,CAACE,GAAN,CACE,wBADF,EAEE,CAACC,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAsE;AACpE,UAAMC,cAAc,GAAGH,GAAG,CAACI,WAAJ,CAAgBC,IAAvC;AAEAP,IAAAA,OAAO,CAACQ,gBAAR,CAAyB,CAACC,GAAD,EAAMC,aAAN,KAAkC;AACzD,UAAID,GAAJ,EAAS;AACP,eAAOL,IAAI,CAACK,GAAD,CAAX;AACD;;AAED,YAAME,gBAA0B,GAAGD,aAAa,CAACE,MAAd,CAAsBC,YAAD,IACtDC,gBAAEC,IAAF,CAAOF,YAAY,CAACG,
|
|
1
|
+
{"version":3,"sources":["../src/stars.ts"],"names":["route","storage","get","req","res","next","remoteUsername","remote_user","name","getLocalDatabase","err","localPackages","filteredPackages","filter","localPackage","_","keys","USERS","includes","status","HTTP_STATUS","OK","rows","map","filteredPackage","value"],"mappings":";;;;;;;AAAA;;AAGA;;;;AAQe,kBAAUA,KAAV,EAAyBC,OAAzB,EAAiD;AAC9DD,EAAAA,KAAK,CAACE,GAAN,CACE,wBADF,EAEE,CAACC,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAsE;AACpE,UAAMC,cAAc,GAAGH,GAAG,CAACI,WAAJ,CAAgBC,IAAvC;AAEAP,IAAAA,OAAO,CAACQ,gBAAR,CAAyB,CAACC,GAAD,EAAMC,aAAN,KAAkC;AACzD,UAAID,GAAJ,EAAS;AACP,eAAOL,IAAI,CAACK,GAAD,CAAX;AACD;;AAED,YAAME,gBAA0B,GAAGD,aAAa,CAACE,MAAd,CAAsBC,YAAD,IACtDC,gBAAEC,IAAF,CAAOF,YAAY,CAACG,WAAD,CAAnB,EAA4BC,QAA5B,CAAqCZ,cAArC,CADiC,CAAnC;AAIAF,MAAAA,GAAG,CAACe,MAAJ,CAAWC,kBAAYC,EAAvB;AACAhB,MAAAA,IAAI,CAAC;AACHiB,QAAAA,IAAI,EAAEV,gBAAgB,CAACW,GAAjB,CAAsBC,eAAD,KAA+B;AACxDC,UAAAA,KAAK,EAAED,eAAe,CAAChB;AADiC,SAA/B,CAArB;AADH,OAAD,CAAJ;AAKD,KAfD;AAgBD,GArBH;AAuBD","sourcesContent":["import _ from 'lodash';\nimport { Response, Router } from 'express';\n\nimport { USERS, HTTP_STATUS } from '@verdaccio/core';\nimport { Package } from '@verdaccio/types';\n\nimport { Storage } from '@verdaccio/store';\nimport { $RequestExtend, $NextFunctionVer } from '../types/custom';\n\ntype Packages = Package[];\n\nexport default function (route: Router, storage: Storage): void {\n route.get(\n '/-/_view/starredByUser',\n (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => {\n const remoteUsername = req.remote_user.name;\n\n storage.getLocalDatabase((err, localPackages: Packages) => {\n if (err) {\n return next(err);\n }\n\n const filteredPackages: Packages = localPackages.filter((localPackage: Package) =>\n _.keys(localPackage[USERS]).includes(remoteUsername)\n );\n\n res.status(HTTP_STATUS.OK);\n next({\n rows: filteredPackages.map((filteredPackage: Package) => ({\n value: filteredPackage.name,\n })),\n });\n });\n }\n );\n}\n"],"file":"stars.js"}
|
package/build/user.js
CHANGED
|
@@ -17,7 +17,7 @@ var _logger = require("@verdaccio/logger");
|
|
|
17
17
|
|
|
18
18
|
var _config = require("@verdaccio/config");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _core = require("@verdaccio/core");
|
|
21
21
|
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
@@ -28,7 +28,7 @@ function _default(route, auth, config) {
|
|
|
28
28
|
debug('verifying user');
|
|
29
29
|
const message = (0, _utils.getAuthenticatedMessage)(req.remote_user.name);
|
|
30
30
|
debug('user authenticated message %o', message);
|
|
31
|
-
res.status(
|
|
31
|
+
res.status(_core.HTTP_STATUS.OK);
|
|
32
32
|
next({
|
|
33
33
|
ok: message
|
|
34
34
|
});
|
|
@@ -50,7 +50,7 @@ function _default(route, auth, config) {
|
|
|
50
50
|
err
|
|
51
51
|
}, 'authenticating for user @{username} failed. Error: @{err.message}');
|
|
52
52
|
|
|
53
|
-
return next(
|
|
53
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.UNAUTHORIZED, _core.API_ERROR.BAD_USERNAME_PASSWORD));
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
const restoredRemoteUser = (0, _config.createRemoteUser)(name, user.groups || []);
|
|
@@ -58,10 +58,10 @@ function _default(route, auth, config) {
|
|
|
58
58
|
debug('login: new token');
|
|
59
59
|
|
|
60
60
|
if (!token) {
|
|
61
|
-
return next(
|
|
61
|
+
return next(_core.errorUtils.getUnauthorized());
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
res.status(
|
|
64
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
65
65
|
const message = (0, _utils.getAuthenticatedMessage)(req.remote_user.name);
|
|
66
66
|
debug('login: created user message %o', message);
|
|
67
67
|
return next({
|
|
@@ -73,17 +73,17 @@ function _default(route, auth, config) {
|
|
|
73
73
|
if ((0, _utils.validatePassword)(password) === false) {
|
|
74
74
|
debug('adduser: invalid password'); // eslint-disable-next-line new-cap
|
|
75
75
|
|
|
76
|
-
return next(
|
|
76
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.BAD_REQUEST, _core.API_ERROR.PASSWORD_SHORT()));
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
auth.add_user(name, password, async function (err, user) {
|
|
80
80
|
if (err) {
|
|
81
|
-
if (err.status >=
|
|
81
|
+
if (err.status >= _core.HTTP_STATUS.BAD_REQUEST && err.status < _core.HTTP_STATUS.INTERNAL_ERROR) {
|
|
82
82
|
debug('adduser: error on create user'); // With npm registering is the same as logging in,
|
|
83
83
|
// and npm accepts only an 409 error.
|
|
84
84
|
// So, changing status code here.
|
|
85
85
|
|
|
86
|
-
return next(
|
|
86
|
+
return next(_core.errorUtils.getCode(err.status, err.message) || _core.errorUtils.getConflict(err.message));
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
return next(err);
|
|
@@ -93,11 +93,11 @@ function _default(route, auth, config) {
|
|
|
93
93
|
debug('adduser: new token %o', token);
|
|
94
94
|
|
|
95
95
|
if (!token) {
|
|
96
|
-
return next(
|
|
96
|
+
return next(_core.errorUtils.getUnauthorized());
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
req.remote_user = user;
|
|
100
|
-
res.status(
|
|
100
|
+
res.status(_core.HTTP_STATUS.CREATED);
|
|
101
101
|
debug('adduser: user has been created');
|
|
102
102
|
return next({
|
|
103
103
|
ok: `user '${req.body.name}' created`,
|
|
@@ -107,9 +107,9 @@ function _default(route, auth, config) {
|
|
|
107
107
|
}
|
|
108
108
|
});
|
|
109
109
|
route.delete('/-/user/token/*', function (req, res, next) {
|
|
110
|
-
res.status(
|
|
110
|
+
res.status(_core.HTTP_STATUS.OK);
|
|
111
111
|
next({
|
|
112
|
-
ok:
|
|
112
|
+
ok: _core.API_MESSAGE.LOGGED_OUT
|
|
113
113
|
});
|
|
114
114
|
});
|
|
115
115
|
}
|
package/build/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/user.ts"],"names":["debug","route","auth","config","get","req","res","next","message","remote_user","name","status","HTTP_STATUS","OK","ok","put","password","body","remoteName","_","isNil","authenticate","callbackAuthenticate","err","user","logger","trace","
|
|
1
|
+
{"version":3,"sources":["../src/user.ts"],"names":["debug","route","auth","config","get","req","res","next","message","remote_user","name","status","HTTP_STATUS","OK","ok","put","password","body","remoteName","_","isNil","authenticate","callbackAuthenticate","err","user","logger","trace","errorUtils","getCode","UNAUTHORIZED","API_ERROR","BAD_USERNAME_PASSWORD","restoredRemoteUser","groups","token","getUnauthorized","CREATED","BAD_REQUEST","PASSWORD_SHORT","add_user","INTERNAL_ERROR","getConflict","undefined","delete","API_MESSAGE","LOGGED_OUT"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { Response, Router } from 'express';\nimport buildDebug from 'debug';\n\nimport { getAuthenticatedMessage, validatePassword } from '@verdaccio/utils';\nimport { getApiToken } from '@verdaccio/auth';\nimport { logger } from '@verdaccio/logger';\nimport { createRemoteUser } from '@verdaccio/config';\n\nimport { Config, RemoteUser } from '@verdaccio/types';\nimport { IAuth } from '@verdaccio/auth';\nimport { API_ERROR, API_MESSAGE, HTTP_STATUS, errorUtils } from '@verdaccio/core';\nimport { $RequestExtend, $NextFunctionVer } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:user');\n\nexport default function (route: Router, auth: IAuth, config: Config): void {\n route.get(\n '/-/user/:org_couchdb_user',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n debug('verifying user');\n const message = getAuthenticatedMessage(req.remote_user.name);\n debug('user authenticated message %o', message);\n res.status(HTTP_STATUS.OK);\n next({\n ok: message,\n });\n }\n );\n\n route.put(\n '/-/user/:org_couchdb_user/:_rev?/:revision?',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n const { name, password } = req.body;\n debug('login or adduser');\n const remoteName = req.remote_user.name;\n\n if (_.isNil(remoteName) === false && _.isNil(name) === false && remoteName === name) {\n debug('login: no remote user detected');\n auth.authenticate(\n name,\n password,\n async function callbackAuthenticate(err, user): Promise<void> {\n if (err) {\n logger.trace(\n { name, err },\n 'authenticating for user @{username} failed. Error: @{err.message}'\n );\n return next(\n errorUtils.getCode(HTTP_STATUS.UNAUTHORIZED, API_ERROR.BAD_USERNAME_PASSWORD)\n );\n }\n\n const restoredRemoteUser: RemoteUser = createRemoteUser(name, user.groups || []);\n const token = await getApiToken(auth, config, restoredRemoteUser, password);\n debug('login: new token');\n if (!token) {\n return next(errorUtils.getUnauthorized());\n }\n\n res.status(HTTP_STATUS.CREATED);\n\n const message = getAuthenticatedMessage(req.remote_user.name);\n debug('login: created user message %o', message);\n\n return next({\n ok: message,\n token,\n });\n }\n );\n } else {\n if (validatePassword(password) === false) {\n debug('adduser: invalid password');\n // eslint-disable-next-line new-cap\n return next(errorUtils.getCode(HTTP_STATUS.BAD_REQUEST, API_ERROR.PASSWORD_SHORT()));\n }\n\n auth.add_user(name, password, async function (err, user): Promise<void> {\n if (err) {\n if (err.status >= HTTP_STATUS.BAD_REQUEST && err.status < HTTP_STATUS.INTERNAL_ERROR) {\n debug('adduser: error on create user');\n // With npm registering is the same as logging in,\n // and npm accepts only an 409 error.\n // So, changing status code here.\n return next(\n errorUtils.getCode(err.status, err.message) || errorUtils.getConflict(err.message)\n );\n }\n return next(err);\n }\n\n const token =\n name && password ? await getApiToken(auth, config, user, password) : undefined;\n debug('adduser: new token %o', token);\n if (!token) {\n return next(errorUtils.getUnauthorized());\n }\n\n req.remote_user = user;\n res.status(HTTP_STATUS.CREATED);\n debug('adduser: user has been created');\n return next({\n ok: `user '${req.body.name}' created`,\n token,\n });\n });\n }\n }\n );\n\n route.delete(\n '/-/user/token/*',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n res.status(HTTP_STATUS.OK);\n next({\n ok: API_MESSAGE.LOGGED_OUT,\n });\n }\n );\n}\n"],"file":"user.js"}
|
package/build/v1/profile.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.default = _default;
|
|
|
7
7
|
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _core = require("@verdaccio/core");
|
|
11
11
|
|
|
12
12
|
var _utils = require("@verdaccio/utils");
|
|
13
13
|
|
|
@@ -32,16 +32,16 @@ function _default(route, auth) {
|
|
|
32
32
|
return next(buildProfile(req.remote_user.name));
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
res.status(
|
|
35
|
+
res.status(_core.HTTP_STATUS.UNAUTHORIZED);
|
|
36
36
|
return next({
|
|
37
|
-
message:
|
|
37
|
+
message: _core.API_ERROR.MUST_BE_LOGGED
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
route.post('/-/npm/v1/user', function (req, res, next) {
|
|
41
41
|
if (_lodash.default.isNil(req.remote_user.name)) {
|
|
42
|
-
res.status(
|
|
42
|
+
res.status(_core.HTTP_STATUS.UNAUTHORIZED);
|
|
43
43
|
return next({
|
|
44
|
-
message:
|
|
44
|
+
message: _core.API_ERROR.MUST_BE_LOGGED
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -56,25 +56,25 @@ function _default(route, auth) {
|
|
|
56
56
|
if (_lodash.default.isNil(password) === false) {
|
|
57
57
|
if ((0, _utils.validatePassword)(password.new) === false) {
|
|
58
58
|
/* eslint new-cap:off */
|
|
59
|
-
return next(
|
|
59
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.UNAUTHORIZED, _core.API_ERROR.PASSWORD_SHORT()));
|
|
60
60
|
/* eslint new-cap:off */
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
auth.changePassword(name, password.old, password.new, (err, isUpdated) => {
|
|
64
64
|
if (_lodash.default.isNull(err) === false) {
|
|
65
|
-
return next(
|
|
65
|
+
return next(_core.errorUtils.getCode(err.status, err.message) || _core.errorUtils.getConflict(err.message));
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
if (isUpdated) {
|
|
69
69
|
return next(buildProfile(req.remote_user.name));
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
return next(
|
|
72
|
+
return next(_core.errorUtils.getInternalError(_core.API_ERROR.INTERNAL_SERVER_ERROR));
|
|
73
73
|
});
|
|
74
74
|
} else if (_lodash.default.isNil(tfa) === false) {
|
|
75
|
-
return next(
|
|
75
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.SERVICE_UNAVAILABLE, _core.SUPPORT_ERRORS.TFA_DISABLED));
|
|
76
76
|
} else {
|
|
77
|
-
return next(
|
|
77
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.INTERNAL_ERROR, _core.APP_ERROR.PROFILE_ERROR));
|
|
78
78
|
}
|
|
79
79
|
});
|
|
80
80
|
}
|
package/build/v1/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v1/profile.ts"],"names":["route","auth","buildProfile","name","tfa","email","email_verified","created","updated","cidr_whitelist","fullname","get","req","res","next","_","isNil","remote_user","status","HTTP_STATUS","UNAUTHORIZED","message","API_ERROR","MUST_BE_LOGGED","post","password","body","new","
|
|
1
|
+
{"version":3,"sources":["../../src/v1/profile.ts"],"names":["route","auth","buildProfile","name","tfa","email","email_verified","created","updated","cidr_whitelist","fullname","get","req","res","next","_","isNil","remote_user","status","HTTP_STATUS","UNAUTHORIZED","message","API_ERROR","MUST_BE_LOGGED","post","password","body","new","errorUtils","getCode","PASSWORD_SHORT","changePassword","old","err","isUpdated","isNull","getConflict","getInternalError","INTERNAL_SERVER_ERROR","SERVICE_UNAVAILABLE","SUPPORT_ERRORS","TFA_DISABLED","INTERNAL_ERROR","APP_ERROR","PROFILE_ERROR"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { Response, Router } from 'express';\n\nimport { API_ERROR, APP_ERROR, HTTP_STATUS, SUPPORT_ERRORS, errorUtils } from '@verdaccio/core';\nimport { validatePassword } from '@verdaccio/utils';\nimport { IAuth } from '@verdaccio/auth';\nimport { $RequestExtend, $NextFunctionVer } from '../../types/custom';\n\nexport interface Profile {\n tfa: boolean;\n name: string;\n email: string;\n email_verified: boolean;\n created: string;\n updated: string;\n cidr_whitelist: string[] | null;\n fullname: string;\n}\n\nexport default function (route: Router, auth: IAuth): void {\n function buildProfile(name: string): Profile {\n return {\n tfa: false,\n name,\n email: '',\n email_verified: false,\n created: '',\n updated: '',\n cidr_whitelist: null,\n fullname: '',\n };\n }\n\n route.get(\n '/-/npm/v1/user',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n if (_.isNil(req.remote_user.name) === false) {\n return next(buildProfile(req.remote_user.name));\n }\n\n res.status(HTTP_STATUS.UNAUTHORIZED);\n return next({\n message: API_ERROR.MUST_BE_LOGGED,\n });\n }\n );\n\n route.post(\n '/-/npm/v1/user',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n if (_.isNil(req.remote_user.name)) {\n res.status(HTTP_STATUS.UNAUTHORIZED);\n return next({\n message: API_ERROR.MUST_BE_LOGGED,\n });\n }\n\n const { password, tfa } = req.body;\n const { name } = req.remote_user;\n\n if (_.isNil(password) === false) {\n if (validatePassword(password.new) === false) {\n /* eslint new-cap:off */\n return next(errorUtils.getCode(HTTP_STATUS.UNAUTHORIZED, API_ERROR.PASSWORD_SHORT()));\n /* eslint new-cap:off */\n }\n\n auth.changePassword(\n name,\n password.old,\n password.new,\n (err, isUpdated): $NextFunctionVer => {\n if (_.isNull(err) === false) {\n return next(\n errorUtils.getCode(err.status, err.message) || errorUtils.getConflict(err.message)\n );\n }\n\n if (isUpdated) {\n return next(buildProfile(req.remote_user.name));\n }\n return next(errorUtils.getInternalError(API_ERROR.INTERNAL_SERVER_ERROR));\n }\n );\n } else if (_.isNil(tfa) === false) {\n return next(\n errorUtils.getCode(HTTP_STATUS.SERVICE_UNAVAILABLE, SUPPORT_ERRORS.TFA_DISABLED)\n );\n } else {\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, APP_ERROR.PROFILE_ERROR));\n }\n }\n );\n}\n"],"file":"profile.js"}
|
package/build/v1/search.js
CHANGED
|
@@ -11,7 +11,7 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
11
11
|
|
|
12
12
|
var _logger = require("@verdaccio/logger");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _core = require("@verdaccio/core");
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
@@ -48,8 +48,16 @@ function _default(route, auth, storage) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
route.get('/-/v1/search', async (req, res, next) => {
|
|
51
|
-
|
|
51
|
+
const {
|
|
52
|
+
query,
|
|
53
|
+
url
|
|
54
|
+
} = req;
|
|
55
|
+
let [size, from] = ['size', 'from'].map(k => query[k]);
|
|
52
56
|
let data;
|
|
57
|
+
const abort = new AbortController();
|
|
58
|
+
req.on('aborted', () => {
|
|
59
|
+
abort.abort();
|
|
60
|
+
});
|
|
53
61
|
size = parseInt(size, 10) || 20;
|
|
54
62
|
from = parseInt(from, 10) || 0;
|
|
55
63
|
|
|
@@ -57,8 +65,9 @@ function _default(route, auth, storage) {
|
|
|
57
65
|
var _storage$searchManage;
|
|
58
66
|
|
|
59
67
|
data = await ((_storage$searchManage = storage.searchManager) === null || _storage$searchManage === void 0 ? void 0 : _storage$searchManage.search({
|
|
60
|
-
query
|
|
61
|
-
url
|
|
68
|
+
query,
|
|
69
|
+
url,
|
|
70
|
+
abort
|
|
62
71
|
}));
|
|
63
72
|
debug('stream finish');
|
|
64
73
|
const checkAccessPromises = await Promise.all(data.map(pkgItem => {
|
|
@@ -73,7 +82,7 @@ function _default(route, auth, storage) {
|
|
|
73
82
|
total: final.length,
|
|
74
83
|
time: new Date().toUTCString()
|
|
75
84
|
};
|
|
76
|
-
res.status(
|
|
85
|
+
res.status(_core.HTTP_STATUS.OK).json(response);
|
|
77
86
|
} catch (error) {
|
|
78
87
|
_logger.logger.error({
|
|
79
88
|
error
|
package/build/v1/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v1/search.ts"],"names":["debug","route","auth","storage","checkAccess","pkg","remoteUser","Promise","resolve","reject","allow_access","packageName","package","name","err","allowed","status","String","match","get","req","res","next","size","from","map","k","
|
|
1
|
+
{"version":3,"sources":["../../src/v1/search.ts"],"names":["debug","route","auth","storage","checkAccess","pkg","remoteUser","Promise","resolve","reject","allow_access","packageName","package","name","err","allowed","status","String","match","get","req","res","next","query","url","size","from","map","k","data","abort","AbortController","on","parseInt","searchManager","search","checkAccessPromises","all","pkgItem","remote_user","final","filter","i","_","isNull","slice","logger","length","response","objects","total","time","Date","toUTCString","HTTP_STATUS","OK","json","error"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;AAIA,MAAMA,KAAK,GAAG,oBAAW,sBAAX,CAAd;AAEA;AACA;AACA;AACA;AACA;AACA;;AACe,kBAAUC,KAAV,EAAiBC,IAAjB,EAA8BC,OAA9B,EAAsD;AACnE,WAASC,WAAT,CAAqBC,GAArB,EAA+BH,IAA/B,EAA0CI,UAA1C,EAA+E;AAC7E,WAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAAA;;AACtCP,MAAAA,IAAI,CAACQ,YAAL,CAAkB;AAAEC,QAAAA,WAAW,EAAEN,GAAF,aAAEA,GAAF,uCAAEA,GAAG,CAAEO,OAAP,iDAAE,aAAcC;AAA7B,OAAlB,EAAuDP,UAAvD,EAAmE,UAAUQ,GAAV,EAAeC,OAAf,EAAwB;AACzF,YAAID,GAAJ,EAAS;AACP,cAAIA,GAAG,CAACE,MAAJ,IAAcC,MAAM,CAACH,GAAG,CAACE,MAAL,CAAN,CAAmBE,KAAnB,CAAyB,SAAzB,CAAlB,EAAuD;AACrD;AACA;AACAH,YAAAA,OAAO,GAAG,KAAV;AACA,mBAAOP,OAAO,CAAC,IAAD,CAAd;AACD,WALD,MAKO;AACLC,YAAAA,MAAM,CAACK,GAAD,CAAN;AACD;AACF,SATD,MASO;AACL,iBAAON,OAAO,CAACO,OAAO,GAAGV,GAAH,GAAS,IAAjB,CAAd;AACD;AACF,OAbD;AAcD,KAfM,CAAP;AAgBD;;AAEDJ,EAAAA,KAAK,CAACkB,GAAN,CAAU,cAAV,EAA0B,OAAOC,GAAP,EAAYC,GAAZ,EAAiBC,IAAjB,KAA0B;AAClD,UAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAiBJ,GAAvB;AACA,QAAI,CAACK,IAAD,EAAOC,IAAP,IAAe,CAAC,MAAD,EAAS,MAAT,EAAiBC,GAAjB,CAAsBC,CAAD,IAAOL,KAAK,CAACK,CAAD,CAAjC,CAAnB;AACA,QAAIC,IAAJ;AACA,UAAMC,KAAK,GAAG,IAAIC,eAAJ,EAAd;AAEAX,IAAAA,GAAG,CAACY,EAAJ,CAAO,SAAP,EAAkB,MAAM;AACtBF,MAAAA,KAAK,CAACA,KAAN;AACD,KAFD;AAIAL,IAAAA,IAAI,GAAGQ,QAAQ,CAACR,IAAD,EAAO,EAAP,CAAR,IAAsB,EAA7B;AACAC,IAAAA,IAAI,GAAGO,QAAQ,CAACP,IAAD,EAAO,EAAP,CAAR,IAAsB,CAA7B;;AAEA,QAAI;AAAA;;AACFG,MAAAA,IAAI,GAAG,gCAAM1B,OAAO,CAAC+B,aAAd,0DAAM,sBAAuBC,MAAvB,CAA8B;AACzCZ,QAAAA,KADyC;AAEzCC,QAAAA,GAFyC;AAGzCM,QAAAA;AAHyC,OAA9B,CAAN,CAAP;AAKA9B,MAAAA,KAAK,CAAC,eAAD,CAAL;AACA,YAAMoC,mBAAgD,GAAG,MAAM7B,OAAO,CAAC8B,GAAR,CAC7DR,IAAI,CAACF,GAAL,CAAUW,OAAD,IAAa;AACpB,eAAOlC,WAAW,CAACkC,OAAD,EAAUpC,IAAV,EAAgBkB,GAAG,CAACmB,WAApB,CAAlB;AACD,OAFD,CAD6D,CAA/D;AAMA,YAAMC,KAAkC,GAAGJ,mBAAmB,CAC3DK,MADwC,CAChCC,CAAD,IAAO,CAACC,gBAAEC,MAAF,CAASF,CAAT,CADyB,EAExCG,KAFwC,CAElCnB,IAFkC,EAE5BD,IAF4B,CAA3C;;AAGAqB,qBAAO9C,KAAP,CAAc,kBAAiBwC,KAAlB,aAAkBA,KAAlB,uBAAkBA,KAAK,CAAEO,MAAO,EAA7C;;AAEA,YAAMC,QAAmC,GAAG;AAC1CC,QAAAA,OAAO,EAAET,KADiC;AAE1CU,QAAAA,KAAK,EAAEV,KAAK,CAACO,MAF6B;AAG1CI,QAAAA,IAAI,EAAE,IAAIC,IAAJ,GAAWC,WAAX;AAHoC,OAA5C;AAMAhC,MAAAA,GAAG,CAACL,MAAJ,CAAWsC,kBAAYC,EAAvB,EAA2BC,IAA3B,CAAgCR,QAAhC;AACD,KAzBD,CAyBE,OAAOS,KAAP,EAAc;AACdX,qBAAOW,KAAP,CAAa;AAAEA,QAAAA;AAAF,OAAb,EAAwB,6CAAxB;;AACAnC,MAAAA,IAAI,CAACA,IAAD,CAAJ;AACA;AACD;AACF,GA3CD;AA4CD","sourcesContent":["import _ from 'lodash';\nimport buildDebug from 'debug';\nimport { logger } from '@verdaccio/logger';\nimport { IAuth } from '@verdaccio/auth';\nimport { HTTP_STATUS, searchUtils } from '@verdaccio/core';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nconst debug = buildDebug('verdaccio:api:search');\n\n/**\n * Endpoint for npm search v1\n * Empty value\n * - {\"objects\":[],\"total\":0,\"time\":\"Sun Jul 25 2021 14:09:11 GMT+0000 (Coordinated Universal Time)\"}\n * req: 'GET /-/v1/search?text=react&size=20&frpom=0&quality=0.65&popularity=0.98&maintenance=0.5'\n */\nexport default function (route, auth: IAuth, storage: Storage): void {\n function checkAccess(pkg: any, auth: any, remoteUser): Promise<Package | null> {\n return new Promise((resolve, reject) => {\n auth.allow_access({ packageName: pkg?.package?.name }, remoteUser, function (err, allowed) {\n if (err) {\n if (err.status && String(err.status).match(/^4\\d\\d$/)) {\n // auth plugin returns 4xx user error,\n // that's equivalent of !allowed basically\n allowed = false;\n return resolve(null);\n } else {\n reject(err);\n }\n } else {\n return resolve(allowed ? pkg : null);\n }\n });\n });\n }\n\n route.get('/-/v1/search', async (req, res, next) => {\n const { query, url } = req;\n let [size, from] = ['size', 'from'].map((k) => query[k]);\n let data;\n const abort = new AbortController();\n\n req.on('aborted', () => {\n abort.abort();\n });\n\n size = parseInt(size, 10) || 20;\n from = parseInt(from, 10) || 0;\n\n try {\n data = await storage.searchManager?.search({\n query,\n url,\n abort,\n });\n debug('stream finish');\n const checkAccessPromises: searchUtils.SearchItemPkg[] = await Promise.all(\n data.map((pkgItem) => {\n return checkAccess(pkgItem, auth, req.remote_user);\n })\n );\n\n const final: searchUtils.SearchItemPkg[] = checkAccessPromises\n .filter((i) => !_.isNull(i))\n .slice(from, size);\n logger.debug(`search results ${final?.length}`);\n\n const response: searchUtils.SearchResults = {\n objects: final,\n total: final.length,\n time: new Date().toUTCString(),\n };\n\n res.status(HTTP_STATUS.OK).json(response);\n } catch (error) {\n logger.error({ error }, 'search endpoint has failed @{error.message}');\n next(next);\n return;\n }\n });\n}\n"],"file":"search.js"}
|
package/build/v1/token.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.default = _default;
|
|
|
7
7
|
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _core = require("@verdaccio/core");
|
|
11
11
|
|
|
12
12
|
var _utils = require("@verdaccio/utils");
|
|
13
13
|
|
|
@@ -47,7 +47,7 @@ function _default(route, auth, storage, config) {
|
|
|
47
47
|
totalTokens
|
|
48
48
|
}, 'token list retrieved: @{totalTokens}');
|
|
49
49
|
|
|
50
|
-
res.status(
|
|
50
|
+
res.status(_core.HTTP_STATUS.OK);
|
|
51
51
|
return next({
|
|
52
52
|
objects: tokens.map(normalizeToken),
|
|
53
53
|
urls: {
|
|
@@ -60,11 +60,11 @@ function _default(route, auth, storage, config) {
|
|
|
60
60
|
error: error.msg
|
|
61
61
|
}, 'token list has failed: @{error}');
|
|
62
62
|
|
|
63
|
-
return next(
|
|
63
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.INTERNAL_ERROR, error.message));
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
return next(
|
|
67
|
+
return next(_core.errorUtils.getUnauthorized());
|
|
68
68
|
});
|
|
69
69
|
route.post('/-/npm/v1/tokens', function (req, res, next) {
|
|
70
70
|
const {
|
|
@@ -77,26 +77,26 @@ function _default(route, auth, storage, config) {
|
|
|
77
77
|
} = req.remote_user;
|
|
78
78
|
|
|
79
79
|
if (!_lodash.default.isBoolean(readonly) || !_lodash.default.isArray(cidr_whitelist)) {
|
|
80
|
-
return next(
|
|
80
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.BAD_DATA, _core.SUPPORT_ERRORS.PARAMETERS_NOT_VALID));
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
auth.authenticate(name, password, async (err, user) => {
|
|
84
84
|
if (err) {
|
|
85
|
-
const errorCode = err.message ?
|
|
86
|
-
return next(
|
|
85
|
+
const errorCode = err.message ? _core.HTTP_STATUS.UNAUTHORIZED : _core.HTTP_STATUS.INTERNAL_ERROR;
|
|
86
|
+
return next(_core.errorUtils.getCode(errorCode, err.message));
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
req.remote_user = user;
|
|
90
90
|
|
|
91
91
|
if (!_lodash.default.isFunction(storage.saveToken)) {
|
|
92
|
-
return next(
|
|
92
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.NOT_IMPLEMENTED, _core.SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT));
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
try {
|
|
96
96
|
const token = await (0, _auth.getApiToken)(auth, config, user, password);
|
|
97
97
|
|
|
98
98
|
if (!token) {
|
|
99
|
-
throw
|
|
99
|
+
throw _core.errorUtils.getInternalError();
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
const key = (0, _utils.stringToMD5)(token); // TODO: use a utility here
|
|
@@ -137,7 +137,7 @@ function _default(route, auth, storage, config) {
|
|
|
137
137
|
error: error.msg
|
|
138
138
|
}, 'token creation has failed: @{error}');
|
|
139
139
|
|
|
140
|
-
return next(
|
|
140
|
+
return next(_core.errorUtils.getInternalError(error.message));
|
|
141
141
|
}
|
|
142
142
|
});
|
|
143
143
|
});
|
|
@@ -170,11 +170,11 @@ function _default(route, auth, storage, config) {
|
|
|
170
170
|
error: error.msg
|
|
171
171
|
}, 'token creation has failed: @{error}');
|
|
172
172
|
|
|
173
|
-
return next(
|
|
173
|
+
return next(_core.errorUtils.getCode(_core.HTTP_STATUS.INTERNAL_ERROR, error.message));
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
return next(
|
|
177
|
+
return next(_core.errorUtils.getUnauthorized());
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
180
|
//# sourceMappingURL=token.js.map
|
package/build/v1/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v1/token.ts"],"names":["normalizeToken","token","created","Date","toISOString","route","auth","storage","config","get","req","res","next","name","remote_user","_","isNil","tokens","readTokens","user","totalTokens","length","logger","debug","status","HTTP_STATUS","OK","objects","map","urls","error","msg","
|
|
1
|
+
{"version":3,"sources":["../../src/v1/token.ts"],"names":["normalizeToken","token","created","Date","toISOString","route","auth","storage","config","get","req","res","next","name","remote_user","_","isNil","tokens","readTokens","user","totalTokens","length","logger","debug","status","HTTP_STATUS","OK","objects","map","urls","error","msg","errorUtils","getCode","INTERNAL_ERROR","message","getUnauthorized","post","password","readonly","cidr_whitelist","body","isBoolean","isArray","BAD_DATA","SUPPORT_ERRORS","PARAMETERS_NOT_VALID","authenticate","err","errorCode","UNAUTHORIZED","isFunction","saveToken","NOT_IMPLEMENTED","STORAGE_NOT_IMPLEMENT","getInternalError","key","maskedToken","getTime","cidr","delete","params","tokenKey","deleteToken","info"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { errorUtils, HTTP_STATUS, SUPPORT_ERRORS } from '@verdaccio/core';\nimport { stringToMD5, mask } from '@verdaccio/utils';\nimport { getApiToken } from '@verdaccio/auth';\nimport { logger } from '@verdaccio/logger';\nimport { Response, Router } from 'express';\n\nimport { Config, RemoteUser, Token } from '@verdaccio/types';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { $RequestExtend, $NextFunctionVer } from '../../types/custom';\n\nexport type NormalizeToken = Token & {\n created: string;\n};\n\nfunction normalizeToken(token: Token): NormalizeToken {\n return {\n ...token,\n created: new Date(token.created).toISOString(),\n };\n}\n\n// https://github.com/npm/npm-profile/blob/latest/lib/index.js\nexport default function (route: Router, auth: IAuth, storage: Storage, config: Config): void {\n route.get(\n '/-/npm/v1/tokens',\n async function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n try {\n const tokens = await storage.readTokens({ user: name });\n const totalTokens = tokens.length;\n logger.debug({ totalTokens }, 'token list retrieved: @{totalTokens}');\n\n res.status(HTTP_STATUS.OK);\n return next({\n objects: tokens.map(normalizeToken),\n urls: {\n next: '', // TODO: pagination?\n },\n });\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token list has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n\n route.post(\n '/-/npm/v1/tokens',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { password, readonly, cidr_whitelist } = req.body;\n const { name } = req.remote_user;\n\n if (!_.isBoolean(readonly) || !_.isArray(cidr_whitelist)) {\n return next(errorUtils.getCode(HTTP_STATUS.BAD_DATA, SUPPORT_ERRORS.PARAMETERS_NOT_VALID));\n }\n\n auth.authenticate(name, password, async (err, user: RemoteUser) => {\n if (err) {\n const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR;\n return next(errorUtils.getCode(errorCode, err.message));\n }\n\n req.remote_user = user;\n\n if (!_.isFunction(storage.saveToken)) {\n return next(\n errorUtils.getCode(HTTP_STATUS.NOT_IMPLEMENTED, SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT)\n );\n }\n\n try {\n const token = await getApiToken(auth, config, user, password);\n if (!token) {\n throw errorUtils.getInternalError();\n }\n\n const key = stringToMD5(token);\n // TODO: use a utility here\n const maskedToken = mask(token, 5);\n const created = new Date().getTime();\n\n /**\n * cidr_whitelist: is not being used, we pass it through\n * token: we do not store the real token (it is generated once and retrieved\n * to the user), just a mask of it.\n */\n const saveToken: Token = {\n user: name,\n token: maskedToken,\n key,\n cidr: cidr_whitelist,\n readonly,\n created,\n };\n\n await storage.saveToken(saveToken);\n logger.debug({ key, name }, 'token @{key} was created for user @{name}');\n return next(\n normalizeToken({\n token,\n user: name,\n key: saveToken.key,\n cidr: cidr_whitelist,\n readonly,\n created: saveToken.created,\n })\n );\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getInternalError(error.message));\n }\n });\n }\n );\n\n route.delete(\n '/-/npm/v1/tokens/token/:tokenKey',\n async (req: $RequestExtend, res: Response, next: $NextFunctionVer) => {\n const {\n params: { tokenKey },\n } = req;\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n logger.debug({ name }, '@{name} has requested remove a token');\n try {\n await storage.deleteToken(name, tokenKey);\n logger.info({ tokenKey, name }, 'token id @{tokenKey} was revoked for user @{name}');\n return next({});\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n}\n"],"file":"token.js"}
|
package/build/whoami.js
CHANGED
|
@@ -9,7 +9,6 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
9
9
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
|
12
|
-
// import { getUnauthorized } from '@verdaccio/commons-api';
|
|
13
12
|
const debug = (0, _debug.default)('verdaccio:api:user');
|
|
14
13
|
|
|
15
14
|
function _default(route) {
|
package/build/whoami.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/whoami.ts"],"names":["debug","route","get","req","res","next","headers","referer","username","remote_user","name"],"mappings":";;;;;;;AACA;;;;
|
|
1
|
+
{"version":3,"sources":["../src/whoami.ts"],"names":["debug","route","get","req","res","next","headers","referer","username","remote_user","name"],"mappings":";;;;;;;AACA;;;;AAGA,MAAMA,KAAK,GAAG,oBAAW,oBAAX,CAAd;;AAEe,kBAAUC,KAAV,EAA+B;AAC5CA,EAAAA,KAAK,CAACC,GAAN,CAAU,SAAV,EAAqB,CAACC,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAsE;AACzFL,IAAAA,KAAK,CAAC,kBAAD,CAAL;;AACA,QAAIG,GAAG,CAACG,OAAJ,CAAYC,OAAZ,KAAwB,QAA5B,EAAsC;AACpC,YAAMC,QAAQ,GAAGL,GAAG,CAACM,WAAJ,CAAgBC,IAAjC,CADoC,CAEpC;AACA;AACA;AACA;AACA;;AACAV,MAAAA,KAAK,CAAC,wBAAD,CAAL;AACA,aAAOK,IAAI,CAAC;AAAEG,QAAAA,QAAQ,EAAEA;AAAZ,OAAD,CAAX;AACD,KATD,MASO;AACLR,MAAAA,KAAK,CAAC,6BAAD,CAAL,CADK,CAEL;;AACA,aAAOK,IAAI,CAAC,OAAD,CAAX;AACD;AACF,GAhBD;AAkBAJ,EAAAA,KAAK,CAACC,GAAN,CAAU,WAAV,EAAuB,CAACC,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAqE;AAC1F,UAAMG,QAAQ,GAAGL,GAAG,CAACM,WAAJ,CAAgBC,IAAjC,CAD0F,CAE1F;AACA;AACA;AACA;AACA;;AAEAV,IAAAA,KAAK,CAAC,qBAAD,EAAwBQ,QAAxB,CAAL;AACA,WAAOH,IAAI,CAAC;AAAEG,MAAAA,QAAQ,EAAEA;AAAZ,KAAD,CAAX;AACD,GAVD;AAWD","sourcesContent":["import { Response, Router } from 'express';\nimport buildDebug from 'debug';\nimport { $RequestExtend, $NextFunctionVer } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:user');\n\nexport default function (route: Router): void {\n route.get('/whoami', (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => {\n debug('whoami: reditect');\n if (req.headers.referer === 'whoami') {\n const username = req.remote_user.name;\n // FIXME: this service should return 401 if user missing\n // if (!username) {\n // debug('whoami: user not found');\n // return next(getUnauthorized('Unauthorized'));\n // }\n debug('whoami: logged by user');\n return next({ username: username });\n } else {\n debug('whoami: redirect next route');\n // redirect to the route below\n return next('route');\n }\n });\n\n route.get('/-/whoami', (req: $RequestExtend, res: Response, next: $NextFunctionVer): any => {\n const username = req.remote_user.name;\n // FIXME: this service should return 401 if user missing\n // if (!username) {\n // debug('whoami: user not found');\n // return next(getUnauthorized('Unauthorized'));\n // }\n\n debug('whoami: response %o', username);\n return next({ username: username });\n });\n}\n"],"file":"whoami.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdaccio/api",
|
|
3
|
-
"version": "6.0.0-6-next.
|
|
3
|
+
"version": "6.0.0-6-next.16",
|
|
4
4
|
"description": "loaders logic",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -25,21 +25,21 @@
|
|
|
25
25
|
"verdaccio"
|
|
26
26
|
],
|
|
27
27
|
"engines": {
|
|
28
|
-
"node": ">=
|
|
28
|
+
"node": ">=14",
|
|
29
29
|
"npm": ">=6"
|
|
30
30
|
},
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@verdaccio/auth": "6.0.0-6-next.
|
|
34
|
-
"@verdaccio/
|
|
35
|
-
"@verdaccio/
|
|
36
|
-
"@verdaccio/
|
|
37
|
-
"@verdaccio/
|
|
38
|
-
"@verdaccio/
|
|
39
|
-
"@verdaccio/
|
|
40
|
-
"@verdaccio/
|
|
41
|
-
"@verdaccio/
|
|
42
|
-
"
|
|
33
|
+
"@verdaccio/auth": "6.0.0-6-next.13",
|
|
34
|
+
"@verdaccio/config": "6.0.0-6-next.9",
|
|
35
|
+
"@verdaccio/core": "6.0.0-6-next.2",
|
|
36
|
+
"@verdaccio/hooks": "6.0.0-6-next.8",
|
|
37
|
+
"@verdaccio/logger": "6.0.0-6-next.6",
|
|
38
|
+
"@verdaccio/middleware": "6.0.0-6-next.13",
|
|
39
|
+
"@verdaccio/store": "6.0.0-6-next.14",
|
|
40
|
+
"@verdaccio/tarball": "11.0.0-6-next.8",
|
|
41
|
+
"@verdaccio/utils": "6.0.0-6-next.7",
|
|
42
|
+
"abortcontroller-polyfill": "1.7.3",
|
|
43
43
|
"cookies": "0.8.0",
|
|
44
44
|
"debug": "4.3.2",
|
|
45
45
|
"express": "4.17.1",
|
|
@@ -49,8 +49,9 @@
|
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/node": "16.9.1",
|
|
52
|
-
"@verdaccio/server": "6.0.0-6-next.
|
|
53
|
-
"@verdaccio/types": "11.0.0-6-next.
|
|
52
|
+
"@verdaccio/server": "6.0.0-6-next.21",
|
|
53
|
+
"@verdaccio/types": "11.0.0-6-next.9",
|
|
54
|
+
"@verdaccio/helper": "1.0.0",
|
|
54
55
|
"body-parser": "1.19.0",
|
|
55
56
|
"lodash": "4.17.21",
|
|
56
57
|
"supertest": "6.1.6"
|
package/src/dist-tags.ts
CHANGED
|
@@ -3,7 +3,7 @@ import _ from 'lodash';
|
|
|
3
3
|
import { Router } from 'express';
|
|
4
4
|
|
|
5
5
|
import { media, allow } from '@verdaccio/middleware';
|
|
6
|
-
import {
|
|
6
|
+
import { constants, VerdaccioError } from '@verdaccio/core';
|
|
7
7
|
import { Package } from '@verdaccio/types';
|
|
8
8
|
import { Storage } from '@verdaccio/store';
|
|
9
9
|
import { IAuth } from '@verdaccio/auth';
|
|
@@ -26,8 +26,8 @@ export default function (route: Router, auth: IAuth, storage: Storage): void {
|
|
|
26
26
|
if (err) {
|
|
27
27
|
return next(err);
|
|
28
28
|
}
|
|
29
|
-
res.status(HTTP_STATUS.CREATED);
|
|
30
|
-
return next({ ok: API_MESSAGE.TAG_ADDED });
|
|
29
|
+
res.status(constants.HTTP_STATUS.CREATED);
|
|
30
|
+
return next({ ok: constants.API_MESSAGE.TAG_ADDED });
|
|
31
31
|
});
|
|
32
32
|
};
|
|
33
33
|
|
|
@@ -58,9 +58,9 @@ export default function (route: Router, auth: IAuth, storage: Storage): void {
|
|
|
58
58
|
if (err) {
|
|
59
59
|
return next(err);
|
|
60
60
|
}
|
|
61
|
-
res.status(HTTP_STATUS.CREATED);
|
|
61
|
+
res.status(constants.HTTP_STATUS.CREATED);
|
|
62
62
|
return next({
|
|
63
|
-
ok: API_MESSAGE.TAG_REMOVED,
|
|
63
|
+
ok: constants.API_MESSAGE.TAG_REMOVED,
|
|
64
64
|
});
|
|
65
65
|
});
|
|
66
66
|
}
|
|
@@ -79,7 +79,7 @@ export default function (route: Router, auth: IAuth, storage: Storage): void {
|
|
|
79
79
|
return next(err);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
next(info[DIST_TAGS]);
|
|
82
|
+
next(info[constants.DIST_TAGS]);
|
|
83
83
|
},
|
|
84
84
|
});
|
|
85
85
|
}
|
|
@@ -96,9 +96,9 @@ export default function (route: Router, auth: IAuth, storage: Storage): void {
|
|
|
96
96
|
if (err) {
|
|
97
97
|
return next(err);
|
|
98
98
|
}
|
|
99
|
-
res.status(HTTP_STATUS.CREATED);
|
|
99
|
+
res.status(constants.HTTP_STATUS.CREATED);
|
|
100
100
|
return next({
|
|
101
|
-
ok: API_MESSAGE.TAG_UPDATED,
|
|
101
|
+
ok: constants.API_MESSAGE.TAG_UPDATED,
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
104
|
);
|