@verdaccio/middleware 6.0.0-6-next.44 → 6.0.0-6-next.45
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
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @verdaccio/middleware
|
|
2
2
|
|
|
3
|
+
## 6.0.0-6-next.45
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7ef599cc: fix: missing version on footer
|
|
8
|
+
- @verdaccio/core@6.0.0-6-next.66
|
|
9
|
+
- @verdaccio/url@11.0.0-6-next.32
|
|
10
|
+
- @verdaccio/config@6.0.0-6-next.66
|
|
11
|
+
- @verdaccio/utils@6.0.0-6-next.34
|
|
12
|
+
|
|
3
13
|
## 6.0.0-6-next.44
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
import { ConfigYaml } from '@verdaccio/types';
|
|
2
|
+
export declare function resolveLogo(config: ConfigYaml, req: any): string;
|
|
3
|
+
export default function renderHTML(config: ConfigYaml, manifest: any, manifestFiles: any, req: any, res: any): void;
|
|
@@ -26,40 +26,44 @@ const defaultManifestFiles = {
|
|
|
26
26
|
ico: 'favicon.ico'
|
|
27
27
|
};
|
|
28
28
|
function resolveLogo(config, req) {
|
|
29
|
-
var _config$web, _config$web2, _config$
|
|
30
|
-
|
|
29
|
+
var _config$web, _config$web2, _config$web3, _config$web5;
|
|
30
|
+
if (typeof (config === null || config === void 0 ? void 0 : (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.logo) !== 'string') {
|
|
31
|
+
return '';
|
|
32
|
+
}
|
|
33
|
+
const isLocalFile = (config === null || config === void 0 ? void 0 : (_config$web2 = config.web) === null || _config$web2 === void 0 ? void 0 : _config$web2.logo) && !(0, _url2.isURLhasValidProtocol)(config === null || config === void 0 ? void 0 : (_config$web3 = config.web) === null || _config$web3 === void 0 ? void 0 : _config$web3.logo);
|
|
31
34
|
if (isLocalFile) {
|
|
32
|
-
var _config$
|
|
33
|
-
return `${(0, _url2.getPublicUrl)(config === null || config === void 0 ? void 0 : config.url_prefix, req)}-/static/${_path.default.basename(config === null || config === void 0 ? void 0 : (_config$
|
|
34
|
-
} else if ((0, _url2.isURLhasValidProtocol)(config === null || config === void 0 ? void 0 : (_config$
|
|
35
|
-
var _config$
|
|
36
|
-
return config === null || config === void 0 ? void 0 : (_config$
|
|
35
|
+
var _config$web4;
|
|
36
|
+
return `${(0, _url2.getPublicUrl)(config === null || config === void 0 ? void 0 : config.url_prefix, req)}-/static/${_path.default.basename(config === null || config === void 0 ? void 0 : (_config$web4 = config.web) === null || _config$web4 === void 0 ? void 0 : _config$web4.logo)}`;
|
|
37
|
+
} else if ((0, _url2.isURLhasValidProtocol)(config === null || config === void 0 ? void 0 : (_config$web5 = config.web) === null || _config$web5 === void 0 ? void 0 : _config$web5.logo)) {
|
|
38
|
+
var _config$web6;
|
|
39
|
+
return config === null || config === void 0 ? void 0 : (_config$web6 = config.web) === null || _config$web6 === void 0 ? void 0 : _config$web6.logo;
|
|
37
40
|
} else {
|
|
38
41
|
return '';
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
44
|
function renderHTML(config, manifest, manifestFiles, req, res) {
|
|
42
|
-
var _config$i18n$web, _config$i18n, _config$
|
|
45
|
+
var _config$i18n$web, _config$i18n, _config$web7, _config$web8, _config$web$darkMode, _config$web9, _config$web$title, _config$web10, _config$web$scope, _config$web11, _config$web$pkgManage, _config$web12, _res$locals$app_versi, _validatePrimaryColor, _config$web$primary_c, _config$web13, _config$web14;
|
|
43
46
|
const {
|
|
44
47
|
url_prefix
|
|
45
48
|
} = config;
|
|
46
49
|
const base = (0, _url2.getPublicUrl)(config === null || config === void 0 ? void 0 : config.url_prefix, req);
|
|
47
50
|
const basename = new _url.URL(base).pathname;
|
|
48
51
|
const language = (_config$i18n$web = config === null || config === void 0 ? void 0 : (_config$i18n = config.i18n) === null || _config$i18n === void 0 ? void 0 : _config$i18n.web) !== null && _config$i18n$web !== void 0 ? _config$i18n$web : DEFAULT_LANGUAGE;
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
const needHtmlCache = [undefined, null].includes(config === null || config === void 0 ? void 0 : (_config$web7 = config.web) === null || _config$web7 === void 0 ? void 0 : _config$web7.html_cache) ? true : config === null || config === void 0 ? void 0 : (_config$web8 = config.web) === null || _config$web8 === void 0 ? void 0 : _config$web8.html_cache;
|
|
54
|
+
const darkMode = (_config$web$darkMode = config === null || config === void 0 ? void 0 : (_config$web9 = config.web) === null || _config$web9 === void 0 ? void 0 : _config$web9.darkMode) !== null && _config$web$darkMode !== void 0 ? _config$web$darkMode : false;
|
|
55
|
+
const title = (_config$web$title = config === null || config === void 0 ? void 0 : (_config$web10 = config.web) === null || _config$web10 === void 0 ? void 0 : _config$web10.title) !== null && _config$web$title !== void 0 ? _config$web$title : _config.WEB_TITLE;
|
|
52
56
|
const login = (0, _webUtils.hasLogin)(config);
|
|
53
|
-
const scope = (_config$web$scope = config === null || config === void 0 ? void 0 : (_config$
|
|
57
|
+
const scope = (_config$web$scope = config === null || config === void 0 ? void 0 : (_config$web11 = config.web) === null || _config$web11 === void 0 ? void 0 : _config$web11.scope) !== null && _config$web$scope !== void 0 ? _config$web$scope : '';
|
|
54
58
|
const logo = resolveLogo(config, req);
|
|
55
|
-
const pkgManagers = (_config$web$pkgManage = config === null || config === void 0 ? void 0 : (_config$
|
|
56
|
-
const version =
|
|
59
|
+
const pkgManagers = (_config$web$pkgManage = config === null || config === void 0 ? void 0 : (_config$web12 = config.web) === null || _config$web12 === void 0 ? void 0 : _config$web12.pkgManagers) !== null && _config$web$pkgManage !== void 0 ? _config$web$pkgManage : ['yarn', 'pnpm', 'npm'];
|
|
60
|
+
const version = (_res$locals$app_versi = res.locals.app_version) !== null && _res$locals$app_versi !== void 0 ? _res$locals$app_versi : '';
|
|
57
61
|
const flags = {
|
|
58
62
|
...config.flags,
|
|
59
63
|
// legacy from 5.x
|
|
60
64
|
...config.experiments
|
|
61
65
|
};
|
|
62
|
-
const primaryColor = (_validatePrimaryColor = (0, _webUtils.validatePrimaryColor)(config === null || config === void 0 ? void 0 : (_config$
|
|
66
|
+
const primaryColor = (_validatePrimaryColor = (0, _webUtils.validatePrimaryColor)((_config$web$primary_c = config === null || config === void 0 ? void 0 : (_config$web13 = config.web) === null || _config$web13 === void 0 ? void 0 : _config$web13.primary_color) !== null && _config$web$primary_c !== void 0 ? _config$web$primary_c : config === null || config === void 0 ? void 0 : (_config$web14 = config.web) === null || _config$web14 === void 0 ? void 0 : _config$web14.primaryColor)) !== null && _validatePrimaryColor !== void 0 ? _validatePrimaryColor : '#4b5e40';
|
|
63
67
|
const {
|
|
64
68
|
scriptsBodyAfter,
|
|
65
69
|
metaScripts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderHTML.js","names":["DEFAULT_LANGUAGE","cache","LRU","max","ttl","debug","buildDebug","defaultManifestFiles","js","ico","resolveLogo","config","req","
|
|
1
|
+
{"version":3,"file":"renderHTML.js","names":["DEFAULT_LANGUAGE","cache","LRU","max","ttl","debug","buildDebug","defaultManifestFiles","js","ico","resolveLogo","config","req","web","logo","isLocalFile","isURLhasValidProtocol","getPublicUrl","url_prefix","path","basename","renderHTML","manifest","manifestFiles","res","base","URL","pathname","language","i18n","needHtmlCache","undefined","includes","html_cache","darkMode","title","WEB_TITLE","login","hasLogin","scope","pkgManagers","version","locals","app_version","flags","experiments","primaryColor","validatePrimaryColor","primary_color","scriptsBodyAfter","metaScripts","scriptsbodyBefore","showInfo","showSettings","showThemeSwitch","showFooter","showSearch","showDownloadTarball","Object","assign","bodyBefore","options","webPage","get","renderTemplate","set","error","Error","stack","setHeader","HEADERS","TEXT_HTML","send"],"sources":["../../../../src/middlewares/web/utils/renderHTML.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport LRU from 'lru-cache';\nimport path from 'path';\nimport { URL } from 'url';\n\nimport { WEB_TITLE } from '@verdaccio/config';\nimport { HEADERS } from '@verdaccio/core';\nimport { ConfigYaml, TemplateUIOptions } from '@verdaccio/types';\nimport { isURLhasValidProtocol } from '@verdaccio/url';\nimport { getPublicUrl } from '@verdaccio/url';\n\nimport renderTemplate from './template';\nimport { hasLogin, validatePrimaryColor } from './web-utils';\n\nconst DEFAULT_LANGUAGE = 'es-US';\nconst cache = new LRU({ max: 500, ttl: 1000 * 60 * 60 });\n\nconst debug = buildDebug('verdaccio:web:render');\n\nconst defaultManifestFiles = {\n js: ['runtime.js', 'vendors.js', 'main.js'],\n ico: 'favicon.ico',\n};\n\nexport function resolveLogo(config: ConfigYaml, req) {\n if (typeof config?.web?.logo !== 'string') {\n return '';\n }\n const isLocalFile = config?.web?.logo && !isURLhasValidProtocol(config?.web?.logo);\n\n if (isLocalFile) {\n return `${getPublicUrl(config?.url_prefix, req)}-/static/${path.basename(config?.web?.logo)}`;\n } else if (isURLhasValidProtocol(config?.web?.logo)) {\n return config?.web?.logo;\n } else {\n return '';\n }\n}\n\nexport default function renderHTML(config: ConfigYaml, manifest, manifestFiles, req, res) {\n const { url_prefix } = config;\n const base = getPublicUrl(config?.url_prefix, req);\n const basename = new URL(base).pathname;\n const language = config?.i18n?.web ?? DEFAULT_LANGUAGE;\n // @ts-ignore\n const needHtmlCache = [undefined, null].includes(config?.web?.html_cache)\n ? true\n : config?.web?.html_cache;\n const darkMode = config?.web?.darkMode ?? false;\n const title = config?.web?.title ?? WEB_TITLE;\n const login = hasLogin(config);\n const scope = config?.web?.scope ?? '';\n const logo = resolveLogo(config, req);\n const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm'];\n const version = res.locals.app_version ?? '';\n const flags = {\n ...config.flags,\n // legacy from 5.x\n ...config.experiments,\n };\n const primaryColor =\n validatePrimaryColor(config?.web?.primary_color ?? config?.web?.primaryColor) ?? '#4b5e40';\n const {\n scriptsBodyAfter,\n metaScripts,\n scriptsbodyBefore,\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n } = Object.assign(\n {},\n {\n scriptsBodyAfter: [],\n bodyBefore: [],\n metaScripts: [],\n },\n config?.web\n );\n const options: TemplateUIOptions = {\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n darkMode,\n url_prefix,\n basename,\n base,\n primaryColor,\n version,\n logo,\n flags,\n login,\n pkgManagers,\n title,\n scope,\n language,\n };\n\n let webPage;\n\n try {\n webPage = cache.get('template');\n if (!webPage) {\n webPage = renderTemplate(\n {\n manifest: manifestFiles ?? defaultManifestFiles,\n options,\n scriptsBodyAfter,\n metaScripts,\n scriptsbodyBefore,\n },\n manifest\n );\n\n if (needHtmlCache) {\n cache.set('template', webPage);\n debug('set template cache');\n }\n } else {\n debug('reuse template cache');\n }\n } catch (error: any) {\n throw new Error(`theme could not be load, stack ${error.stack}`);\n }\n res.setHeader('Content-Type', HEADERS.TEXT_HTML);\n res.send(webPage);\n debug('web rendered');\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdaccio/middleware",
|
|
3
|
-
"version": "6.0.0-6-next.
|
|
3
|
+
"version": "6.0.0-6-next.45",
|
|
4
4
|
"description": "express middleware utils",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"node": ">=12"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@verdaccio/core": "6.0.0-6-next.
|
|
33
|
-
"@verdaccio/utils": "6.0.0-6-next.
|
|
34
|
-
"@verdaccio/config": "6.0.0-6-next.
|
|
35
|
-
"@verdaccio/url": "11.0.0-6-next.
|
|
32
|
+
"@verdaccio/core": "6.0.0-6-next.66",
|
|
33
|
+
"@verdaccio/utils": "6.0.0-6-next.34",
|
|
34
|
+
"@verdaccio/config": "6.0.0-6-next.66",
|
|
35
|
+
"@verdaccio/url": "11.0.0-6-next.32",
|
|
36
36
|
"debug": "4.3.4",
|
|
37
37
|
"lru-cache": "7.16.1",
|
|
38
38
|
"express": "4.18.2",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"url": "https://opencollective.com/verdaccio"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@verdaccio/logger": "6.0.0-6-next.
|
|
48
|
+
"@verdaccio/logger": "6.0.0-6-next.34",
|
|
49
49
|
"body-parser": "1.20.1",
|
|
50
50
|
"supertest": "6.3.3"
|
|
51
51
|
},
|
|
@@ -5,7 +5,7 @@ import { URL } from 'url';
|
|
|
5
5
|
|
|
6
6
|
import { WEB_TITLE } from '@verdaccio/config';
|
|
7
7
|
import { HEADERS } from '@verdaccio/core';
|
|
8
|
-
import { TemplateUIOptions } from '@verdaccio/types';
|
|
8
|
+
import { ConfigYaml, TemplateUIOptions } from '@verdaccio/types';
|
|
9
9
|
import { isURLhasValidProtocol } from '@verdaccio/url';
|
|
10
10
|
import { getPublicUrl } from '@verdaccio/url';
|
|
11
11
|
|
|
@@ -22,7 +22,10 @@ const defaultManifestFiles = {
|
|
|
22
22
|
ico: 'favicon.ico',
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
export function resolveLogo(config, req) {
|
|
25
|
+
export function resolveLogo(config: ConfigYaml, req) {
|
|
26
|
+
if (typeof config?.web?.logo !== 'string') {
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
26
29
|
const isLocalFile = config?.web?.logo && !isURLhasValidProtocol(config?.web?.logo);
|
|
27
30
|
|
|
28
31
|
if (isLocalFile) {
|
|
@@ -34,27 +37,29 @@ export function resolveLogo(config, req) {
|
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
export default function renderHTML(config, manifest, manifestFiles, req, res) {
|
|
40
|
+
export default function renderHTML(config: ConfigYaml, manifest, manifestFiles, req, res) {
|
|
38
41
|
const { url_prefix } = config;
|
|
39
42
|
const base = getPublicUrl(config?.url_prefix, req);
|
|
40
43
|
const basename = new URL(base).pathname;
|
|
41
44
|
const language = config?.i18n?.web ?? DEFAULT_LANGUAGE;
|
|
45
|
+
// @ts-ignore
|
|
42
46
|
const needHtmlCache = [undefined, null].includes(config?.web?.html_cache)
|
|
43
47
|
? true
|
|
44
|
-
: config
|
|
48
|
+
: config?.web?.html_cache;
|
|
45
49
|
const darkMode = config?.web?.darkMode ?? false;
|
|
46
50
|
const title = config?.web?.title ?? WEB_TITLE;
|
|
47
51
|
const login = hasLogin(config);
|
|
48
52
|
const scope = config?.web?.scope ?? '';
|
|
49
53
|
const logo = resolveLogo(config, req);
|
|
50
54
|
const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm'];
|
|
51
|
-
const version =
|
|
55
|
+
const version = res.locals.app_version ?? '';
|
|
52
56
|
const flags = {
|
|
53
57
|
...config.flags,
|
|
54
58
|
// legacy from 5.x
|
|
55
59
|
...config.experiments,
|
|
56
60
|
};
|
|
57
|
-
const primaryColor =
|
|
61
|
+
const primaryColor =
|
|
62
|
+
validatePrimaryColor(config?.web?.primary_color ?? config?.web?.primaryColor) ?? '#4b5e40';
|
|
58
63
|
const {
|
|
59
64
|
scriptsBodyAfter,
|
|
60
65
|
metaScripts,
|
|
@@ -111,6 +116,7 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
|
|
|
111
116
|
},
|
|
112
117
|
manifest
|
|
113
118
|
);
|
|
119
|
+
|
|
114
120
|
if (needHtmlCache) {
|
|
115
121
|
cache.set('template', webPage);
|
|
116
122
|
debug('set template cache');
|