@verdaccio/middleware 6.0.0-6-next.44 → 6.0.0-6-next.46

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,25 @@
1
1
  # @verdaccio/middleware
2
2
 
3
+ ## 6.0.0-6-next.46
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [16e38df8]
8
+ - @verdaccio/config@6.0.0-6-next.67
9
+ - @verdaccio/core@6.0.0-6-next.67
10
+ - @verdaccio/url@11.0.0-6-next.33
11
+ - @verdaccio/utils@6.0.0-6-next.35
12
+
13
+ ## 6.0.0-6-next.45
14
+
15
+ ### Patch Changes
16
+
17
+ - 7ef599cc: fix: missing version on footer
18
+ - @verdaccio/core@6.0.0-6-next.66
19
+ - @verdaccio/url@11.0.0-6-next.32
20
+ - @verdaccio/config@6.0.0-6-next.66
21
+ - @verdaccio/utils@6.0.0-6-next.34
22
+
3
23
  ## 6.0.0-6-next.44
4
24
 
5
25
  ### Patch Changes
@@ -1,2 +1,3 @@
1
- export declare function resolveLogo(config: any, req: any): any;
2
- export default function renderHTML(config: any, manifest: any, manifestFiles: any, req: any, res: any): void;
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$web4;
30
- const isLocalFile = (config === null || config === void 0 ? void 0 : (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.logo) && !(0, _url2.isURLhasValidProtocol)(config === null || config === void 0 ? void 0 : (_config$web2 = config.web) === null || _config$web2 === void 0 ? void 0 : _config$web2.logo);
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$web3;
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$web3 = config.web) === null || _config$web3 === void 0 ? void 0 : _config$web3.logo)}`;
34
- } else if ((0, _url2.isURLhasValidProtocol)(config === null || config === void 0 ? void 0 : (_config$web4 = config.web) === null || _config$web4 === void 0 ? void 0 : _config$web4.logo)) {
35
- var _config$web5;
36
- return config === null || config === void 0 ? void 0 : (_config$web5 = config.web) === null || _config$web5 === void 0 ? void 0 : _config$web5.logo;
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$web6, _config$web$darkMode, _config$web7, _config$web$title, _config$web8, _config$web$scope, _config$web9, _config$web$pkgManage, _config$web10, _config$web11, _validatePrimaryColor, _config$web12;
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
- const needHtmlCache = [undefined, null].includes(config === null || config === void 0 ? void 0 : (_config$web6 = config.web) === null || _config$web6 === void 0 ? void 0 : _config$web6.html_cache) ? true : config.web.html_cache;
50
- const darkMode = (_config$web$darkMode = config === null || config === void 0 ? void 0 : (_config$web7 = config.web) === null || _config$web7 === void 0 ? void 0 : _config$web7.darkMode) !== null && _config$web$darkMode !== void 0 ? _config$web$darkMode : false;
51
- const title = (_config$web$title = config === null || config === void 0 ? void 0 : (_config$web8 = config.web) === null || _config$web8 === void 0 ? void 0 : _config$web8.title) !== null && _config$web$title !== void 0 ? _config$web$title : _config.WEB_TITLE;
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$web9 = config.web) === null || _config$web9 === void 0 ? void 0 : _config$web9.scope) !== null && _config$web$scope !== void 0 ? _config$web$scope : '';
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$web10 = config.web) === null || _config$web10 === void 0 ? void 0 : _config$web10.pkgManagers) !== null && _config$web$pkgManage !== void 0 ? _config$web$pkgManage : ['yarn', 'pnpm', 'npm'];
56
- const version = config === null || config === void 0 ? void 0 : (_config$web11 = config.web) === null || _config$web11 === void 0 ? void 0 : _config$web11.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$web12 = config.web) === null || _config$web12 === void 0 ? void 0 : _config$web12.primary_color)) !== null && _validatePrimaryColor !== void 0 ? _validatePrimaryColor : '#4b5e40';
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","isLocalFile","web","logo","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","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 { 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, req) {\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, 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 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 = config?.web?.version;\n const flags = {\n ...config.flags,\n // legacy from 5.x\n ...config.experiments,\n };\n const primaryColor = validatePrimaryColor(config?.web?.primary_color) ?? '#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 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":";;;;;;;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AAA6D;AAE7D,MAAMA,gBAAgB,GAAG,OAAO;AAChC,MAAMC,KAAK,GAAG,IAAIC,iBAAG,CAAC;EAAEC,GAAG,EAAE,GAAG;EAAEC,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG;AAAG,CAAC,CAAC;AAExD,MAAMC,KAAK,GAAG,IAAAC,cAAU,EAAC,sBAAsB,CAAC;AAEhD,MAAMC,oBAAoB,GAAG;EAC3BC,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC;EAC3CC,GAAG,EAAE;AACP,CAAC;AAEM,SAASC,WAAW,CAACC,MAAM,EAAEC,GAAG,EAAE;EAAA;EACvC,MAAMC,WAAW,GAAG,CAAAF,MAAM,aAANA,MAAM,sCAANA,MAAM,CAAEG,GAAG,gDAAX,YAAaC,IAAI,KAAI,CAAC,IAAAC,2BAAqB,EAACL,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAaC,IAAI,CAAC;EAElF,IAAIF,WAAW,EAAE;IAAA;IACf,OAAQ,GAAE,IAAAI,kBAAY,EAACN,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEO,UAAU,EAAEN,GAAG,CAAE,YAAWO,aAAI,CAACC,QAAQ,CAACT,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAaC,IAAI,CAAE,EAAC;EAC/F,CAAC,MAAM,IAAI,IAAAC,2BAAqB,EAACL,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAaC,IAAI,CAAC,EAAE;IAAA;IACnD,OAAOJ,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAaC,IAAI;EAC1B,CAAC,MAAM;IACL,OAAO,EAAE;EACX;AACF;AAEe,SAASM,UAAU,CAACV,MAAM,EAAEW,QAAQ,EAAEC,aAAa,EAAEX,GAAG,EAAEY,GAAG,EAAE;EAAA;EAC5E,MAAM;IAAEN;EAAW,CAAC,GAAGP,MAAM;EAC7B,MAAMc,IAAI,GAAG,IAAAR,kBAAY,EAACN,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEO,UAAU,EAAEN,GAAG,CAAC;EAClD,MAAMQ,QAAQ,GAAG,IAAIM,QAAG,CAACD,IAAI,CAAC,CAACE,QAAQ;EACvC,MAAMC,QAAQ,uBAAGjB,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEkB,IAAI,iDAAZ,aAAcf,GAAG,+DAAId,gBAAgB;EACtD,MAAM8B,aAAa,GAAG,CAACC,SAAS,EAAE,IAAI,CAAC,CAACC,QAAQ,CAACrB,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAamB,UAAU,CAAC,GACrE,IAAI,GACJtB,MAAM,CAACG,GAAG,CAACmB,UAAU;EACzB,MAAMC,QAAQ,2BAAGvB,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAaoB,QAAQ,uEAAI,KAAK;EAC/C,MAAMC,KAAK,wBAAGxB,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAaqB,KAAK,iEAAIC,iBAAS;EAC7C,MAAMC,KAAK,GAAG,IAAAC,kBAAQ,EAAC3B,MAAM,CAAC;EAC9B,MAAM4B,KAAK,wBAAG5B,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEG,GAAG,iDAAX,aAAayB,KAAK,iEAAI,EAAE;EACtC,MAAMxB,IAAI,GAAGL,WAAW,CAACC,MAAM,EAAEC,GAAG,CAAC;EACrC,MAAM4B,WAAW,4BAAG7B,MAAM,aAANA,MAAM,wCAANA,MAAM,CAAEG,GAAG,kDAAX,cAAa0B,WAAW,yEAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;EACvE,MAAMC,OAAO,GAAG9B,MAAM,aAANA,MAAM,wCAANA,MAAM,CAAEG,GAAG,kDAAX,cAAa2B,OAAO;EACpC,MAAMC,KAAK,GAAG;IACZ,GAAG/B,MAAM,CAAC+B,KAAK;IACf;IACA,GAAG/B,MAAM,CAACgC;EACZ,CAAC;EACD,MAAMC,YAAY,4BAAG,IAAAC,8BAAoB,EAAClC,MAAM,aAANA,MAAM,wCAANA,MAAM,CAAEG,GAAG,kDAAX,cAAagC,aAAa,CAAC,yEAAI,SAAS;EAClF,MAAM;IACJC,gBAAgB;IAChBC,WAAW;IACXC,iBAAiB;IACjBC,QAAQ;IACRC,YAAY;IACZC,eAAe;IACfC,UAAU;IACVC,UAAU;IACVC;EACF,CAAC,GAAGC,MAAM,CAACC,MAAM,CACf,CAAC,CAAC,EACF;IACEV,gBAAgB,EAAE,EAAE;IACpBW,UAAU,EAAE,EAAE;IACdV,WAAW,EAAE;EACf,CAAC,EACDrC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEG,GAAG,CACZ;EACD,MAAM6C,OAA0B,GAAG;IACjCT,QAAQ;IACRC,YAAY;IACZC,eAAe;IACfC,UAAU;IACVC,UAAU;IACVC,mBAAmB;IACnBrB,QAAQ;IACRhB,UAAU;IACVE,QAAQ;IACRK,IAAI;IACJmB,YAAY;IACZH,OAAO;IACP1B,IAAI;IACJ2B,KAAK;IACLL,KAAK;IACLG,WAAW;IACXL,KAAK;IACLI,KAAK;IACLX;EACF,CAAC;EAED,IAAIgC,OAAO;EAEX,IAAI;IACFA,OAAO,GAAG3D,KAAK,CAAC4D,GAAG,CAAC,UAAU,CAAC;IAC/B,IAAI,CAACD,OAAO,EAAE;MACZA,OAAO,GAAG,IAAAE,iBAAc,EACtB;QACExC,QAAQ,EAAEC,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIhB,oBAAoB;QAC/CoD,OAAO;QACPZ,gBAAgB;QAChBC,WAAW;QACXC;MACF,CAAC,EACD3B,QAAQ,CACT;MACD,IAAIQ,aAAa,EAAE;QACjB7B,KAAK,CAAC8D,GAAG,CAAC,UAAU,EAAEH,OAAO,CAAC;QAC9BvD,KAAK,CAAC,oBAAoB,CAAC;MAC7B;IACF,CAAC,MAAM;MACLA,KAAK,CAAC,sBAAsB,CAAC;IAC/B;EACF,CAAC,CAAC,OAAO2D,KAAU,EAAE;IACnB,MAAM,IAAIC,KAAK,CAAE,kCAAiCD,KAAK,CAACE,KAAM,EAAC,CAAC;EAClE;EACA1C,GAAG,CAAC2C,SAAS,CAAC,cAAc,EAAEC,aAAO,CAACC,SAAS,CAAC;EAChD7C,GAAG,CAAC8C,IAAI,CAACV,OAAO,CAAC;EACjBvD,KAAK,CAAC,cAAc,CAAC;AACvB"}
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.44",
3
+ "version": "6.0.0-6-next.46",
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.65",
33
- "@verdaccio/utils": "6.0.0-6-next.33",
34
- "@verdaccio/config": "6.0.0-6-next.65",
35
- "@verdaccio/url": "11.0.0-6-next.31",
32
+ "@verdaccio/core": "6.0.0-6-next.67",
33
+ "@verdaccio/utils": "6.0.0-6-next.35",
34
+ "@verdaccio/config": "6.0.0-6-next.67",
35
+ "@verdaccio/url": "11.0.0-6-next.33",
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.33",
48
+ "@verdaccio/logger": "6.0.0-6-next.35",
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.web.html_cache;
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 = config?.web?.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 = validatePrimaryColor(config?.web?.primary_color) ?? '#4b5e40';
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');