@verdaccio/middleware 7.0.0-next-7.13 → 7.0.0-next-7.14

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,16 @@
1
1
  # @verdaccio/middleware
2
2
 
3
+ ## 7.0.0-next-7.14
4
+
5
+ ### Patch Changes
6
+
7
+ - b0946b2: Improved TS types for renderHTML() and related functions (by @tobbe in #4605)
8
+ - Updated dependencies [b0946b2]
9
+ - @verdaccio/url@12.0.0-next-7.14
10
+ - @verdaccio/core@7.0.0-next-7.14
11
+ - @verdaccio/config@7.0.0-next-7.14
12
+ - @verdaccio/utils@7.0.0-next-7.14
13
+
3
14
  ## 7.0.0-next-7.13
4
15
 
5
16
  ### Patch Changes
@@ -1,3 +1,7 @@
1
+ import type { Response } from 'express';
1
2
  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;
3
+ import type { RequestOptions } from '@verdaccio/url';
4
+ import type { Manifest } from './manifest';
5
+ import type { WebpackManifest } from './template';
6
+ export declare function resolveLogo(config: ConfigYaml, requestOptions: RequestOptions): string;
7
+ export default function renderHTML(config: ConfigYaml, manifest: WebpackManifest, manifestFiles: Manifest | null | undefined, requestOptions: RequestOptions, res: Response): void;
@@ -23,9 +23,10 @@ const cache = new _lruCache.default({
23
23
  const debug = (0, _debug.default)('verdaccio:web:render');
24
24
  const defaultManifestFiles = {
25
25
  js: ['runtime.js', 'vendors.js', 'main.js'],
26
- ico: 'favicon.ico'
26
+ ico: 'favicon.ico',
27
+ css: []
27
28
  };
28
- function resolveLogo(config, req) {
29
+ function resolveLogo(config, requestOptions) {
29
30
  var _config$web, _config$web2, _config$web3, _config$web5;
30
31
  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
32
  return '';
@@ -33,7 +34,7 @@ function resolveLogo(config, req) {
33
34
  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);
34
35
  if (isLocalFile) {
35
36
  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
+ return `${(0, _url2.getPublicUrl)(config === null || config === void 0 ? void 0 : config.url_prefix, requestOptions)}-/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
38
  } 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
39
  var _config$web6;
39
40
  return config === null || config === void 0 ? void 0 : (_config$web6 = config.web) === null || _config$web6 === void 0 ? void 0 : _config$web6.logo;
@@ -41,12 +42,12 @@ function resolveLogo(config, req) {
41
42
  return '';
42
43
  }
43
44
  }
44
- function renderHTML(config, manifest, manifestFiles, req, res) {
45
+ function renderHTML(config, manifest, manifestFiles, requestOptions, res) {
45
46
  var _config$i18n$web, _config$i18n, _config$web$hideDepre, _config$web7, _config$web8, _config$web9, _config$web$darkMode, _config$web10, _config$web$title, _config$web11, _config$web$scope, _config$web12, _config$web$pkgManage, _config$web13, _res$locals$app_versi, _validatePrimaryColor, _config$web$primary_c, _config$web14, _config$web15;
46
47
  const {
47
48
  url_prefix
48
49
  } = config;
49
- const base = (0, _url2.getPublicUrl)(config === null || config === void 0 ? void 0 : config.url_prefix, req);
50
+ const base = (0, _url2.getPublicUrl)(config === null || config === void 0 ? void 0 : config.url_prefix, requestOptions);
50
51
  const basename = new _url.URL(base).pathname;
51
52
  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;
52
53
  const hideDeprecatedVersions = (_config$web$hideDepre = config === null || config === void 0 ? void 0 : (_config$web7 = config.web) === null || _config$web7 === void 0 ? void 0 : _config$web7.hideDeprecatedVersions) !== null && _config$web$hideDepre !== void 0 ? _config$web$hideDepre : false;
@@ -56,7 +57,7 @@ function renderHTML(config, manifest, manifestFiles, req, res) {
56
57
  const title = (_config$web$title = config === null || config === void 0 ? void 0 : (_config$web11 = config.web) === null || _config$web11 === void 0 ? void 0 : _config$web11.title) !== null && _config$web$title !== void 0 ? _config$web$title : _config.WEB_TITLE;
57
58
  const login = (0, _webUtils.hasLogin)(config);
58
59
  const scope = (_config$web$scope = config === null || config === void 0 ? void 0 : (_config$web12 = config.web) === null || _config$web12 === void 0 ? void 0 : _config$web12.scope) !== null && _config$web$scope !== void 0 ? _config$web$scope : '';
59
- const logo = resolveLogo(config, req);
60
+ const logo = resolveLogo(config, requestOptions);
60
61
  const pkgManagers = (_config$web$pkgManage = config === null || config === void 0 ? void 0 : (_config$web13 = config.web) === null || _config$web13 === void 0 ? void 0 : _config$web13.pkgManagers) !== null && _config$web$pkgManage !== void 0 ? _config$web$pkgManage : ['yarn', 'pnpm', 'npm'];
61
62
  const version = (_res$locals$app_versi = res.locals.app_version) !== null && _res$locals$app_versi !== void 0 ? _res$locals$app_versi : '';
62
63
  const flags = {
@@ -1 +1 @@
1
- {"version":3,"file":"renderHTML.js","names":["_debug","_interopRequireDefault","require","_lruCache","_path","_url","_config","_core","_url2","_template","_webUtils","obj","__esModule","default","DEFAULT_LANGUAGE","cache","LRU","max","ttl","debug","buildDebug","defaultManifestFiles","js","ico","resolveLogo","config","req","_config$web","_config$web2","_config$web3","_config$web5","web","logo","isLocalFile","isURLhasValidProtocol","_config$web4","getPublicUrl","url_prefix","path","basename","_config$web6","renderHTML","manifest","manifestFiles","res","_config$i18n$web","_config$i18n","_config$web$hideDepre","_config$web7","_config$web8","_config$web9","_config$web$darkMode","_config$web10","_config$web$title","_config$web11","_config$web$scope","_config$web12","_config$web$pkgManage","_config$web13","_res$locals$app_versi","_validatePrimaryColor","_config$web$primary_c","_config$web14","_config$web15","base","URL","pathname","language","i18n","hideDeprecatedVersions","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 const hideDeprecatedVersions = config?.web?.hideDeprecatedVersions ?? false;\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 hideDeprecatedVersions,\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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"}
1
+ {"version":3,"file":"renderHTML.js","names":["_debug","_interopRequireDefault","require","_lruCache","_path","_url","_config","_core","_url2","_template","_webUtils","obj","__esModule","default","DEFAULT_LANGUAGE","cache","LRU","max","ttl","debug","buildDebug","defaultManifestFiles","js","ico","css","resolveLogo","config","requestOptions","_config$web","_config$web2","_config$web3","_config$web5","web","logo","isLocalFile","isURLhasValidProtocol","_config$web4","getPublicUrl","url_prefix","path","basename","_config$web6","renderHTML","manifest","manifestFiles","res","_config$i18n$web","_config$i18n","_config$web$hideDepre","_config$web7","_config$web8","_config$web9","_config$web$darkMode","_config$web10","_config$web$title","_config$web11","_config$web$scope","_config$web12","_config$web$pkgManage","_config$web13","_res$locals$app_versi","_validatePrimaryColor","_config$web$primary_c","_config$web14","_config$web15","base","URL","pathname","language","i18n","hideDeprecatedVersions","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 type { Response } from 'express';\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 type { RequestOptions } from '@verdaccio/url';\nimport { getPublicUrl, isURLhasValidProtocol } from '@verdaccio/url';\n\nimport type { Manifest } from './manifest';\nimport renderTemplate from './template';\nimport type { WebpackManifest } 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: Manifest = {\n js: ['runtime.js', 'vendors.js', 'main.js'],\n ico: 'favicon.ico',\n css: [],\n};\n\nexport function resolveLogo(config: ConfigYaml, requestOptions: RequestOptions) {\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, requestOptions)}-/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(\n config: ConfigYaml,\n manifest: WebpackManifest,\n manifestFiles: Manifest | null | undefined,\n requestOptions: RequestOptions,\n res: Response\n) {\n const { url_prefix } = config;\n const base = getPublicUrl(config?.url_prefix, requestOptions);\n const basename = new URL(base).pathname;\n const language = config?.i18n?.web ?? DEFAULT_LANGUAGE;\n const hideDeprecatedVersions = config?.web?.hideDeprecatedVersions ?? false;\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, requestOptions);\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 hideDeprecatedVersions,\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": "7.0.0-next-7.13",
3
+ "version": "7.0.0-next-7.14",
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": "7.0.0-next-7.13",
33
- "@verdaccio/utils": "7.0.0-next-7.13",
34
- "@verdaccio/config": "7.0.0-next-7.13",
35
- "@verdaccio/url": "12.0.0-next-7.13",
32
+ "@verdaccio/core": "7.0.0-next-7.14",
33
+ "@verdaccio/utils": "7.0.0-next-7.14",
34
+ "@verdaccio/config": "7.0.0-next-7.14",
35
+ "@verdaccio/url": "12.0.0-next-7.14",
36
36
  "debug": "4.3.4",
37
37
  "lru-cache": "7.18.3",
38
38
  "express": "4.18.3",
@@ -45,7 +45,7 @@
45
45
  "url": "https://opencollective.com/verdaccio"
46
46
  },
47
47
  "devDependencies": {
48
- "@verdaccio/logger": "7.0.0-next-7.13",
48
+ "@verdaccio/logger": "7.0.0-next-7.14",
49
49
  "body-parser": "1.20.2",
50
50
  "supertest": "6.3.4"
51
51
  },
@@ -1,4 +1,5 @@
1
1
  import buildDebug from 'debug';
2
+ import type { Response } from 'express';
2
3
  import LRU from 'lru-cache';
3
4
  import path from 'path';
4
5
  import { URL } from 'url';
@@ -6,10 +7,12 @@ import { URL } from 'url';
6
7
  import { WEB_TITLE } from '@verdaccio/config';
7
8
  import { HEADERS } from '@verdaccio/core';
8
9
  import { ConfigYaml, TemplateUIOptions } from '@verdaccio/types';
9
- import { isURLhasValidProtocol } from '@verdaccio/url';
10
- import { getPublicUrl } from '@verdaccio/url';
10
+ import type { RequestOptions } from '@verdaccio/url';
11
+ import { getPublicUrl, isURLhasValidProtocol } from '@verdaccio/url';
11
12
 
13
+ import type { Manifest } from './manifest';
12
14
  import renderTemplate from './template';
15
+ import type { WebpackManifest } from './template';
13
16
  import { hasLogin, validatePrimaryColor } from './web-utils';
14
17
 
15
18
  const DEFAULT_LANGUAGE = 'es-US';
@@ -17,19 +20,20 @@ const cache = new LRU({ max: 500, ttl: 1000 * 60 * 60 });
17
20
 
18
21
  const debug = buildDebug('verdaccio:web:render');
19
22
 
20
- const defaultManifestFiles = {
23
+ const defaultManifestFiles: Manifest = {
21
24
  js: ['runtime.js', 'vendors.js', 'main.js'],
22
25
  ico: 'favicon.ico',
26
+ css: [],
23
27
  };
24
28
 
25
- export function resolveLogo(config: ConfigYaml, req) {
29
+ export function resolveLogo(config: ConfigYaml, requestOptions: RequestOptions) {
26
30
  if (typeof config?.web?.logo !== 'string') {
27
31
  return '';
28
32
  }
29
33
  const isLocalFile = config?.web?.logo && !isURLhasValidProtocol(config?.web?.logo);
30
34
 
31
35
  if (isLocalFile) {
32
- return `${getPublicUrl(config?.url_prefix, req)}-/static/${path.basename(config?.web?.logo)}`;
36
+ return `${getPublicUrl(config?.url_prefix, requestOptions)}-/static/${path.basename(config?.web?.logo)}`;
33
37
  } else if (isURLhasValidProtocol(config?.web?.logo)) {
34
38
  return config?.web?.logo;
35
39
  } else {
@@ -37,9 +41,15 @@ export function resolveLogo(config: ConfigYaml, req) {
37
41
  }
38
42
  }
39
43
 
40
- export default function renderHTML(config: ConfigYaml, manifest, manifestFiles, req, res) {
44
+ export default function renderHTML(
45
+ config: ConfigYaml,
46
+ manifest: WebpackManifest,
47
+ manifestFiles: Manifest | null | undefined,
48
+ requestOptions: RequestOptions,
49
+ res: Response
50
+ ) {
41
51
  const { url_prefix } = config;
42
- const base = getPublicUrl(config?.url_prefix, req);
52
+ const base = getPublicUrl(config?.url_prefix, requestOptions);
43
53
  const basename = new URL(base).pathname;
44
54
  const language = config?.i18n?.web ?? DEFAULT_LANGUAGE;
45
55
  const hideDeprecatedVersions = config?.web?.hideDeprecatedVersions ?? false;
@@ -51,7 +61,7 @@ export default function renderHTML(config: ConfigYaml, manifest, manifestFiles,
51
61
  const title = config?.web?.title ?? WEB_TITLE;
52
62
  const login = hasLogin(config);
53
63
  const scope = config?.web?.scope ?? '';
54
- const logo = resolveLogo(config, req);
64
+ const logo = resolveLogo(config, requestOptions);
55
65
  const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm'];
56
66
  const version = res.locals.app_version ?? '';
57
67
  const flags = {