@verdaccio/api 6.0.0-6-next.15 → 6.0.0-6-next.19
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 +108 -0
- package/build/dist-tags.d.ts +1 -1
- package/build/dist-tags.js +10 -10
- package/build/dist-tags.js.map +1 -1
- package/build/index.js +16 -10
- package/build/index.js.map +1 -1
- package/build/package.d.ts +1 -2
- package/build/package.js +30 -63
- package/build/package.js.map +1 -1
- package/build/ping.js.map +1 -1
- package/build/publish.d.ts +2 -2
- package/build/publish.js +28 -34
- package/build/publish.js.map +1 -1
- package/build/search.js +2 -2
- package/build/search.js.map +1 -1
- package/build/star.d.ts +1 -1
- package/build/star.js +9 -15
- package/build/star.js.map +1 -1
- package/build/stars.js +3 -3
- package/build/stars.js.map +1 -1
- package/build/user.d.ts +1 -1
- package/build/user.js +17 -17
- package/build/user.js.map +1 -1
- package/build/utils.js.map +1 -1
- package/build/v1/profile.js +10 -10
- package/build/v1/profile.js.map +1 -1
- package/build/v1/search.js +16 -7
- package/build/v1/search.js.map +1 -1
- package/build/v1/token.d.ts +1 -1
- package/build/v1/token.js +17 -23
- package/build/v1/token.js.map +1 -1
- package/build/whoami.js +0 -1
- package/build/whoami.js.map +1 -1
- package/package.json +18 -19
- package/src/dist-tags.ts +14 -13
- package/src/index.ts +16 -10
- package/src/package.ts +38 -57
- package/src/ping.ts +2 -1
- package/src/publish.ts +18 -11
- package/src/search.ts +1 -1
- package/src/star.ts +4 -3
- package/src/stars.ts +4 -4
- package/src/user.ts +13 -13
- package/src/utils.ts +2 -1
- package/src/v1/profile.ts +10 -9
- package/src/v1/search.ts +14 -7
- package/src/v1/token.ts +17 -16
- package/src/whoami.ts +3 -3
- package/test/integration/_helper.ts +7 -5
- package/test/integration/package.spec.ts +3 -2
- package/test/integration/ping.spec.ts +2 -1
- package/test/integration/publish.spec.ts +6 -9
- package/test/integration/user.spec.ts +9 -11
- package/test/integration/whoami.spec.ts +1 -1
- package/test/unit/publish.spec.ts +6 -6
- package/test/unit/validate.api.params.middleware.spec.ts +1 -1
- package/tsconfig.json +0 -3
- package/types/custom.d.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,113 @@
|
|
|
1
1
|
# @verdaccio/api
|
|
2
2
|
|
|
3
|
+
## 6.0.0-6-next.19
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- a828271d: refactor: download manifest endpoint and integrate fastify
|
|
8
|
+
|
|
9
|
+
Much simpler API for fetching a package
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
const manifest = await storage.getPackageNext({
|
|
13
|
+
name,
|
|
14
|
+
uplinksLook: true,
|
|
15
|
+
req,
|
|
16
|
+
version: queryVersion,
|
|
17
|
+
requestOptions,
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
> not perfect, the `req` still is being passed to the proxy (this has to be refactored at proxy package) and then removed from here, in proxy we pass the request instance to the `request` library.
|
|
22
|
+
|
|
23
|
+
### Details
|
|
24
|
+
|
|
25
|
+
- `async/await` sugar for getPackage()
|
|
26
|
+
- Improve and reuse code between current implementation and new fastify endpoint (add scaffolding for request manifest)
|
|
27
|
+
- Improve performance
|
|
28
|
+
- Add new tests
|
|
29
|
+
|
|
30
|
+
### Breaking changes
|
|
31
|
+
|
|
32
|
+
All storage plugins will stop to work since the storage uses `getPackageNext` method which is Promise based, I won't replace this now because will force me to update all plugins, I'll follow up in another PR. Currently will throw http 500
|
|
33
|
+
|
|
34
|
+
### Minor Changes
|
|
35
|
+
|
|
36
|
+
- 24b9be02: refactor: improve docker image build with strict dependencies and prod build
|
|
37
|
+
- b13a3fef: refactor: improve versions and dist-tag filters
|
|
38
|
+
|
|
39
|
+
### Patch Changes
|
|
40
|
+
|
|
41
|
+
- Updated dependencies [a828271d]
|
|
42
|
+
- Updated dependencies [24b9be02]
|
|
43
|
+
- Updated dependencies [e75c0a3b]
|
|
44
|
+
- Updated dependencies [b13a3fef]
|
|
45
|
+
- @verdaccio/store@6.0.0-6-next.17
|
|
46
|
+
- @verdaccio/utils@6.0.0-6-next.10
|
|
47
|
+
- @verdaccio/core@6.0.0-6-next.4
|
|
48
|
+
- @verdaccio/middleware@6.0.0-6-next.16
|
|
49
|
+
- @verdaccio/logger@6.0.0-6-next.8
|
|
50
|
+
- @verdaccio/auth@6.0.0-6-next.16
|
|
51
|
+
- @verdaccio/config@6.0.0-6-next.12
|
|
52
|
+
- @verdaccio/hooks@6.0.0-6-next.10
|
|
53
|
+
|
|
54
|
+
## 6.0.0-6-next.18
|
|
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/hooks@6.0.0-6-next.9
|
|
67
|
+
|
|
68
|
+
## 6.0.0-6-next.17
|
|
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/hooks@6.0.0-6-next.9
|
|
79
|
+
- @verdaccio/middleware@6.0.0-6-next.14
|
|
80
|
+
- @verdaccio/store@6.0.0-6-next.15
|
|
81
|
+
- @verdaccio/utils@6.0.0-6-next.8
|
|
82
|
+
|
|
83
|
+
## 6.0.0-6-next.16
|
|
84
|
+
|
|
85
|
+
### Major Changes
|
|
86
|
+
|
|
87
|
+
- 794af76c: Remove Node 12 support
|
|
88
|
+
|
|
89
|
+
- We need move to the new `undici` and does not support Node.js 12
|
|
90
|
+
|
|
91
|
+
### Minor Changes
|
|
92
|
+
|
|
93
|
+
- b702ea36: abort search request support for proxy
|
|
94
|
+
- 154b2ecd: refactor: remove @verdaccio/commons-api in favor @verdaccio/core and remove duplications
|
|
95
|
+
|
|
96
|
+
### Patch Changes
|
|
97
|
+
|
|
98
|
+
- Updated dependencies [794af76c]
|
|
99
|
+
- Updated dependencies [b702ea36]
|
|
100
|
+
- Updated dependencies [154b2ecd]
|
|
101
|
+
- @verdaccio/auth@6.0.0-6-next.13
|
|
102
|
+
- @verdaccio/config@6.0.0-6-next.9
|
|
103
|
+
- @verdaccio/core@6.0.0-6-next.2
|
|
104
|
+
- @verdaccio/tarball@11.0.0-6-next.8
|
|
105
|
+
- @verdaccio/hooks@6.0.0-6-next.8
|
|
106
|
+
- @verdaccio/logger@6.0.0-6-next.6
|
|
107
|
+
- @verdaccio/middleware@6.0.0-6-next.13
|
|
108
|
+
- @verdaccio/store@6.0.0-6-next.14
|
|
109
|
+
- @verdaccio/utils@6.0.0-6-next.7
|
|
110
|
+
|
|
3
111
|
## 6.0.0-6-next.15
|
|
4
112
|
|
|
5
113
|
### Patch Changes
|
package/build/dist-tags.d.ts
CHANGED
package/build/dist-tags.js
CHANGED
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
+
|
|
8
10
|
var _mime = _interopRequireDefault(require("mime"));
|
|
9
11
|
|
|
10
|
-
var
|
|
12
|
+
var _core = require("@verdaccio/core");
|
|
11
13
|
|
|
12
14
|
var _middleware = require("@verdaccio/middleware");
|
|
13
15
|
|
|
14
|
-
var _commonsApi = require("@verdaccio/commons-api");
|
|
15
|
-
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
18
|
function _default(route, auth, storage) {
|
|
@@ -30,9 +30,9 @@ function _default(route, auth, storage) {
|
|
|
30
30
|
return next(err);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
res.status(
|
|
33
|
+
res.status(_core.constants.HTTP_STATUS.CREATED);
|
|
34
34
|
return next({
|
|
35
|
-
ok:
|
|
35
|
+
ok: _core.constants.API_MESSAGE.TAG_ADDED
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
38
|
}; // tagging a package.
|
|
@@ -49,9 +49,9 @@ function _default(route, auth, storage) {
|
|
|
49
49
|
return next(err);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
res.status(
|
|
52
|
+
res.status(_core.constants.HTTP_STATUS.CREATED);
|
|
53
53
|
return next({
|
|
54
|
-
ok:
|
|
54
|
+
ok: _core.constants.API_MESSAGE.TAG_REMOVED
|
|
55
55
|
});
|
|
56
56
|
});
|
|
57
57
|
});
|
|
@@ -65,7 +65,7 @@ function _default(route, auth, storage) {
|
|
|
65
65
|
return next(err);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
next(info[
|
|
68
|
+
next(info[_core.constants.DIST_TAGS]);
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
});
|
|
@@ -75,9 +75,9 @@ function _default(route, auth, storage) {
|
|
|
75
75
|
return next(err);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
res.status(
|
|
78
|
+
res.status(_core.constants.HTTP_STATUS.CREATED);
|
|
79
79
|
return next({
|
|
80
|
-
ok:
|
|
80
|
+
ok: _core.constants.API_MESSAGE.TAG_UPDATED
|
|
81
81
|
});
|
|
82
82
|
});
|
|
83
83
|
});
|
package/build/dist-tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dist-tags.ts"],"names":["route","auth","storage","can","tag_package_version","req","res","next","_","isString","body","tags","params","tag","mergeTags","package","err","status","HTTP_STATUS","CREATED","ok","API_MESSAGE","TAG_ADDED","put","mime","getType","post","delete","TAG_REMOVED","get","getPackage","name","uplinksLook","callback","info","DIST_TAGS","TAG_UPDATED"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/dist-tags.ts"],"names":["route","auth","storage","can","tag_package_version","req","res","next","_","isString","body","tags","params","tag","mergeTags","package","err","status","constants","HTTP_STATUS","CREATED","ok","API_MESSAGE","TAG_ADDED","put","mime","getType","post","delete","TAG_REMOVED","get","getPackage","name","uplinksLook","callback","info","DIST_TAGS","TAG_UPDATED"],"mappings":"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","sourcesContent":["import { Router } from 'express';\nimport _ from 'lodash';\nimport mime from 'mime';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { VerdaccioError, constants } from '@verdaccio/core';\nimport { allow, media } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nexport default function (route: Router, auth: IAuth, storage: Storage): void {\n const can = allow(auth);\n const tag_package_version = function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): $NextFunctionVer {\n if (_.isString(req.body) === false) {\n return next('route');\n }\n\n const tags = {};\n tags[req.params.tag] = req.body;\n storage.mergeTags(req.params.package, tags, function (err: Error): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({ ok: constants.API_MESSAGE.TAG_ADDED });\n });\n };\n\n // tagging a package.\n route.put('/:package/:tag', can('publish'), media(mime.getType('json')), tag_package_version);\n\n route.post(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.put(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n media(mime.getType('json')),\n tag_package_version\n );\n\n route.delete(\n '/-/package/:package/dist-tags/:tag',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const tags = {};\n tags[req.params.tag] = null;\n storage.mergeTags(req.params.package, tags, function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_REMOVED,\n });\n });\n }\n );\n\n route.get(\n '/-/package/:package/dist-tags',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.getPackage({\n name: req.params.package,\n uplinksLook: true,\n req,\n callback: function (err: VerdaccioError, info: Package): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n\n next(info[constants.DIST_TAGS]);\n },\n });\n }\n );\n\n route.post(\n '/-/package/:package/dist-tags',\n can('publish'),\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n storage.mergeTags(\n req.params.package,\n req.body,\n function (err: VerdaccioError): $NextFunctionVer {\n if (err) {\n return next(err);\n }\n res.status(constants.HTTP_STATUS.CREATED);\n return next({\n ok: constants.API_MESSAGE.TAG_UPDATED,\n });\n }\n );\n }\n );\n}\n"],"file":"dist-tags.js"}
|
package/build/index.js
CHANGED
|
@@ -5,36 +5,42 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
+
var _bodyParser = _interopRequireDefault(require("body-parser"));
|
|
9
|
+
|
|
8
10
|
var _express = _interopRequireDefault(require("express"));
|
|
9
11
|
|
|
12
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
13
|
+
|
|
10
14
|
var _middleware = require("@verdaccio/middleware");
|
|
11
15
|
|
|
12
|
-
var
|
|
16
|
+
var _distTags = _interopRequireDefault(require("./dist-tags"));
|
|
13
17
|
|
|
14
|
-
var
|
|
18
|
+
var _package = _interopRequireDefault(require("./package"));
|
|
15
19
|
|
|
16
20
|
var _ping = _interopRequireDefault(require("./ping"));
|
|
17
21
|
|
|
18
|
-
var _user = _interopRequireDefault(require("./user"));
|
|
19
|
-
|
|
20
|
-
var _distTags = _interopRequireDefault(require("./dist-tags"));
|
|
21
|
-
|
|
22
22
|
var _publish = _interopRequireDefault(require("./publish"));
|
|
23
23
|
|
|
24
24
|
var _search = _interopRequireDefault(require("./search"));
|
|
25
25
|
|
|
26
|
-
var _package = _interopRequireDefault(require("./package"));
|
|
27
|
-
|
|
28
26
|
var _stars = _interopRequireDefault(require("./stars"));
|
|
29
27
|
|
|
28
|
+
var _user = _interopRequireDefault(require("./user"));
|
|
29
|
+
|
|
30
30
|
var _profile = _interopRequireDefault(require("./v1/profile"));
|
|
31
31
|
|
|
32
|
+
var _search2 = _interopRequireDefault(require("./v1/search"));
|
|
33
|
+
|
|
32
34
|
var _token = _interopRequireDefault(require("./v1/token"));
|
|
33
35
|
|
|
34
|
-
var
|
|
36
|
+
var _whoami = _interopRequireDefault(require("./whoami"));
|
|
35
37
|
|
|
36
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
39
|
|
|
40
|
+
if (_semver.default.lte(process.version, 'v15.0.0')) {
|
|
41
|
+
global.AbortController = require('abortcontroller-polyfill/dist/cjs-ponyfill').AbortController;
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
function _default(config, auth, storage) {
|
|
39
45
|
/* eslint new-cap:off */
|
|
40
46
|
const app = _express.default.Router();
|
|
@@ -65,7 +71,7 @@ function _default(config, auth, storage) {
|
|
|
65
71
|
app.use(_middleware.encodeScopePackage); // for "npm whoami"
|
|
66
72
|
|
|
67
73
|
(0, _whoami.default)(app);
|
|
68
|
-
(0, _package.default)(app, auth, storage
|
|
74
|
+
(0, _package.default)(app, auth, storage);
|
|
69
75
|
(0, _profile.default)(app, auth); // @deprecated endpoint, 404 by default
|
|
70
76
|
|
|
71
77
|
(0, _search.default)(app);
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["config","auth","storage","app","express","Router","param","validatePackage","validateName","use","apiJWTmiddleware","bodyParser","json","strict","limit","max_body_size","encodeScopePackage"],"mappings":";;;;;;;AAAA;;AACA;;AAUA;;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["semver","lte","process","version","global","AbortController","require","config","auth","storage","app","express","Router","param","validatePackage","validateName","use","apiJWTmiddleware","bodyParser","json","strict","limit","max_body_size","encodeScopePackage"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAGA;;AAUA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAIA,gBAAOC,GAAP,CAAWC,OAAO,CAACC,OAAnB,EAA4B,SAA5B,CAAJ,EAA4C;AAC1CC,EAAAA,MAAM,CAACC,eAAP,GAAyBC,OAAO,CAAC,4CAAD,CAAP,CAAsDD,eAA/E;AACD;;AAEc,kBAAUE,MAAV,EAA0BC,IAA1B,EAAuCC,OAAvC,EAAiE;AAC9E;AACA,QAAMC,GAAG,GAAGC,iBAAQC,MAAR,EAAZ;AACA;AAEA;AACA;;;AACAF,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBC,2BAArB;AACAJ,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,KAAV,EAAiBE,wBAAjB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,SAAV,EAAqBE,wBAArB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsBE,wBAAtB;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,OAAV,EAAmBE,wBAAnB,EAZ8E,CAc9E;AACA;;AACAL,EAAAA,GAAG,CAACG,KAAJ,CAAU,MAAV,EAAkB,uBAAM,QAAN,CAAlB;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,kBAAV,EAA8B,uBAAM,sBAAN,CAA9B;AACAH,EAAAA,GAAG,CAACG,KAAJ,CAAU,UAAV,EAAsB,uBAAM,IAAN,CAAtB;AACAH,EAAAA,GAAG,CAACM,GAAJ,CAAQR,IAAI,CAACS,gBAAL,EAAR;AACAP,EAAAA,GAAG,CAACM,GAAJ,CAAQE,oBAAWC,IAAX,CAAgB;AAAEC,IAAAA,MAAM,EAAE,KAAV;AAAiBC,IAAAA,KAAK,EAAEd,MAAM,CAACe,aAAP,IAAwB;AAAhD,GAAhB,CAAR,EApB8E,CAqB9E;;AACAZ,EAAAA,GAAG,CAACM,GAAJ,CAAQ,0BAAST,MAAT,CAAR,EAtB8E,CAuB9E;;AACAG,EAAAA,GAAG,CAACM,GAAJ,CAAQO,8BAAR,EAxB8E,CAyB9E;;AACA,uBAAOb,GAAP;AACA,wBAAIA,GAAJ,EAASF,IAAT,EAAeC,OAAf;AACA,wBAAQC,GAAR,EAAaF,IAAb,EA5B8E,CA6B9E;;AACA,uBAAOE,GAAP;AACA,qBAAKA,GAAL,EAAUF,IAAV,EAAgBD,MAAhB;AACA,yBAASG,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,wBAAQC,GAAR,EAAaF,IAAb,EAAmBC,OAAnB,EAA4BF,MAA5B;AACA,qBAAKG,GAAL;AACA,sBAAMA,GAAN,EAAWD,OAAX,EAnC8E,CAoC9E;;AACA,wBAASC,GAAT,EAAcF,IAAd,EAAoBC,OAApB;AACA,sBAAMC,GAAN,EAAWF,IAAX,EAAiBC,OAAjB,EAA0BF,MAA1B;AACA,SAAOG,GAAP;AACD","sourcesContent":["import bodyParser from 'body-parser';\nimport express, { Router } from 'express';\nimport semver from 'semver';\n\nimport { IAuth } from '@verdaccio/auth';\nimport {\n antiLoop,\n encodeScopePackage,\n match,\n validateName,\n validatePackage,\n} from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Config } from '@verdaccio/types';\n\nimport distTags from './dist-tags';\nimport pkg from './package';\nimport ping from './ping';\nimport publish from './publish';\nimport search from './search';\nimport stars from './stars';\nimport user from './user';\nimport profile from './v1/profile';\nimport v1Search from './v1/search';\nimport token from './v1/token';\nimport whoami from './whoami';\n\nif (semver.lte(process.version, 'v15.0.0')) {\n global.AbortController = require('abortcontroller-polyfill/dist/cjs-ponyfill').AbortController;\n}\n\nexport default function (config: Config, auth: IAuth, storage: Storage): Router {\n /* eslint new-cap:off */\n const app = express.Router();\n /* eslint new-cap:off */\n\n // validate all of these params as a package name\n // this might be too harsh, so ask if it causes trouble\n app.param('package', validatePackage);\n app.param('filename', validateName);\n app.param('tag', validateName);\n app.param('version', validateName);\n app.param('revision', validateName);\n app.param('token', validateName);\n\n // these can't be safely put into express url for some reason\n // TODO: For some reason? what reason?\n app.param('_rev', match(/^-rev$/));\n app.param('org_couchdb_user', match(/^org\\.couchdb\\.user:/));\n app.param('anything', match(/.*/));\n app.use(auth.apiJWTmiddleware());\n app.use(bodyParser.json({ strict: false, limit: config.max_body_size || '10mb' }));\n // @ts-ignore\n app.use(antiLoop(config));\n // encode / in a scoped package name to be matched as a single parameter in routes\n app.use(encodeScopePackage);\n // for \"npm whoami\"\n whoami(app);\n pkg(app, auth, storage);\n profile(app, auth);\n // @deprecated endpoint, 404 by default\n search(app);\n user(app, auth, config);\n distTags(app, auth, storage);\n publish(app, auth, storage, config);\n ping(app);\n stars(app, storage);\n // @ts-ignore\n v1Search(app, auth, storage);\n token(app, auth, storage, config);\n return app;\n}\n"],"file":"index.js"}
|
package/build/package.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { Config } from '@verdaccio/types';
|
|
3
2
|
import { IAuth } from '@verdaccio/auth';
|
|
4
3
|
import { Storage } from '@verdaccio/store';
|
|
5
|
-
export default function (route: Router, auth: IAuth, storage: Storage
|
|
4
|
+
export default function (route: Router, auth: IAuth, storage: Storage): void;
|
package/build/package.js
CHANGED
|
@@ -5,23 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
-
|
|
10
8
|
var _debug = _interopRequireDefault(require("debug"));
|
|
11
9
|
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
var _utils = require("@verdaccio/utils");
|
|
10
|
+
var _core = require("@verdaccio/core");
|
|
15
11
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _tarball = require("@verdaccio/tarball");
|
|
12
|
+
var _middleware = require("@verdaccio/middleware");
|
|
19
13
|
|
|
20
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
15
|
|
|
22
16
|
const debug = (0, _debug.default)('verdaccio:api:package');
|
|
23
17
|
|
|
24
|
-
const downloadStream = (packageName, filename, storage,
|
|
18
|
+
const downloadStream = (packageName, filename, storage, _req, res) => {
|
|
25
19
|
const stream = storage.getTarball(packageName, filename);
|
|
26
20
|
stream.on('content-length', function (content) {
|
|
27
21
|
res.header('Content-Length', content);
|
|
@@ -29,68 +23,41 @@ const downloadStream = (packageName, filename, storage, req, res) => {
|
|
|
29
23
|
stream.on('error', function (err) {
|
|
30
24
|
return res.locals.report_error(err);
|
|
31
25
|
});
|
|
32
|
-
res.header(
|
|
26
|
+
res.header(_core.HEADERS.CONTENT_TYPE, _core.HEADERS.OCTET_STREAM);
|
|
33
27
|
stream.pipe(res);
|
|
34
28
|
};
|
|
35
29
|
|
|
36
|
-
function _default(route, auth, storage
|
|
37
|
-
const can = (0, _middleware.allow)(auth);
|
|
38
|
-
|
|
39
|
-
route.get('/:package/:version?', can('access'), function (req, res, next) {
|
|
30
|
+
function _default(route, auth, storage) {
|
|
31
|
+
const can = (0, _middleware.allow)(auth);
|
|
32
|
+
route.get('/:package/:version?', can('access'), async function (req, _res, next) {
|
|
40
33
|
debug('init package by version');
|
|
41
34
|
const name = req.params.package;
|
|
35
|
+
let queryVersion = req.params.version;
|
|
36
|
+
const requestOptions = {
|
|
37
|
+
protocol: req.protocol,
|
|
38
|
+
headers: req.headers,
|
|
39
|
+
// FIXME: if we migrate to req.hostname, the port is not longer included.
|
|
40
|
+
host: req.host
|
|
41
|
+
};
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
debug('convert dist remote to local with prefix %o', config === null || config === void 0 ? void 0 : config.url_prefix);
|
|
50
|
-
metadata = (0, _tarball.convertDistRemoteToLocalTarballUrls)(metadata, req, config === null || config === void 0 ? void 0 : config.url_prefix);
|
|
51
|
-
let queryVersion = req.params.version;
|
|
52
|
-
debug('query by param version: %o', queryVersion);
|
|
53
|
-
|
|
54
|
-
if (_lodash.default.isNil(queryVersion)) {
|
|
55
|
-
debug('param %o version found', queryVersion);
|
|
56
|
-
return next(metadata);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
let version = (0, _utils.getVersion)(metadata, queryVersion);
|
|
60
|
-
debug('query by latest version %o and result %o', queryVersion, version);
|
|
61
|
-
|
|
62
|
-
if (_lodash.default.isNil(version) === false) {
|
|
63
|
-
debug('latest version found %o', version);
|
|
64
|
-
return next(version);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (_lodash.default.isNil(metadata[_commonsApi.DIST_TAGS]) === false) {
|
|
68
|
-
if (_lodash.default.isNil(metadata[_commonsApi.DIST_TAGS][queryVersion]) === false) {
|
|
69
|
-
queryVersion = metadata[_commonsApi.DIST_TAGS][queryVersion];
|
|
70
|
-
debug('dist-tag version found %o', queryVersion);
|
|
71
|
-
version = (0, _utils.getVersion)(metadata, queryVersion);
|
|
72
|
-
|
|
73
|
-
if (_lodash.default.isNil(version) === false) {
|
|
74
|
-
debug('dist-tag found %o', version);
|
|
75
|
-
return next(version);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
} else {
|
|
79
|
-
debug('dist tag not detected');
|
|
43
|
+
try {
|
|
44
|
+
// TODO: this is just temporary while I migrate all plugins to use the new API
|
|
45
|
+
// the method will be renamed to getPackage again but Promise Based.
|
|
46
|
+
if (!storage.getPackageNext) {
|
|
47
|
+
throw _core.errorUtils.getInternalError('getPackageNext not implemented, check pr-2750 for more details');
|
|
80
48
|
}
|
|
81
49
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
});
|
|
50
|
+
const manifest = await storage.getPackageNext({
|
|
51
|
+
name,
|
|
52
|
+
uplinksLook: true,
|
|
53
|
+
req,
|
|
54
|
+
version: queryVersion,
|
|
55
|
+
requestOptions
|
|
56
|
+
});
|
|
57
|
+
next(manifest);
|
|
58
|
+
} catch (err) {
|
|
59
|
+
next(err);
|
|
60
|
+
}
|
|
94
61
|
});
|
|
95
62
|
route.get('/:scopedPackage/-/:scope/:filename', can('access'), function (req, res) {
|
|
96
63
|
const {
|
package/build/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/package.ts"],"names":["debug","downloadStream","packageName","filename","storage","
|
|
1
|
+
{"version":3,"sources":["../src/package.ts"],"names":["debug","downloadStream","packageName","filename","storage","_req","res","stream","getTarball","on","content","header","err","locals","report_error","HEADERS","CONTENT_TYPE","OCTET_STREAM","pipe","route","auth","can","get","req","_res","next","name","params","package","queryVersion","version","requestOptions","protocol","headers","host","getPackageNext","errorUtils","getInternalError","manifest","uplinksLook","scopedPackage"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { HEADERS, errorUtils } from '@verdaccio/core';\nimport { allow } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:package');\n\nconst downloadStream = (\n packageName: string,\n filename: string,\n storage: any,\n _req: $RequestExtend,\n res: $ResponseExtend\n): void => {\n const stream = storage.getTarball(packageName, filename);\n\n stream.on('content-length', function (content): void {\n res.header('Content-Length', content);\n });\n\n stream.on('error', function (err): void {\n return res.locals.report_error(err);\n });\n\n res.header(HEADERS.CONTENT_TYPE, HEADERS.OCTET_STREAM);\n stream.pipe(res);\n};\n\nexport default function (route: Router, auth: IAuth, storage: Storage): void {\n const can = allow(auth);\n\n route.get(\n '/:package/:version?',\n can('access'),\n async function (\n req: $RequestExtend,\n _res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n debug('init package by version');\n const name = req.params.package;\n let queryVersion = req.params.version;\n const requestOptions = {\n protocol: req.protocol,\n headers: req.headers as any,\n // FIXME: if we migrate to req.hostname, the port is not longer included.\n host: req.host,\n };\n\n try {\n // TODO: this is just temporary while I migrate all plugins to use the new API\n // the method will be renamed to getPackage again but Promise Based.\n if (!storage.getPackageNext) {\n throw errorUtils.getInternalError(\n 'getPackageNext not implemented, check pr-2750 for more details'\n );\n }\n\n const manifest = await storage.getPackageNext({\n name,\n uplinksLook: true,\n req,\n version: queryVersion,\n requestOptions,\n });\n next(manifest);\n } catch (err) {\n next(err);\n }\n }\n );\n\n route.get(\n '/:scopedPackage/-/:scope/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n const { scopedPackage, filename } = req.params;\n\n downloadStream(scopedPackage, filename, storage, req, res);\n }\n );\n\n route.get(\n '/:package/-/:filename',\n can('access'),\n function (req: $RequestExtend, res: $ResponseExtend): void {\n downloadStream(req.params.package, req.params.filename, storage, req, res);\n }\n );\n}\n"],"file":"package.js"}
|
package/build/ping.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ping.ts"],"names":["route","get","req","res","next"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/ping.ts"],"names":["route","get","req","res","next"],"mappings":";;;;;;;AAIe,kBAAUA,KAAV,EAA+B;AAC5CA,EAAAA,KAAK,CAACC,GAAN,CACE,SADF,EAEE,UAAUC,GAAV,EAA+BC,GAA/B,EAAqDC,IAArD,EAA6E;AAC3EA,IAAAA,IAAI,CAAC,EAAD,CAAJ;AACD,GAJH;AAMD","sourcesContent":["import { Router } from 'express';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\n\nexport default function (route: Router): void {\n route.get(\n '/-/ping',\n function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n next({});\n }\n );\n}\n"],"file":"ping.js"}
|
package/build/publish.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { Config } from '@verdaccio/types';
|
|
3
2
|
import { IAuth } from '@verdaccio/auth';
|
|
4
3
|
import { Storage } from '@verdaccio/store';
|
|
5
|
-
import {
|
|
4
|
+
import { Config } from '@verdaccio/types';
|
|
5
|
+
import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';
|
|
6
6
|
export default function publish(router: Router, auth: IAuth, storage: Storage, config: Config): void;
|
|
7
7
|
/**
|
|
8
8
|
* Publish a package
|