@verdaccio/web 8.1.0-next-8.7 → 8.1.0-next-8.8
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 +18 -0
- package/LICENSE +1 -1
- package/build/api/readme.js +24 -1
- package/build/api/readme.js.map +1 -1
- package/package.json +15 -16
- package/src/api/readme.ts +25 -2
- package/test/api.readme.test.ts +29 -0
- package/test/config/keep-all-readmes.yaml +29 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @verdaccio/web
|
|
2
2
|
|
|
3
|
+
## 8.1.0-next-8.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a7afdc7: feat: show version-specific readmes in web ui
|
|
8
|
+
- Updated dependencies [0588605]
|
|
9
|
+
- Updated dependencies [ca91b9a]
|
|
10
|
+
- @verdaccio/config@8.0.0-next-8.8
|
|
11
|
+
- @verdaccio/auth@8.0.0-next-8.8
|
|
12
|
+
- @verdaccio/loaders@8.0.0-next-8.4
|
|
13
|
+
- @verdaccio/middleware@8.0.0-next-8.8
|
|
14
|
+
- @verdaccio/store@8.0.0-next-8.8
|
|
15
|
+
- @verdaccio/core@8.0.0-next-8.8
|
|
16
|
+
- @verdaccio/tarball@13.0.0-next-8.8
|
|
17
|
+
- @verdaccio/url@13.0.0-next-8.8
|
|
18
|
+
- @verdaccio/logger@8.0.0-next-8.8
|
|
19
|
+
- @verdaccio/utils@8.1.0-next-8.8
|
|
20
|
+
|
|
3
21
|
## 8.1.0-next-8.7
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/LICENSE
CHANGED
package/build/api/readme.js
CHANGED
|
@@ -27,6 +27,7 @@ var _express = require("express");
|
|
|
27
27
|
var _core = require("@verdaccio/core");
|
|
28
28
|
var _logger = require("@verdaccio/logger");
|
|
29
29
|
var _middleware = require("@verdaccio/middleware");
|
|
30
|
+
var _utils = require("@verdaccio/utils");
|
|
30
31
|
var _webUtils = require("../web-utils");
|
|
31
32
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
32
33
|
// Was required by other packages
|
|
@@ -47,6 +48,24 @@ const getReadme = readme => {
|
|
|
47
48
|
return readme;
|
|
48
49
|
}
|
|
49
50
|
};
|
|
51
|
+
const getReadmeFromManifest = (manifest, v) => {
|
|
52
|
+
let id;
|
|
53
|
+
let readme;
|
|
54
|
+
if (typeof v === 'string' && (0, _utils.isVersionValid)(manifest, v)) {
|
|
55
|
+
id = 'version';
|
|
56
|
+
readme = manifest.versions[v].readme;
|
|
57
|
+
}
|
|
58
|
+
if (!readme && (0, _utils.isVersionValid)(manifest, manifest[_core.DIST_TAGS]?.latest)) {
|
|
59
|
+
id = 'latest';
|
|
60
|
+
readme = manifest.versions[manifest[_core.DIST_TAGS].latest].readme;
|
|
61
|
+
}
|
|
62
|
+
if (!readme && manifest.readme) {
|
|
63
|
+
id = 'root';
|
|
64
|
+
readme = manifest.readme;
|
|
65
|
+
}
|
|
66
|
+
debug('readme: %o %o', v, id);
|
|
67
|
+
return readme;
|
|
68
|
+
};
|
|
50
69
|
function addReadmeWebApi(storage, auth) {
|
|
51
70
|
debug('initialized readme web api');
|
|
52
71
|
const can = (0, _middleware.allow)(auth, {
|
|
@@ -77,7 +96,11 @@ function addReadmeWebApi(storage, auth) {
|
|
|
77
96
|
});
|
|
78
97
|
debug('readme pkg %o', manifest?.name);
|
|
79
98
|
res.set(_core.HEADER_TYPE.CONTENT_TYPE, _core.HEADERS.TEXT_PLAIN_UTF8);
|
|
80
|
-
|
|
99
|
+
const {
|
|
100
|
+
v
|
|
101
|
+
} = req.query;
|
|
102
|
+
const readme = getReadmeFromManifest(manifest, v);
|
|
103
|
+
next(getReadme(readme));
|
|
81
104
|
} catch (err) {
|
|
82
105
|
next(err);
|
|
83
106
|
}
|
package/build/api/readme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readme.js","names":["_debug","_interopRequireDefault","require","_express","_core","_logger","_middleware","_webUtils","e","__esModule","default","NOT_README_FOUND","exports","debug","buildDebug","getReadme","readme","length","addReadmeWebApi","storage","auth","can","allow","beforeAll","a","b","logger","trace","afterAll","pkgRouter","Router","get","WebUrls","readme_package_scoped_version","readme_package_version","req","res","next","rawScope","params","scope","slice","name","addScope","package","requestOptions","protocol","headers","host","remoteAddress","socket","
|
|
1
|
+
{"version":3,"file":"readme.js","names":["_debug","_interopRequireDefault","require","_express","_core","_logger","_middleware","_utils","_webUtils","e","__esModule","default","NOT_README_FOUND","exports","debug","buildDebug","getReadme","readme","length","getReadmeFromManifest","manifest","v","id","isVersionValid","versions","DIST_TAGS","latest","addReadmeWebApi","storage","auth","can","allow","beforeAll","a","b","logger","trace","afterAll","pkgRouter","Router","get","WebUrls","readme_package_scoped_version","readme_package_version","req","res","next","rawScope","params","scope","slice","name","addScope","package","requestOptions","protocol","headers","host","remoteAddress","socket","getPackageByOptions","uplinksLook","abbreviated","set","HEADER_TYPE","CONTENT_TYPE","HEADERS","TEXT_PLAIN_UTF8","query","err","_default"],"sources":["../../src/api/readme.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\n\nimport { Auth } from '@verdaccio/auth';\nimport { DIST_TAGS, HEADERS, HEADER_TYPE } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend, allow } from '@verdaccio/middleware';\n// Was required by other packages\nimport { WebUrls } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Manifest } from '@verdaccio/types';\nimport { isVersionValid } from '@verdaccio/utils';\n\nimport { AuthorAvatar, addScope } from '../web-utils';\n\nexport { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages\n\n// TODO: review this type, should be on @verdacid/types\nexport type PackageExt = Manifest & { author: AuthorAvatar; dist?: { tarball: string } };\nexport const NOT_README_FOUND = 'ERROR: No README data found!';\nconst debug = buildDebug('verdaccio:web:api:readme');\n\nconst getReadme = (readme) => {\n if (typeof readme === 'string' && readme.length === 0) {\n return NOT_README_FOUND;\n }\n if (typeof readme !== 'string') {\n return NOT_README_FOUND;\n } else {\n return readme;\n }\n};\n\nconst getReadmeFromManifest = (manifest: Manifest, v?: any): string | undefined => {\n let id;\n let readme;\n if (typeof v === 'string' && isVersionValid(manifest, v)) {\n id = 'version';\n readme = manifest.versions[v].readme;\n }\n if (!readme && isVersionValid(manifest, manifest[DIST_TAGS]?.latest)) {\n id = 'latest';\n readme = manifest.versions[manifest[DIST_TAGS].latest].readme;\n }\n if (!readme && manifest.readme) {\n id = 'root';\n readme = manifest.readme;\n }\n debug('readme: %o %o', v, id);\n return readme;\n};\n\nfunction addReadmeWebApi(storage: Storage, auth: Auth): Router {\n debug('initialized readme web api');\n const can = allow(auth, {\n beforeAll: (a, b) => logger.trace(a, b),\n afterAll: (a, b) => logger.trace(a, b),\n });\n const pkgRouter = Router(); /* eslint new-cap: 0 */\n\n pkgRouter.get(\n [WebUrls.readme_package_scoped_version, WebUrls.readme_package_version],\n can('access'),\n async function (\n req: $RequestExtend,\n res: $ResponseExtend,\n next: $NextFunctionVer\n ): Promise<void> {\n debug('readme hit');\n const rawScope = req.params.scope; // May include '@'\n const scope = rawScope ? rawScope.slice(1) : null; // Remove '@' if present\n const name = scope ? addScope(scope, req.params.package) : req.params.package;\n debug('readme name %o', name);\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 remoteAddress: req.socket.remoteAddress,\n };\n try {\n const manifest = (await storage.getPackageByOptions({\n name,\n uplinksLook: true,\n abbreviated: false,\n requestOptions,\n })) as Manifest;\n debug('readme pkg %o', manifest?.name);\n res.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8);\n const { v } = req.query;\n const readme = getReadmeFromManifest(manifest, v);\n next(getReadme(readme));\n } catch (err) {\n next(err);\n }\n }\n );\n return pkgRouter;\n}\n\nexport default addReadmeWebApi;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdaccio/web",
|
|
3
|
-
"version": "8.1.0-next-8.
|
|
3
|
+
"version": "8.1.0-next-8.8",
|
|
4
4
|
"description": "web ui middleware",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -24,30 +24,29 @@
|
|
|
24
24
|
},
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@verdaccio/auth": "8.0.0-next-8.
|
|
28
|
-
"@verdaccio/config": "8.0.0-next-8.
|
|
29
|
-
"@verdaccio/core": "8.0.0-next-8.
|
|
27
|
+
"@verdaccio/auth": "8.0.0-next-8.8",
|
|
28
|
+
"@verdaccio/config": "8.0.0-next-8.8",
|
|
29
|
+
"@verdaccio/core": "8.0.0-next-8.8",
|
|
30
30
|
"@verdaccio/loaders": "8.0.0-next-8.4",
|
|
31
|
-
"@verdaccio/logger": "8.0.0-next-8.
|
|
32
|
-
"@verdaccio/middleware": "8.0.0-next-8.
|
|
33
|
-
"@verdaccio/store": "8.0.0-next-8.
|
|
34
|
-
"@verdaccio/tarball": "13.0.0-next-8.
|
|
35
|
-
"@verdaccio/url": "13.0.0-next-8.
|
|
36
|
-
"@verdaccio/utils": "8.1.0-next-8.
|
|
31
|
+
"@verdaccio/logger": "8.0.0-next-8.8",
|
|
32
|
+
"@verdaccio/middleware": "8.0.0-next-8.8",
|
|
33
|
+
"@verdaccio/store": "8.0.0-next-8.8",
|
|
34
|
+
"@verdaccio/tarball": "13.0.0-next-8.8",
|
|
35
|
+
"@verdaccio/url": "13.0.0-next-8.8",
|
|
36
|
+
"@verdaccio/utils": "8.1.0-next-8.8",
|
|
37
37
|
"debug": "4.4.0",
|
|
38
38
|
"express": "4.21.2",
|
|
39
39
|
"lodash": "4.17.21"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@verdaccio/api": "8.1.0-next-8.
|
|
42
|
+
"@verdaccio/api": "8.1.0-next-8.8",
|
|
43
43
|
"@verdaccio/test-helper": "4.0.0-next-8.3",
|
|
44
|
-
"@verdaccio/types": "13.0.0-next-8.
|
|
45
|
-
"jsdom": "
|
|
46
|
-
"nock": "13.5.1",
|
|
44
|
+
"@verdaccio/types": "13.0.0-next-8.3",
|
|
45
|
+
"jsdom": "25.0.1",
|
|
47
46
|
"node-html-parser": "4.1.5",
|
|
48
47
|
"supertest": "7.0.0",
|
|
49
|
-
"verdaccio-auth-memory": "13.0.0-next-8.
|
|
50
|
-
"verdaccio-memory": "13.0.0-next-8.
|
|
48
|
+
"verdaccio-auth-memory": "13.0.0-next-8.8",
|
|
49
|
+
"verdaccio-memory": "13.0.0-next-8.8"
|
|
51
50
|
},
|
|
52
51
|
"funding": {
|
|
53
52
|
"type": "opencollective",
|
package/src/api/readme.ts
CHANGED
|
@@ -2,13 +2,14 @@ import buildDebug from 'debug';
|
|
|
2
2
|
import { Router } from 'express';
|
|
3
3
|
|
|
4
4
|
import { Auth } from '@verdaccio/auth';
|
|
5
|
-
import { HEADERS, HEADER_TYPE } from '@verdaccio/core';
|
|
5
|
+
import { DIST_TAGS, HEADERS, HEADER_TYPE } from '@verdaccio/core';
|
|
6
6
|
import { logger } from '@verdaccio/logger';
|
|
7
7
|
import { $NextFunctionVer, $RequestExtend, $ResponseExtend, allow } from '@verdaccio/middleware';
|
|
8
8
|
// Was required by other packages
|
|
9
9
|
import { WebUrls } from '@verdaccio/middleware';
|
|
10
10
|
import { Storage } from '@verdaccio/store';
|
|
11
11
|
import { Manifest } from '@verdaccio/types';
|
|
12
|
+
import { isVersionValid } from '@verdaccio/utils';
|
|
12
13
|
|
|
13
14
|
import { AuthorAvatar, addScope } from '../web-utils';
|
|
14
15
|
|
|
@@ -18,6 +19,7 @@ export { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by
|
|
|
18
19
|
export type PackageExt = Manifest & { author: AuthorAvatar; dist?: { tarball: string } };
|
|
19
20
|
export const NOT_README_FOUND = 'ERROR: No README data found!';
|
|
20
21
|
const debug = buildDebug('verdaccio:web:api:readme');
|
|
22
|
+
|
|
21
23
|
const getReadme = (readme) => {
|
|
22
24
|
if (typeof readme === 'string' && readme.length === 0) {
|
|
23
25
|
return NOT_README_FOUND;
|
|
@@ -29,6 +31,25 @@ const getReadme = (readme) => {
|
|
|
29
31
|
}
|
|
30
32
|
};
|
|
31
33
|
|
|
34
|
+
const getReadmeFromManifest = (manifest: Manifest, v?: any): string | undefined => {
|
|
35
|
+
let id;
|
|
36
|
+
let readme;
|
|
37
|
+
if (typeof v === 'string' && isVersionValid(manifest, v)) {
|
|
38
|
+
id = 'version';
|
|
39
|
+
readme = manifest.versions[v].readme;
|
|
40
|
+
}
|
|
41
|
+
if (!readme && isVersionValid(manifest, manifest[DIST_TAGS]?.latest)) {
|
|
42
|
+
id = 'latest';
|
|
43
|
+
readme = manifest.versions[manifest[DIST_TAGS].latest].readme;
|
|
44
|
+
}
|
|
45
|
+
if (!readme && manifest.readme) {
|
|
46
|
+
id = 'root';
|
|
47
|
+
readme = manifest.readme;
|
|
48
|
+
}
|
|
49
|
+
debug('readme: %o %o', v, id);
|
|
50
|
+
return readme;
|
|
51
|
+
};
|
|
52
|
+
|
|
32
53
|
function addReadmeWebApi(storage: Storage, auth: Auth): Router {
|
|
33
54
|
debug('initialized readme web api');
|
|
34
55
|
const can = allow(auth, {
|
|
@@ -66,7 +87,9 @@ function addReadmeWebApi(storage: Storage, auth: Auth): Router {
|
|
|
66
87
|
})) as Manifest;
|
|
67
88
|
debug('readme pkg %o', manifest?.name);
|
|
68
89
|
res.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8);
|
|
69
|
-
|
|
90
|
+
const { v } = req.query;
|
|
91
|
+
const readme = getReadmeFromManifest(manifest, v);
|
|
92
|
+
next(getReadme(readme));
|
|
70
93
|
} catch (err) {
|
|
71
94
|
next(err);
|
|
72
95
|
}
|
package/test/api.readme.test.ts
CHANGED
|
@@ -73,4 +73,33 @@ describe('readme api', () => {
|
|
|
73
73
|
.expect(HTTP_STATUS.OK);
|
|
74
74
|
expect(response.text).toMatch(NOT_README_FOUND);
|
|
75
75
|
});
|
|
76
|
+
|
|
77
|
+
test('should fetch readme with keeping all readmes (latest)', async () => {
|
|
78
|
+
const app = await initializeServer('keep-all-readmes.yaml');
|
|
79
|
+
await publishVersion(app, 'pk1-test', '1.0.0', { readme: 'my readme' });
|
|
80
|
+
const response = await supertest(app)
|
|
81
|
+
.get('/-/verdaccio/data/package/readme/pk1-test')
|
|
82
|
+
.set('Accept', HEADERS.TEXT_PLAIN)
|
|
83
|
+
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8)
|
|
84
|
+
.expect(HTTP_STATUS.OK);
|
|
85
|
+
expect(response.text).toMatch('my readme');
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
test('should fetch readme with keeping all readmes (version)', async () => {
|
|
89
|
+
const app = await initializeServer('keep-all-readmes.yaml');
|
|
90
|
+
await publishVersion(app, 'pk1-test', '1.0.0', { readme: 'my readme' });
|
|
91
|
+
await publishVersion(app, 'pk1-test', '1.2.0', { readme: 'my new readme' });
|
|
92
|
+
const response = await supertest(app)
|
|
93
|
+
.get('/-/verdaccio/data/package/readme/pk1-test')
|
|
94
|
+
.set('Accept', HEADERS.TEXT_PLAIN)
|
|
95
|
+
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8)
|
|
96
|
+
.expect(HTTP_STATUS.OK);
|
|
97
|
+
expect(response.text).toMatch('my new readme');
|
|
98
|
+
const response2 = await supertest(app)
|
|
99
|
+
.get('/-/verdaccio/data/package/readme/pk1-test?v=1.0.0')
|
|
100
|
+
.set('Accept', HEADERS.TEXT_PLAIN)
|
|
101
|
+
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN_UTF8)
|
|
102
|
+
.expect(HTTP_STATUS.OK);
|
|
103
|
+
expect(response2.text).toMatch('my readme');
|
|
104
|
+
});
|
|
76
105
|
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
auth:
|
|
2
|
+
auth-memory:
|
|
3
|
+
users:
|
|
4
|
+
test:
|
|
5
|
+
name: test
|
|
6
|
+
password: test
|
|
7
|
+
|
|
8
|
+
web:
|
|
9
|
+
title: verdaccio
|
|
10
|
+
|
|
11
|
+
publish:
|
|
12
|
+
allow_offline: false
|
|
13
|
+
keep_readmes: all
|
|
14
|
+
|
|
15
|
+
uplinks:
|
|
16
|
+
|
|
17
|
+
log: { type: stdout, format: pretty, level: trace }
|
|
18
|
+
|
|
19
|
+
packages:
|
|
20
|
+
'@*/*':
|
|
21
|
+
access: $anonymous
|
|
22
|
+
publish: $anonymous
|
|
23
|
+
'**':
|
|
24
|
+
access: $anonymous
|
|
25
|
+
publish: $anonymous
|
|
26
|
+
_debug: true
|
|
27
|
+
|
|
28
|
+
flags:
|
|
29
|
+
changePassword: true
|