@verdaccio/middleware 9.0.0-next-9.3 → 9.0.0-next-9.5

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.
Files changed (133) hide show
  1. package/build/_virtual/_rolldown/runtime.js +23 -0
  2. package/build/index.d.ts +1 -0
  3. package/build/index.js +62 -221
  4. package/build/index.mjs +23 -0
  5. package/build/middlewares/allow.js +42 -50
  6. package/build/middlewares/allow.js.map +1 -1
  7. package/build/middlewares/allow.mjs +44 -0
  8. package/build/middlewares/allow.mjs.map +1 -0
  9. package/build/middlewares/antiLoop.d.ts +2 -2
  10. package/build/middlewares/antiLoop.js +22 -40
  11. package/build/middlewares/antiLoop.js.map +1 -1
  12. package/build/middlewares/antiLoop.mjs +25 -0
  13. package/build/middlewares/antiLoop.mjs.map +1 -0
  14. package/build/middlewares/api_urls.js +66 -59
  15. package/build/middlewares/api_urls.js.map +1 -1
  16. package/build/middlewares/api_urls.mjs +59 -0
  17. package/build/middlewares/api_urls.mjs.map +1 -0
  18. package/build/middlewares/body-parser.d.ts +8 -0
  19. package/build/middlewares/body-parser.js +31 -0
  20. package/build/middlewares/body-parser.js.map +1 -0
  21. package/build/middlewares/body-parser.mjs +28 -0
  22. package/build/middlewares/body-parser.mjs.map +1 -0
  23. package/build/middlewares/dotfiles.d.ts +1 -1
  24. package/build/middlewares/dotfiles.js +25 -28
  25. package/build/middlewares/dotfiles.js.map +1 -1
  26. package/build/middlewares/dotfiles.mjs +27 -0
  27. package/build/middlewares/dotfiles.mjs.map +1 -0
  28. package/build/middlewares/encode-pkg.d.ts +1 -1
  29. package/build/middlewares/encode-pkg.js +20 -36
  30. package/build/middlewares/encode-pkg.js.map +1 -1
  31. package/build/middlewares/encode-pkg.mjs +22 -0
  32. package/build/middlewares/encode-pkg.mjs.map +1 -0
  33. package/build/middlewares/error.d.ts +3 -3
  34. package/build/middlewares/error.js +53 -71
  35. package/build/middlewares/error.js.map +1 -1
  36. package/build/middlewares/error.mjs +53 -0
  37. package/build/middlewares/error.mjs.map +1 -0
  38. package/build/middlewares/final.d.ts +2 -2
  39. package/build/middlewares/final.js +46 -57
  40. package/build/middlewares/final.js.map +1 -1
  41. package/build/middlewares/final.mjs +46 -0
  42. package/build/middlewares/final.mjs.map +1 -0
  43. package/build/middlewares/json.d.ts +1 -1
  44. package/build/middlewares/json.js +8 -11
  45. package/build/middlewares/json.js.map +1 -1
  46. package/build/middlewares/json.mjs +10 -0
  47. package/build/middlewares/json.mjs.map +1 -0
  48. package/build/middlewares/log.d.ts +1 -1
  49. package/build/middlewares/log.js +97 -125
  50. package/build/middlewares/log.js.map +1 -1
  51. package/build/middlewares/log.mjs +96 -0
  52. package/build/middlewares/log.mjs.map +1 -0
  53. package/build/middlewares/make-url-relative.d.ts +1 -1
  54. package/build/middlewares/make-url-relative.js +26 -41
  55. package/build/middlewares/make-url-relative.js.map +1 -1
  56. package/build/middlewares/make-url-relative.mjs +28 -0
  57. package/build/middlewares/make-url-relative.mjs.map +1 -0
  58. package/build/middlewares/match.js +8 -13
  59. package/build/middlewares/match.js.map +1 -1
  60. package/build/middlewares/match.mjs +11 -0
  61. package/build/middlewares/match.mjs.map +1 -0
  62. package/build/middlewares/media.js +15 -19
  63. package/build/middlewares/media.js.map +1 -1
  64. package/build/middlewares/media.mjs +17 -0
  65. package/build/middlewares/media.mjs.map +1 -0
  66. package/build/middlewares/rate-limit.d.ts +2 -2
  67. package/build/middlewares/rate-limit.js +8 -10
  68. package/build/middlewares/rate-limit.js.map +1 -1
  69. package/build/middlewares/rate-limit.mjs +9 -0
  70. package/build/middlewares/rate-limit.mjs.map +1 -0
  71. package/build/middlewares/request-options.d.ts +2 -2
  72. package/build/middlewares/request-options.js +18 -27
  73. package/build/middlewares/request-options.js.map +1 -1
  74. package/build/middlewares/request-options.mjs +19 -0
  75. package/build/middlewares/request-options.mjs.map +1 -0
  76. package/build/middlewares/user-agent.d.ts +1 -1
  77. package/build/middlewares/user-agent.js +11 -12
  78. package/build/middlewares/user-agent.js.map +1 -1
  79. package/build/middlewares/user-agent.mjs +13 -0
  80. package/build/middlewares/user-agent.mjs.map +1 -0
  81. package/build/middlewares/validation.d.ts +1 -1
  82. package/build/middlewares/validation.js +11 -18
  83. package/build/middlewares/validation.js.map +1 -1
  84. package/build/middlewares/validation.mjs +14 -0
  85. package/build/middlewares/validation.mjs.map +1 -0
  86. package/build/middlewares/web/index.js +4 -35
  87. package/build/middlewares/web/index.mjs +4 -0
  88. package/build/middlewares/web/render-web.d.ts +1 -1
  89. package/build/middlewares/web/render-web.js +80 -109
  90. package/build/middlewares/web/render-web.js.map +1 -1
  91. package/build/middlewares/web/render-web.mjs +79 -0
  92. package/build/middlewares/web/render-web.mjs.map +1 -0
  93. package/build/middlewares/web/security.js +29 -41
  94. package/build/middlewares/web/security.js.map +1 -1
  95. package/build/middlewares/web/security.mjs +30 -0
  96. package/build/middlewares/web/security.mjs.map +1 -0
  97. package/build/middlewares/web/utils/manifest.js +17 -18
  98. package/build/middlewares/web/utils/manifest.js.map +1 -1
  99. package/build/middlewares/web/utils/manifest.mjs +21 -0
  100. package/build/middlewares/web/utils/manifest.mjs.map +1 -0
  101. package/build/middlewares/web/utils/renderHTML.d.ts +5 -5
  102. package/build/middlewares/web/utils/renderHTML.js +109 -136
  103. package/build/middlewares/web/utils/renderHTML.js.map +1 -1
  104. package/build/middlewares/web/utils/renderHTML.mjs +113 -0
  105. package/build/middlewares/web/utils/renderHTML.mjs.map +1 -0
  106. package/build/middlewares/web/utils/template.d.ts +2 -2
  107. package/build/middlewares/web/utils/template.js +19 -20
  108. package/build/middlewares/web/utils/template.js.map +1 -1
  109. package/build/middlewares/web/utils/template.mjs +35 -0
  110. package/build/middlewares/web/utils/template.mjs.map +1 -0
  111. package/build/middlewares/web/utils/web-utils.js +17 -18
  112. package/build/middlewares/web/utils/web-utils.js.map +1 -1
  113. package/build/middlewares/web/utils/web-utils.mjs +18 -0
  114. package/build/middlewares/web/utils/web-utils.mjs.map +1 -0
  115. package/build/middlewares/web/web-api.d.ts +1 -2
  116. package/build/middlewares/web/web-api.js +18 -27
  117. package/build/middlewares/web/web-api.js.map +1 -1
  118. package/build/middlewares/web/web-api.mjs +19 -0
  119. package/build/middlewares/web/web-api.mjs.map +1 -0
  120. package/build/middlewares/web/web-middleware.js +16 -23
  121. package/build/middlewares/web/web-middleware.js.map +1 -1
  122. package/build/middlewares/web/web-middleware.mjs +16 -0
  123. package/build/middlewares/web/web-middleware.mjs.map +1 -0
  124. package/build/middlewares/web/web-urls.js +28 -29
  125. package/build/middlewares/web/web-urls.js.map +1 -1
  126. package/build/middlewares/web/web-urls.mjs +32 -0
  127. package/build/middlewares/web/web-urls.mjs.map +1 -0
  128. package/build/types.d.ts +2 -2
  129. package/package.json +24 -13
  130. package/build/index.js.map +0 -1
  131. package/build/middlewares/web/index.js.map +0 -1
  132. package/build/types.js +0 -6
  133. package/build/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"renderHTML.js","names":["_debug","_interopRequireDefault","require","_lruCache","_nodePath","_nodeUrl","_config","_core","_url","_template","_webUtils","e","__esModule","default","DEFAULT_LANGUAGE","cache","LRUCache","max","ttl","debug","buildDebug","defaultManifestFiles","js","ico","css","resolveLogo","logo","url_prefix","requestOptions","isLocalFile","isURLhasValidProtocol","getPublicUrl","path","basename","renderHTML","config","manifest","manifestFiles","res","base","URL","canParse","pathname","language","i18n","web","hideDeprecatedVersions","needHtmlCache","undefined","includes","html_cache","darkMode","title","WEB_TITLE","login","hasLogin","scope","favicon","logoDark","pkgManagers","version","locals","app_version","flags","experiments","primaryColor","validatePrimaryColor","primary_color","scriptsBodyAfter","metaScripts","scriptsbodyBefore","showInfo","showSettings","showThemeSwitch","showFooter","showSearch","showDownloadTarball","showRaw","showUplinks","Object","assign","bodyBefore","scriptsBodyBefore","options","webPage","cacheKey","JSON","stringify","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 { LRUCache } from 'lru-cache';\nimport path from 'node:path';\nimport { URL } from 'node:url';\n\nimport { WEB_TITLE } from '@verdaccio/config';\nimport { HEADERS } from '@verdaccio/core';\nimport type { 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 { AssetManifest } from './template';\nimport { hasLogin, validatePrimaryColor } from './web-utils';\n\nconst DEFAULT_LANGUAGE = 'es-US';\n// Cache for rendered HTML templates: max 500 entries, 1 hour TTL\nconst cache = new LRUCache({ max: 500, ttl: 1000 * 60 * 60 });\n\nconst debug = buildDebug('verdaccio:web:render');\n\nconst defaultManifestFiles: Manifest = {\n js: ['vendors.js', 'main.js'],\n ico: 'favicon.ico',\n css: [],\n};\n\nexport function resolveLogo(\n logo: string | undefined,\n url_prefix: string | undefined,\n requestOptions: RequestOptions\n) {\n if (typeof logo !== 'string') {\n return '';\n }\n const isLocalFile = logo && !isURLhasValidProtocol(logo);\n\n if (isLocalFile) {\n return `${getPublicUrl(url_prefix, requestOptions)}-/static/${path.basename(logo)}`;\n } else if (isURLhasValidProtocol(logo)) {\n return logo;\n } else {\n return '';\n }\n}\n\nexport default function renderHTML(\n config: ConfigYaml,\n manifest: AssetManifest,\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 = URL.canParse(base) ? new URL(base).pathname : base;\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 favicon = resolveLogo(config?.web?.favicon, config?.url_prefix, requestOptions);\n const logo = resolveLogo(config?.web?.logo, config?.url_prefix, requestOptions);\n const logoDark = resolveLogo(config?.web?.logoDark, config?.url_prefix, 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, // deprecated\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n showRaw,\n showUplinks,\n } = Object.assign(\n {},\n {\n scriptsBodyAfter: [],\n bodyBefore: [],\n metaScripts: [],\n },\n config?.web\n );\n // Fallback\n let scriptsBodyBefore = config?.web?.scriptsBodyBefore;\n if (scriptsbodyBefore && !scriptsBodyBefore) {\n scriptsBodyBefore = scriptsbodyBefore;\n }\n const options: TemplateUIOptions = {\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n showRaw,\n showUplinks,\n darkMode,\n url_prefix,\n basename,\n base,\n primaryColor,\n version,\n logo,\n logoDark,\n favicon,\n flags,\n login,\n pkgManagers,\n title,\n scope,\n language,\n hideDeprecatedVersions,\n };\n\n let webPage;\n\n const cacheKey = `template:${JSON.stringify(options)}`;\n\n try {\n webPage = cache.get(cacheKey);\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(cacheKey, 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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","ignoreList":[]}
1
+ {"version":3,"file":"renderHTML.js","names":[],"sources":["../../../../src/middlewares/web/utils/renderHTML.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport type { Response } from 'express';\nimport { LRUCache } from 'lru-cache';\nimport path from 'node:path';\nimport { URL } from 'node:url';\n\nimport { WEB_TITLE } from '@verdaccio/config';\nimport { HEADERS } from '@verdaccio/core';\nimport type { 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 { AssetManifest } from './template';\nimport { hasLogin, validatePrimaryColor } from './web-utils';\n\nconst DEFAULT_LANGUAGE = 'es-US';\n// Cache for rendered HTML templates: max 500 entries, 1 hour TTL\nconst cache = new LRUCache({ max: 500, ttl: 1000 * 60 * 60 });\n\nconst debug = buildDebug('verdaccio:web:render');\n\nconst defaultManifestFiles: Manifest = {\n js: ['vendors.js', 'main.js'],\n ico: 'favicon.ico',\n css: [],\n};\n\nexport function resolveLogo(\n logo: string | undefined,\n url_prefix: string | undefined,\n requestOptions: RequestOptions\n) {\n if (typeof logo !== 'string') {\n return '';\n }\n const isLocalFile = logo && !isURLhasValidProtocol(logo);\n\n if (isLocalFile) {\n return `${getPublicUrl(url_prefix, requestOptions)}-/static/${path.basename(logo)}`;\n } else if (isURLhasValidProtocol(logo)) {\n return logo;\n } else {\n return '';\n }\n}\n\nexport default function renderHTML(\n config: ConfigYaml,\n manifest: AssetManifest,\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 = URL.canParse(base) ? new URL(base).pathname : base;\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 favicon = resolveLogo(config?.web?.favicon, config?.url_prefix, requestOptions);\n const logo = resolveLogo(config?.web?.logo, config?.url_prefix, requestOptions);\n const logoDark = resolveLogo(config?.web?.logoDark, config?.url_prefix, 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, // deprecated\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n showRaw,\n showUplinks,\n } = Object.assign(\n {},\n {\n scriptsBodyAfter: [],\n bodyBefore: [],\n metaScripts: [],\n },\n config?.web\n );\n // Fallback\n let scriptsBodyBefore = config?.web?.scriptsBodyBefore;\n if (scriptsbodyBefore && !scriptsBodyBefore) {\n scriptsBodyBefore = scriptsbodyBefore;\n }\n const options: TemplateUIOptions = {\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n showRaw,\n showUplinks,\n darkMode,\n url_prefix,\n basename,\n base,\n primaryColor,\n version,\n logo,\n logoDark,\n favicon,\n flags,\n login,\n pkgManagers,\n title,\n scope,\n language,\n hideDeprecatedVersions,\n };\n\n let webPage;\n\n const cacheKey = `template:${JSON.stringify(options)}`;\n\n try {\n webPage = cache.get(cacheKey);\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(cacheKey, 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":";;;;;;;;;;;;;AAiBA,IAAM,mBAAmB;AAEzB,IAAM,QAAQ,IAAI,UAAA,SAAS;CAAE,KAAK;CAAK,KAAK,MAAO,KAAK;CAAI,CAAC;AAE7D,IAAM,WAAA,GAAA,MAAA,SAAmB,uBAAuB;AAEhD,IAAM,uBAAiC;CACrC,IAAI,CAAC,cAAc,UAAU;CAC7B,KAAK;CACL,KAAK,EAAE;CACR;AAED,SAAgB,YACd,MACA,YACA,gBACA;AACA,KAAI,OAAO,SAAS,SAClB,QAAO;AAIT,KAFoB,QAAQ,EAAA,GAAA,eAAA,uBAAuB,KAAK,CAGtD,QAAO,IAAA,GAAA,eAAA,cAAgB,YAAY,eAAe,CAAC,WAAW,UAAA,QAAK,SAAS,KAAK;oDAClD,KAAK,CACpC,QAAO;KAEP,QAAO;;AAIX,SAAwB,WACtB,QACA,UACA,eACA,gBACA,KACA;CACA,MAAM,EAAE,eAAe;CACvB,MAAM,QAAA,GAAA,eAAA,cAAoB,QAAQ,YAAY,eAAe;CAC7D,MAAM,WAAW,SAAA,IAAI,SAAS,KAAK,GAAG,IAAI,SAAA,IAAI,KAAK,CAAC,WAAW;CAC/D,MAAM,WAAW,QAAQ,MAAM,OAAO;CACtC,MAAM,yBAAyB,QAAQ,KAAK,0BAA0B;CAEtE,MAAM,gBAAgB,CAAC,KAAA,GAAW,KAAK,CAAC,SAAS,QAAQ,KAAK,WAAW,GACrE,OACA,QAAQ,KAAK;CACjB,MAAM,WAAW,QAAQ,KAAK,YAAY;CAC1C,MAAM,QAAQ,QAAQ,KAAK,SAAS,kBAAA;CACpC,MAAM,QAAQ,kBAAA,SAAS,OAAO;CAC9B,MAAM,QAAQ,QAAQ,KAAK,SAAS;CACpC,MAAM,UAAU,YAAY,QAAQ,KAAK,SAAS,QAAQ,YAAY,eAAe;CACrF,MAAM,OAAO,YAAY,QAAQ,KAAK,MAAM,QAAQ,YAAY,eAAe;CAC/E,MAAM,WAAW,YAAY,QAAQ,KAAK,UAAU,QAAQ,YAAY,eAAe;CACvF,MAAM,cAAc,QAAQ,KAAK,eAAe;EAAC;EAAQ;EAAQ;EAAM;CACvE,MAAM,UAAU,IAAI,OAAO,eAAe;CAC1C,MAAM,QAAQ;EACZ,GAAG,OAAO;EAEV,GAAG,OAAO;EACX;CACD,MAAM,eACJ,kBAAA,qBAAqB,QAAQ,KAAK,iBAAiB,QAAQ,KAAK,aAAa,IAAI;CACnF,MAAM,EACJ,kBACA,aACA,mBACA,UACA,cACA,iBACA,YACA,YACA,qBACA,SACA,gBACE,OAAO,OACT,EAAE,EACF;EACE,kBAAkB,EAAE;EACpB,YAAY,EAAE;EACd,aAAa,EAAE;EAChB,EACD,QAAQ,IACT;CAED,IAAI,oBAAoB,QAAQ,KAAK;AACrC,KAAI,qBAAqB,CAAC,kBACxB,qBAAoB;CAEtB,MAAM,UAA6B;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CAED,IAAI;CAEJ,MAAM,WAAW,YAAY,KAAK,UAAU,QAAQ;AAEpD,KAAI;AACF,YAAU,MAAM,IAAI,SAAS;AAC7B,MAAI,CAAC,SAAS;AACZ,aAAU,iBAAA,QACR;IACE,UAAU,iBAAiB;IAC3B;IACA;IACA;IACA;IACD,EACD,SACD;AAED,OAAI,eAAe;AACjB,UAAM,IAAI,UAAU,QAAQ;AAC5B,YAAM,qBAAqB;;QAG7B,SAAM,uBAAuB;UAExB,OAAY;AACnB,QAAM,IAAI,MAAM,kCAAkC,MAAM,QAAQ;;AAElE,KAAI,UAAU,gBAAgB,gBAAA,QAAQ,UAAU;AAChD,KAAI,KAAK,QAAQ;AACjB,SAAM,eAAe"}
@@ -0,0 +1,113 @@
1
+ import renderTemplate from "./template.mjs";
2
+ import { hasLogin, validatePrimaryColor } from "./web-utils.mjs";
3
+ import { HEADERS } from "@verdaccio/core";
4
+ import buildDebug from "debug";
5
+ import { URL } from "node:url";
6
+ import { WEB_TITLE } from "@verdaccio/config";
7
+ import path from "node:path";
8
+ import { getPublicUrl, isURLhasValidProtocol } from "@verdaccio/url";
9
+ import { LRUCache } from "lru-cache";
10
+ //#region src/middlewares/web/utils/renderHTML.ts
11
+ var DEFAULT_LANGUAGE = "es-US";
12
+ var cache = new LRUCache({
13
+ max: 500,
14
+ ttl: 1e3 * 60 * 60
15
+ });
16
+ var debug = buildDebug("verdaccio:web:render");
17
+ var defaultManifestFiles = {
18
+ js: ["vendors.js", "main.js"],
19
+ ico: "favicon.ico",
20
+ css: []
21
+ };
22
+ function resolveLogo(logo, url_prefix, requestOptions) {
23
+ if (typeof logo !== "string") return "";
24
+ if (logo && !isURLhasValidProtocol(logo)) return `${getPublicUrl(url_prefix, requestOptions)}-/static/${path.basename(logo)}`;
25
+ else if (isURLhasValidProtocol(logo)) return logo;
26
+ else return "";
27
+ }
28
+ function renderHTML(config, manifest, manifestFiles, requestOptions, res) {
29
+ const { url_prefix } = config;
30
+ const base = getPublicUrl(config?.url_prefix, requestOptions);
31
+ const basename = URL.canParse(base) ? new URL(base).pathname : base;
32
+ const language = config?.i18n?.web ?? DEFAULT_LANGUAGE;
33
+ const hideDeprecatedVersions = config?.web?.hideDeprecatedVersions ?? false;
34
+ const needHtmlCache = [void 0, null].includes(config?.web?.html_cache) ? true : config?.web?.html_cache;
35
+ const darkMode = config?.web?.darkMode ?? false;
36
+ const title = config?.web?.title ?? WEB_TITLE;
37
+ const login = hasLogin(config);
38
+ const scope = config?.web?.scope ?? "";
39
+ const favicon = resolveLogo(config?.web?.favicon, config?.url_prefix, requestOptions);
40
+ const logo = resolveLogo(config?.web?.logo, config?.url_prefix, requestOptions);
41
+ const logoDark = resolveLogo(config?.web?.logoDark, config?.url_prefix, requestOptions);
42
+ const pkgManagers = config?.web?.pkgManagers ?? [
43
+ "yarn",
44
+ "pnpm",
45
+ "npm"
46
+ ];
47
+ const version = res.locals.app_version ?? "";
48
+ const flags = {
49
+ ...config.flags,
50
+ ...config.experiments
51
+ };
52
+ const primaryColor = validatePrimaryColor(config?.web?.primary_color ?? config?.web?.primaryColor) ?? "#4b5e40";
53
+ const { scriptsBodyAfter, metaScripts, scriptsbodyBefore, showInfo, showSettings, showThemeSwitch, showFooter, showSearch, showDownloadTarball, showRaw, showUplinks } = Object.assign({}, {
54
+ scriptsBodyAfter: [],
55
+ bodyBefore: [],
56
+ metaScripts: []
57
+ }, config?.web);
58
+ let scriptsBodyBefore = config?.web?.scriptsBodyBefore;
59
+ if (scriptsbodyBefore && !scriptsBodyBefore) scriptsBodyBefore = scriptsbodyBefore;
60
+ const options = {
61
+ showInfo,
62
+ showSettings,
63
+ showThemeSwitch,
64
+ showFooter,
65
+ showSearch,
66
+ showDownloadTarball,
67
+ showRaw,
68
+ showUplinks,
69
+ darkMode,
70
+ url_prefix,
71
+ basename,
72
+ base,
73
+ primaryColor,
74
+ version,
75
+ logo,
76
+ logoDark,
77
+ favicon,
78
+ flags,
79
+ login,
80
+ pkgManagers,
81
+ title,
82
+ scope,
83
+ language,
84
+ hideDeprecatedVersions
85
+ };
86
+ let webPage;
87
+ const cacheKey = `template:${JSON.stringify(options)}`;
88
+ try {
89
+ webPage = cache.get(cacheKey);
90
+ if (!webPage) {
91
+ webPage = renderTemplate({
92
+ manifest: manifestFiles ?? defaultManifestFiles,
93
+ options,
94
+ scriptsBodyAfter,
95
+ metaScripts,
96
+ scriptsBodyBefore
97
+ }, manifest);
98
+ if (needHtmlCache) {
99
+ cache.set(cacheKey, webPage);
100
+ debug("set template cache");
101
+ }
102
+ } else debug("reuse template cache");
103
+ } catch (error) {
104
+ throw new Error(`theme could not be load, stack ${error.stack}`);
105
+ }
106
+ res.setHeader("Content-Type", HEADERS.TEXT_HTML);
107
+ res.send(webPage);
108
+ debug("web rendered");
109
+ }
110
+ //#endregion
111
+ export { renderHTML as default };
112
+
113
+ //# sourceMappingURL=renderHTML.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderHTML.mjs","names":[],"sources":["../../../../src/middlewares/web/utils/renderHTML.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport type { Response } from 'express';\nimport { LRUCache } from 'lru-cache';\nimport path from 'node:path';\nimport { URL } from 'node:url';\n\nimport { WEB_TITLE } from '@verdaccio/config';\nimport { HEADERS } from '@verdaccio/core';\nimport type { 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 { AssetManifest } from './template';\nimport { hasLogin, validatePrimaryColor } from './web-utils';\n\nconst DEFAULT_LANGUAGE = 'es-US';\n// Cache for rendered HTML templates: max 500 entries, 1 hour TTL\nconst cache = new LRUCache({ max: 500, ttl: 1000 * 60 * 60 });\n\nconst debug = buildDebug('verdaccio:web:render');\n\nconst defaultManifestFiles: Manifest = {\n js: ['vendors.js', 'main.js'],\n ico: 'favicon.ico',\n css: [],\n};\n\nexport function resolveLogo(\n logo: string | undefined,\n url_prefix: string | undefined,\n requestOptions: RequestOptions\n) {\n if (typeof logo !== 'string') {\n return '';\n }\n const isLocalFile = logo && !isURLhasValidProtocol(logo);\n\n if (isLocalFile) {\n return `${getPublicUrl(url_prefix, requestOptions)}-/static/${path.basename(logo)}`;\n } else if (isURLhasValidProtocol(logo)) {\n return logo;\n } else {\n return '';\n }\n}\n\nexport default function renderHTML(\n config: ConfigYaml,\n manifest: AssetManifest,\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 = URL.canParse(base) ? new URL(base).pathname : base;\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 favicon = resolveLogo(config?.web?.favicon, config?.url_prefix, requestOptions);\n const logo = resolveLogo(config?.web?.logo, config?.url_prefix, requestOptions);\n const logoDark = resolveLogo(config?.web?.logoDark, config?.url_prefix, 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, // deprecated\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n showRaw,\n showUplinks,\n } = Object.assign(\n {},\n {\n scriptsBodyAfter: [],\n bodyBefore: [],\n metaScripts: [],\n },\n config?.web\n );\n // Fallback\n let scriptsBodyBefore = config?.web?.scriptsBodyBefore;\n if (scriptsbodyBefore && !scriptsBodyBefore) {\n scriptsBodyBefore = scriptsbodyBefore;\n }\n const options: TemplateUIOptions = {\n showInfo,\n showSettings,\n showThemeSwitch,\n showFooter,\n showSearch,\n showDownloadTarball,\n showRaw,\n showUplinks,\n darkMode,\n url_prefix,\n basename,\n base,\n primaryColor,\n version,\n logo,\n logoDark,\n favicon,\n flags,\n login,\n pkgManagers,\n title,\n scope,\n language,\n hideDeprecatedVersions,\n };\n\n let webPage;\n\n const cacheKey = `template:${JSON.stringify(options)}`;\n\n try {\n webPage = cache.get(cacheKey);\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(cacheKey, 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":";;;;;;;;;;AAiBA,IAAM,mBAAmB;AAEzB,IAAM,QAAQ,IAAI,SAAS;CAAE,KAAK;CAAK,KAAK,MAAO,KAAK;CAAI,CAAC;AAE7D,IAAM,QAAQ,WAAW,uBAAuB;AAEhD,IAAM,uBAAiC;CACrC,IAAI,CAAC,cAAc,UAAU;CAC7B,KAAK;CACL,KAAK,EAAE;CACR;AAED,SAAgB,YACd,MACA,YACA,gBACA;AACA,KAAI,OAAO,SAAS,SAClB,QAAO;AAIT,KAFoB,QAAQ,CAAC,sBAAsB,KAAK,CAGtD,QAAO,GAAG,aAAa,YAAY,eAAe,CAAC,WAAW,KAAK,SAAS,KAAK;UACxE,sBAAsB,KAAK,CACpC,QAAO;KAEP,QAAO;;AAIX,SAAwB,WACtB,QACA,UACA,eACA,gBACA,KACA;CACA,MAAM,EAAE,eAAe;CACvB,MAAM,OAAO,aAAa,QAAQ,YAAY,eAAe;CAC7D,MAAM,WAAW,IAAI,SAAS,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC,WAAW;CAC/D,MAAM,WAAW,QAAQ,MAAM,OAAO;CACtC,MAAM,yBAAyB,QAAQ,KAAK,0BAA0B;CAEtE,MAAM,gBAAgB,CAAC,KAAA,GAAW,KAAK,CAAC,SAAS,QAAQ,KAAK,WAAW,GACrE,OACA,QAAQ,KAAK;CACjB,MAAM,WAAW,QAAQ,KAAK,YAAY;CAC1C,MAAM,QAAQ,QAAQ,KAAK,SAAS;CACpC,MAAM,QAAQ,SAAS,OAAO;CAC9B,MAAM,QAAQ,QAAQ,KAAK,SAAS;CACpC,MAAM,UAAU,YAAY,QAAQ,KAAK,SAAS,QAAQ,YAAY,eAAe;CACrF,MAAM,OAAO,YAAY,QAAQ,KAAK,MAAM,QAAQ,YAAY,eAAe;CAC/E,MAAM,WAAW,YAAY,QAAQ,KAAK,UAAU,QAAQ,YAAY,eAAe;CACvF,MAAM,cAAc,QAAQ,KAAK,eAAe;EAAC;EAAQ;EAAQ;EAAM;CACvE,MAAM,UAAU,IAAI,OAAO,eAAe;CAC1C,MAAM,QAAQ;EACZ,GAAG,OAAO;EAEV,GAAG,OAAO;EACX;CACD,MAAM,eACJ,qBAAqB,QAAQ,KAAK,iBAAiB,QAAQ,KAAK,aAAa,IAAI;CACnF,MAAM,EACJ,kBACA,aACA,mBACA,UACA,cACA,iBACA,YACA,YACA,qBACA,SACA,gBACE,OAAO,OACT,EAAE,EACF;EACE,kBAAkB,EAAE;EACpB,YAAY,EAAE;EACd,aAAa,EAAE;EAChB,EACD,QAAQ,IACT;CAED,IAAI,oBAAoB,QAAQ,KAAK;AACrC,KAAI,qBAAqB,CAAC,kBACxB,qBAAoB;CAEtB,MAAM,UAA6B;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CAED,IAAI;CAEJ,MAAM,WAAW,YAAY,KAAK,UAAU,QAAQ;AAEpD,KAAI;AACF,YAAU,MAAM,IAAI,SAAS;AAC7B,MAAI,CAAC,SAAS;AACZ,aAAU,eACR;IACE,UAAU,iBAAiB;IAC3B;IACA;IACA;IACA;IACD,EACD,SACD;AAED,OAAI,eAAe;AACjB,UAAM,IAAI,UAAU,QAAQ;AAC5B,UAAM,qBAAqB;;QAG7B,OAAM,uBAAuB;UAExB,OAAY;AACnB,QAAM,IAAI,MAAM,kCAAkC,MAAM,QAAQ;;AAElE,KAAI,UAAU,gBAAgB,QAAQ,UAAU;AAChD,KAAI,KAAK,QAAQ;AACjB,OAAM,eAAe"}
@@ -1,5 +1,5 @@
1
- import type { TemplateUIOptions } from '@verdaccio/types';
2
- import type { Manifest } from './manifest';
1
+ import { TemplateUIOptions } from '@verdaccio/types';
2
+ import { Manifest } from './manifest';
3
3
  export type Template = {
4
4
  manifest: Manifest;
5
5
  options: TemplateUIOptions;
@@ -1,38 +1,37 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = renderTemplate;
7
- var _debug = _interopRequireDefault(require("debug"));
8
- var _manifest = require("./manifest");
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const debug = (0, _debug.default)('verdaccio:web:render:template');
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
2
+ const require_manifest = require("./manifest.js");
3
+ let debug = require("debug");
4
+ debug = require_runtime.__toESM(debug);
5
+ //#region src/middlewares/web/utils/template.ts
6
+ var debug$1 = (0, debug.default)("verdaccio:web:render:template");
11
7
  function renderTemplate(template, manifest) {
12
- debug('template %o', template);
13
- debug('manifest %o', manifest);
14
- return `
8
+ debug$1("template %o", template);
9
+ debug$1("manifest %o", manifest);
10
+ return `
15
11
  <!DOCTYPE html>
16
12
  <html lang="en-us">
17
13
  <head>
18
14
  <meta charset="utf-8">
19
15
  <base href="${template?.options.base}">
20
- <title>${template?.options?.title ?? ''}</title>
16
+ <title>${template?.options?.title ?? ""}</title>
21
17
  <link rel="icon" href="${template?.options.base}-/static/favicon.ico">
22
18
  <meta name="viewport" content="width=device-width, initial-scale=1">
23
19
  <script>
24
20
  window.__VERDACCIO_BASENAME_UI_OPTIONS=${JSON.stringify(template.options)}
25
- </script>
26
- ${template.manifest.css?.length ? (0, _manifest.getManifestValue)(template.manifest.css, manifest, template?.options.base).map(item => `<link rel="stylesheet" href="${item}">`).join('\n ') : ''}
27
- ${template?.metaScripts ? template.metaScripts.join('') : ''}
21
+ <\/script>
22
+ ${template.manifest.css?.length ? require_manifest.getManifestValue(template.manifest.css, manifest, template?.options.base).map((item) => `<link rel="stylesheet" href="${item}">`).join("\n ") : ""}
23
+ ${template?.metaScripts ? template.metaScripts.join("") : ""}
28
24
  </head>
29
25
  <body class="body">
30
- ${template?.scriptsBodyBefore ? template.scriptsBodyBefore.join('') : ''}
26
+ ${template?.scriptsBodyBefore ? template.scriptsBodyBefore.join("") : ""}
31
27
  <div id="root"></div>
32
- ${(0, _manifest.getManifestValue)(template.manifest.js, manifest, template?.options.base).map(item => `<script type="module" src="${item}"></script>`).join(`\n `)}
33
- ${template?.scriptsBodyAfter ? template.scriptsBodyAfter.join('') : ''}
28
+ ${require_manifest.getManifestValue(template.manifest.js, manifest, template?.options.base).map((item) => `<script type="module" src="${item}"><\/script>`).join(`\n `)}
29
+ ${template?.scriptsBodyAfter ? template.scriptsBodyAfter.join("") : ""}
34
30
  </body>
35
31
  </html>
36
32
  `;
37
33
  }
34
+ //#endregion
35
+ exports.default = renderTemplate;
36
+
38
37
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","names":["_debug","_interopRequireDefault","require","_manifest","e","__esModule","default","debug","buildDebug","renderTemplate","template","manifest","options","base","title","JSON","stringify","css","length","getManifestValue","map","item","join","metaScripts","scriptsBodyBefore","js","scriptsBodyAfter"],"sources":["../../../../src/middlewares/web/utils/template.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport type { TemplateUIOptions } from '@verdaccio/types';\n\nimport type { Manifest } from './manifest';\nimport { getManifestValue } from './manifest';\n\nconst debug = buildDebug('verdaccio:web:render:template');\n\nexport type Template = {\n manifest: Manifest;\n options: TemplateUIOptions;\n metaScripts?: string[];\n scriptsBodyAfter?: string[];\n scriptsBodyBefore?: string[];\n};\n\nexport interface AssetManifest {\n [key: string]: string;\n}\n\nexport default function renderTemplate(template: Template, manifest: AssetManifest) {\n debug('template %o', template);\n debug('manifest %o', manifest);\n\n return `\n <!DOCTYPE html>\n <html lang=\"en-us\">\n <head>\n <meta charset=\"utf-8\">\n <base href=\"${template?.options.base}\">\n <title>${template?.options?.title ?? ''}</title>\n <link rel=\"icon\" href=\"${template?.options.base}-/static/favicon.ico\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <script>\n window.__VERDACCIO_BASENAME_UI_OPTIONS=${JSON.stringify(template.options)}\n </script>\n ${\n template.manifest.css?.length\n ? getManifestValue(template.manifest.css, manifest, template?.options.base)\n .map((item) => `<link rel=\"stylesheet\" href=\"${item}\">`)\n .join('\\n ')\n : ''\n }\n ${template?.metaScripts ? template.metaScripts.join('') : ''}\n </head>\n <body class=\"body\">\n ${template?.scriptsBodyBefore ? template.scriptsBodyBefore.join('') : ''}\n <div id=\"root\"></div>\n ${getManifestValue(template.manifest.js, manifest, template?.options.base)\n .map((item) => `<script type=\"module\" src=\"${item}\"></script>`)\n .join(`\\n `)}\n ${template?.scriptsBodyAfter ? template.scriptsBodyAfter.join('') : ''}\n </body>\n </html>\n `;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,SAAA,GAAAD,OAAA;AAA8C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9C,MAAMG,KAAK,GAAG,IAAAC,cAAU,EAAC,+BAA+B,CAAC;AAc1C,SAASC,cAAcA,CAACC,QAAkB,EAAEC,QAAuB,EAAE;EAClFJ,KAAK,CAAC,aAAa,EAAEG,QAAQ,CAAC;EAC9BH,KAAK,CAAC,aAAa,EAAEI,QAAQ,CAAC;EAE9B,OAAO;AACT;AACA;AACA;AACA;AACA,sBAAsBD,QAAQ,EAAEE,OAAO,CAACC,IAAI;AAC5C,iBAAiBH,QAAQ,EAAEE,OAAO,EAAEE,KAAK,IAAI,EAAE;AAC/C,iCAAiCJ,QAAQ,EAAEE,OAAO,CAACC,IAAI;AACvD;AACA;AACA,qDAAqDE,IAAI,CAACC,SAAS,CAACN,QAAQ,CAACE,OAAO,CAAC;AACrF;AACA,UACUF,QAAQ,CAACC,QAAQ,CAACM,GAAG,EAAEC,MAAM,GACzB,IAAAC,0BAAgB,EAACT,QAAQ,CAACC,QAAQ,CAACM,GAAG,EAAEN,QAAQ,EAAED,QAAQ,EAAEE,OAAO,CAACC,IAAI,CAAC,CACtEO,GAAG,CAAEC,IAAI,IAAK,gCAAgCA,IAAI,IAAI,CAAC,CACvDC,IAAI,CAAC,YAAY,CAAC,GACrB,EAAE;AAChB,UACUZ,QAAQ,EAAEa,WAAW,GAAGb,QAAQ,CAACa,WAAW,CAACD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;AACpE;AACA;AACA,UAAUZ,QAAQ,EAAEc,iBAAiB,GAAGd,QAAQ,CAACc,iBAAiB,CAACF,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;AAChF;AACA,UAAU,IAAAH,0BAAgB,EAACT,QAAQ,CAACC,QAAQ,CAACc,EAAE,EAAEd,QAAQ,EAAED,QAAQ,EAAEE,OAAO,CAACC,IAAI,CAAC,CACvEO,GAAG,CAAEC,IAAI,IAAK,8BAA8BA,IAAI,aAAa,CAAC,CAC9DC,IAAI,CAAC,YAAY,CAAC;AAC7B,UAAUZ,QAAQ,EAAEgB,gBAAgB,GAAGhB,QAAQ,CAACgB,gBAAgB,CAACJ,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;AAC9E;AACA;AACA,GAAG;AACH","ignoreList":[]}
1
+ {"version":3,"file":"template.js","names":[],"sources":["../../../../src/middlewares/web/utils/template.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport type { TemplateUIOptions } from '@verdaccio/types';\n\nimport type { Manifest } from './manifest';\nimport { getManifestValue } from './manifest';\n\nconst debug = buildDebug('verdaccio:web:render:template');\n\nexport type Template = {\n manifest: Manifest;\n options: TemplateUIOptions;\n metaScripts?: string[];\n scriptsBodyAfter?: string[];\n scriptsBodyBefore?: string[];\n};\n\nexport interface AssetManifest {\n [key: string]: string;\n}\n\nexport default function renderTemplate(template: Template, manifest: AssetManifest) {\n debug('template %o', template);\n debug('manifest %o', manifest);\n\n return `\n <!DOCTYPE html>\n <html lang=\"en-us\">\n <head>\n <meta charset=\"utf-8\">\n <base href=\"${template?.options.base}\">\n <title>${template?.options?.title ?? ''}</title>\n <link rel=\"icon\" href=\"${template?.options.base}-/static/favicon.ico\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <script>\n window.__VERDACCIO_BASENAME_UI_OPTIONS=${JSON.stringify(template.options)}\n </script>\n ${\n template.manifest.css?.length\n ? getManifestValue(template.manifest.css, manifest, template?.options.base)\n .map((item) => `<link rel=\"stylesheet\" href=\"${item}\">`)\n .join('\\n ')\n : ''\n }\n ${template?.metaScripts ? template.metaScripts.join('') : ''}\n </head>\n <body class=\"body\">\n ${template?.scriptsBodyBefore ? template.scriptsBodyBefore.join('') : ''}\n <div id=\"root\"></div>\n ${getManifestValue(template.manifest.js, manifest, template?.options.base)\n .map((item) => `<script type=\"module\" src=\"${item}\"></script>`)\n .join(`\\n `)}\n ${template?.scriptsBodyAfter ? template.scriptsBodyAfter.join('') : ''}\n </body>\n </html>\n `;\n}\n"],"mappings":";;;;;AAOA,IAAM,WAAA,GAAA,MAAA,SAAmB,gCAAgC;AAczD,SAAwB,eAAe,UAAoB,UAAyB;AAClF,SAAM,eAAe,SAAS;AAC9B,SAAM,eAAe,SAAS;AAE9B,QAAO;;;;;sBAKa,UAAU,QAAQ,KAAK;iBAC5B,UAAU,SAAS,SAAS,GAAG;iCACf,UAAU,QAAQ,KAAK;;;qDAGH,KAAK,UAAU,SAAS,QAAQ,CAAC;;UAG5E,SAAS,SAAS,KAAK,SACnB,iBAAA,iBAAiB,SAAS,SAAS,KAAK,UAAU,UAAU,QAAQ,KAAK,CACtE,KAAK,SAAS,gCAAgC,KAAK,IAAI,CACvD,KAAK,aAAa,GACrB,GACL;UACC,UAAU,cAAc,SAAS,YAAY,KAAK,GAAG,GAAG,GAAG;;;UAG3D,UAAU,oBAAoB,SAAS,kBAAkB,KAAK,GAAG,GAAG,GAAG;;UAEvE,iBAAA,iBAAiB,SAAS,SAAS,IAAI,UAAU,UAAU,QAAQ,KAAK,CACvE,KAAK,SAAS,8BAA8B,KAAK,cAAa,CAC9D,KAAK,aAAa,CAAC;UACpB,UAAU,mBAAmB,SAAS,iBAAiB,KAAK,GAAG,GAAG,GAAG"}
@@ -0,0 +1,35 @@
1
+ import { getManifestValue } from "./manifest.mjs";
2
+ import buildDebug from "debug";
3
+ //#region src/middlewares/web/utils/template.ts
4
+ var debug = buildDebug("verdaccio:web:render:template");
5
+ function renderTemplate(template, manifest) {
6
+ debug("template %o", template);
7
+ debug("manifest %o", manifest);
8
+ return `
9
+ <!DOCTYPE html>
10
+ <html lang="en-us">
11
+ <head>
12
+ <meta charset="utf-8">
13
+ <base href="${template?.options.base}">
14
+ <title>${template?.options?.title ?? ""}</title>
15
+ <link rel="icon" href="${template?.options.base}-/static/favicon.ico">
16
+ <meta name="viewport" content="width=device-width, initial-scale=1">
17
+ <script>
18
+ window.__VERDACCIO_BASENAME_UI_OPTIONS=${JSON.stringify(template.options)}
19
+ <\/script>
20
+ ${template.manifest.css?.length ? getManifestValue(template.manifest.css, manifest, template?.options.base).map((item) => `<link rel="stylesheet" href="${item}">`).join("\n ") : ""}
21
+ ${template?.metaScripts ? template.metaScripts.join("") : ""}
22
+ </head>
23
+ <body class="body">
24
+ ${template?.scriptsBodyBefore ? template.scriptsBodyBefore.join("") : ""}
25
+ <div id="root"></div>
26
+ ${getManifestValue(template.manifest.js, manifest, template?.options.base).map((item) => `<script type="module" src="${item}"><\/script>`).join(`\n `)}
27
+ ${template?.scriptsBodyAfter ? template.scriptsBodyAfter.join("") : ""}
28
+ </body>
29
+ </html>
30
+ `;
31
+ }
32
+ //#endregion
33
+ export { renderTemplate as default };
34
+
35
+ //# sourceMappingURL=template.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.mjs","names":[],"sources":["../../../../src/middlewares/web/utils/template.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport type { TemplateUIOptions } from '@verdaccio/types';\n\nimport type { Manifest } from './manifest';\nimport { getManifestValue } from './manifest';\n\nconst debug = buildDebug('verdaccio:web:render:template');\n\nexport type Template = {\n manifest: Manifest;\n options: TemplateUIOptions;\n metaScripts?: string[];\n scriptsBodyAfter?: string[];\n scriptsBodyBefore?: string[];\n};\n\nexport interface AssetManifest {\n [key: string]: string;\n}\n\nexport default function renderTemplate(template: Template, manifest: AssetManifest) {\n debug('template %o', template);\n debug('manifest %o', manifest);\n\n return `\n <!DOCTYPE html>\n <html lang=\"en-us\">\n <head>\n <meta charset=\"utf-8\">\n <base href=\"${template?.options.base}\">\n <title>${template?.options?.title ?? ''}</title>\n <link rel=\"icon\" href=\"${template?.options.base}-/static/favicon.ico\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <script>\n window.__VERDACCIO_BASENAME_UI_OPTIONS=${JSON.stringify(template.options)}\n </script>\n ${\n template.manifest.css?.length\n ? getManifestValue(template.manifest.css, manifest, template?.options.base)\n .map((item) => `<link rel=\"stylesheet\" href=\"${item}\">`)\n .join('\\n ')\n : ''\n }\n ${template?.metaScripts ? template.metaScripts.join('') : ''}\n </head>\n <body class=\"body\">\n ${template?.scriptsBodyBefore ? template.scriptsBodyBefore.join('') : ''}\n <div id=\"root\"></div>\n ${getManifestValue(template.manifest.js, manifest, template?.options.base)\n .map((item) => `<script type=\"module\" src=\"${item}\"></script>`)\n .join(`\\n `)}\n ${template?.scriptsBodyAfter ? template.scriptsBodyAfter.join('') : ''}\n </body>\n </html>\n `;\n}\n"],"mappings":";;;AAOA,IAAM,QAAQ,WAAW,gCAAgC;AAczD,SAAwB,eAAe,UAAoB,UAAyB;AAClF,OAAM,eAAe,SAAS;AAC9B,OAAM,eAAe,SAAS;AAE9B,QAAO;;;;;sBAKa,UAAU,QAAQ,KAAK;iBAC5B,UAAU,SAAS,SAAS,GAAG;iCACf,UAAU,QAAQ,KAAK;;;qDAGH,KAAK,UAAU,SAAS,QAAQ,CAAC;;UAG5E,SAAS,SAAS,KAAK,SACnB,iBAAiB,SAAS,SAAS,KAAK,UAAU,UAAU,QAAQ,KAAK,CACtE,KAAK,SAAS,gCAAgC,KAAK,IAAI,CACvD,KAAK,aAAa,GACrB,GACL;UACC,UAAU,cAAc,SAAS,YAAY,KAAK,GAAG,GAAG,GAAG;;;UAG3D,UAAU,oBAAoB,SAAS,kBAAkB,KAAK,GAAG,GAAG,GAAG;;UAEvE,iBAAiB,SAAS,SAAS,IAAI,UAAU,UAAU,QAAQ,KAAK,CACvE,KAAK,SAAS,8BAA8B,KAAK,cAAa,CAC9D,KAAK,aAAa,CAAC;UACpB,UAAU,mBAAmB,SAAS,iBAAiB,KAAK,GAAG,GAAG,GAAG"}
@@ -1,23 +1,22 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.hasLogin = hasLogin;
7
- exports.validatePrimaryColor = validatePrimaryColor;
8
- var _debug = _interopRequireDefault(require("debug"));
9
- var _lodash = _interopRequireDefault(require("lodash"));
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- const debug = (0, _debug.default)('verdaccio:web:middlwares');
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
2
+ let debug = require("debug");
3
+ debug = require_runtime.__toESM(debug);
4
+ let lodash = require("lodash");
5
+ lodash = require_runtime.__toESM(lodash);
6
+ //#region src/middlewares/web/utils/web-utils.ts
7
+ var debug$1 = (0, debug.default)("verdaccio:web:middlwares");
12
8
  function validatePrimaryColor(primaryColor) {
13
- const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);
14
- if (!isHex) {
15
- debug('invalid primary color %o', primaryColor);
16
- return;
17
- }
18
- return primaryColor;
9
+ if (!/^#([0-9A-F]{3}){1,2}$/i.test(primaryColor)) {
10
+ debug$1("invalid primary color %o", primaryColor);
11
+ return;
12
+ }
13
+ return primaryColor;
19
14
  }
20
15
  function hasLogin(config) {
21
- return _lodash.default.isNil(config?.web?.login) || config?.web?.login === true;
16
+ return lodash.default.isNil(config?.web?.login) || config?.web?.login === true;
22
17
  }
18
+ //#endregion
19
+ exports.hasLogin = hasLogin;
20
+ exports.validatePrimaryColor = validatePrimaryColor;
21
+
23
22
  //# sourceMappingURL=web-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-utils.js","names":["_debug","_interopRequireDefault","require","_lodash","e","__esModule","default","debug","buildDebug","validatePrimaryColor","primaryColor","isHex","test","hasLogin","config","_","isNil","web","login"],"sources":["../../../../src/middlewares/web/utils/web-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nconst debug = buildDebug('verdaccio:web:middlwares');\n\nexport function validatePrimaryColor(primaryColor) {\n const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);\n if (!isHex) {\n debug('invalid primary color %o', primaryColor);\n return;\n }\n\n return primaryColor;\n}\n\nexport function hasLogin(config: any) {\n return _.isNil(config?.web?.login) || config?.web?.login === true;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAuB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEvB,MAAMG,KAAK,GAAG,IAAAC,cAAU,EAAC,0BAA0B,CAAC;AAE7C,SAASC,oBAAoBA,CAACC,YAAY,EAAE;EACjD,MAAMC,KAAK,GAAG,wBAAwB,CAACC,IAAI,CAACF,YAAY,CAAC;EACzD,IAAI,CAACC,KAAK,EAAE;IACVJ,KAAK,CAAC,0BAA0B,EAAEG,YAAY,CAAC;IAC/C;EACF;EAEA,OAAOA,YAAY;AACrB;AAEO,SAASG,QAAQA,CAACC,MAAW,EAAE;EACpC,OAAOC,eAAC,CAACC,KAAK,CAACF,MAAM,EAAEG,GAAG,EAAEC,KAAK,CAAC,IAAIJ,MAAM,EAAEG,GAAG,EAAEC,KAAK,KAAK,IAAI;AACnE","ignoreList":[]}
1
+ {"version":3,"file":"web-utils.js","names":[],"sources":["../../../../src/middlewares/web/utils/web-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nconst debug = buildDebug('verdaccio:web:middlwares');\n\nexport function validatePrimaryColor(primaryColor) {\n const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);\n if (!isHex) {\n debug('invalid primary color %o', primaryColor);\n return;\n }\n\n return primaryColor;\n}\n\nexport function hasLogin(config: any) {\n return _.isNil(config?.web?.login) || config?.web?.login === true;\n}\n"],"mappings":";;;;;;AAGA,IAAM,WAAA,GAAA,MAAA,SAAmB,2BAA2B;AAEpD,SAAgB,qBAAqB,cAAc;AAEjD,KAAI,CADU,yBAAyB,KAAK,aAAa,EAC7C;AACV,UAAM,4BAA4B,aAAa;AAC/C;;AAGF,QAAO;;AAGT,SAAgB,SAAS,QAAa;AACpC,QAAO,OAAA,QAAE,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU"}
@@ -0,0 +1,18 @@
1
+ import buildDebug from "debug";
2
+ import _ from "lodash";
3
+ //#region src/middlewares/web/utils/web-utils.ts
4
+ var debug = buildDebug("verdaccio:web:middlwares");
5
+ function validatePrimaryColor(primaryColor) {
6
+ if (!/^#([0-9A-F]{3}){1,2}$/i.test(primaryColor)) {
7
+ debug("invalid primary color %o", primaryColor);
8
+ return;
9
+ }
10
+ return primaryColor;
11
+ }
12
+ function hasLogin(config) {
13
+ return _.isNil(config?.web?.login) || config?.web?.login === true;
14
+ }
15
+ //#endregion
16
+ export { hasLogin, validatePrimaryColor };
17
+
18
+ //# sourceMappingURL=web-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-utils.mjs","names":[],"sources":["../../../../src/middlewares/web/utils/web-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nconst debug = buildDebug('verdaccio:web:middlwares');\n\nexport function validatePrimaryColor(primaryColor) {\n const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor);\n if (!isHex) {\n debug('invalid primary color %o', primaryColor);\n return;\n }\n\n return primaryColor;\n}\n\nexport function hasLogin(config: any) {\n return _.isNil(config?.web?.login) || config?.web?.login === true;\n}\n"],"mappings":";;;AAGA,IAAM,QAAQ,WAAW,2BAA2B;AAEpD,SAAgB,qBAAqB,cAAc;AAEjD,KAAI,CADU,yBAAyB,KAAK,aAAa,EAC7C;AACV,QAAM,4BAA4B,aAAa;AAC/C;;AAGF,QAAO;;AAGT,SAAgB,SAAS,QAAa;AACpC,QAAO,EAAE,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU"}
@@ -1,3 +1,2 @@
1
- import type { RequestHandler } from 'express';
2
- import { Router } from 'express';
1
+ import { RequestHandler, Router } from 'express';
3
2
  export declare function webAPIMiddleware(tokenMiddleware: RequestHandler, webEndpointsApi: RequestHandler): Router;
@@ -1,30 +1,21 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.webAPIMiddleware = webAPIMiddleware;
7
- var _express = _interopRequireWildcard(require("express"));
8
- var _validation = require("../validation");
9
- var _security = require("./security");
10
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
2
+ const require_validation = require("../validation.js");
3
+ const require_security = require("./security.js");
4
+ let express = require("express");
5
+ express = require_runtime.__toESM(express);
6
+ //#region src/middlewares/web/web-api.ts
11
7
  function webAPIMiddleware(tokenMiddleware, webEndpointsApi) {
12
- const route = (0, _express.Router)();
13
- // validate all of these params as a package name
14
- // this might be too harsh, so ask if it causes trouble=
15
- route.param('package', _validation.validatePackage);
16
- route.param('filename', _validation.validateName);
17
- route.param('version', _validation.validateName);
18
- route.use(_express.default.urlencoded({
19
- extended: false
20
- }));
21
- route.use(_security.setSecurityWebHeaders);
22
- if (typeof tokenMiddleware === 'function') {
23
- route.use(tokenMiddleware);
24
- }
25
- if (typeof webEndpointsApi === 'function') {
26
- route.use(webEndpointsApi);
27
- }
28
- return route;
8
+ const route = (0, express.Router)();
9
+ route.param("package", require_validation.validatePackage);
10
+ route.param("filename", require_validation.validateName);
11
+ route.param("version", require_validation.validateName);
12
+ route.use(express.default.urlencoded({ extended: false }));
13
+ route.use(require_security.setSecurityWebHeaders);
14
+ if (typeof tokenMiddleware === "function") route.use(tokenMiddleware);
15
+ if (typeof webEndpointsApi === "function") route.use(webEndpointsApi);
16
+ return route;
29
17
  }
18
+ //#endregion
19
+ exports.webAPIMiddleware = webAPIMiddleware;
20
+
30
21
  //# sourceMappingURL=web-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-api.js","names":["_express","_interopRequireWildcard","require","_validation","_security","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","webAPIMiddleware","tokenMiddleware","webEndpointsApi","route","Router","param","validatePackage","validateName","use","express","urlencoded","extended","setSecurityWebHeaders"],"sources":["../../../src/middlewares/web/web-api.ts"],"sourcesContent":["import type { RequestHandler } from 'express';\nimport express, { Router } from 'express';\n\nimport { validateName, validatePackage } from '../validation';\nimport { setSecurityWebHeaders } from './security';\n\nexport function webAPIMiddleware(\n tokenMiddleware: RequestHandler,\n webEndpointsApi: RequestHandler\n): Router {\n const route = Router();\n // validate all of these params as a package name\n // this might be too harsh, so ask if it causes trouble=\n route.param('package', validatePackage);\n route.param('filename', validateName);\n route.param('version', validateName);\n route.use(express.urlencoded({ extended: false }));\n route.use(setSecurityWebHeaders);\n\n if (typeof tokenMiddleware === 'function') {\n route.use(tokenMiddleware);\n }\n\n if (typeof webEndpointsApi === 'function') {\n route.use(webEndpointsApi);\n }\n\n return route;\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAAmD,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAE5C,SAASkB,gBAAgBA,CAC9BC,eAA+B,EAC/BC,eAA+B,EACvB;EACR,MAAMC,KAAK,GAAG,IAAAC,eAAM,EAAC,CAAC;EACtB;EACA;EACAD,KAAK,CAACE,KAAK,CAAC,SAAS,EAAEC,2BAAe,CAAC;EACvCH,KAAK,CAACE,KAAK,CAAC,UAAU,EAAEE,wBAAY,CAAC;EACrCJ,KAAK,CAACE,KAAK,CAAC,SAAS,EAAEE,wBAAY,CAAC;EACpCJ,KAAK,CAACK,GAAG,CAACC,gBAAO,CAACC,UAAU,CAAC;IAAEC,QAAQ,EAAE;EAAM,CAAC,CAAC,CAAC;EAClDR,KAAK,CAACK,GAAG,CAACI,+BAAqB,CAAC;EAEhC,IAAI,OAAOX,eAAe,KAAK,UAAU,EAAE;IACzCE,KAAK,CAACK,GAAG,CAACP,eAAe,CAAC;EAC5B;EAEA,IAAI,OAAOC,eAAe,KAAK,UAAU,EAAE;IACzCC,KAAK,CAACK,GAAG,CAACN,eAAe,CAAC;EAC5B;EAEA,OAAOC,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"file":"web-api.js","names":[],"sources":["../../../src/middlewares/web/web-api.ts"],"sourcesContent":["import type { RequestHandler } from 'express';\nimport express, { Router } from 'express';\n\nimport { validateName, validatePackage } from '../validation';\nimport { setSecurityWebHeaders } from './security';\n\nexport function webAPIMiddleware(\n tokenMiddleware: RequestHandler,\n webEndpointsApi: RequestHandler\n): Router {\n const route = Router();\n // validate all of these params as a package name\n // this might be too harsh, so ask if it causes trouble=\n route.param('package', validatePackage);\n route.param('filename', validateName);\n route.param('version', validateName);\n route.use(express.urlencoded({ extended: false }));\n route.use(setSecurityWebHeaders);\n\n if (typeof tokenMiddleware === 'function') {\n route.use(tokenMiddleware);\n }\n\n if (typeof webEndpointsApi === 'function') {\n route.use(webEndpointsApi);\n }\n\n return route;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,iBACd,iBACA,iBACQ;CACR,MAAM,SAAA,GAAA,QAAA,SAAgB;AAGtB,OAAM,MAAM,WAAW,mBAAA,gBAAgB;AACvC,OAAM,MAAM,YAAY,mBAAA,aAAa;AACrC,OAAM,MAAM,WAAW,mBAAA,aAAa;AACpC,OAAM,IAAI,QAAA,QAAQ,WAAW,EAAE,UAAU,OAAO,CAAC,CAAC;AAClD,OAAM,IAAI,iBAAA,sBAAsB;AAEhC,KAAI,OAAO,oBAAoB,WAC7B,OAAM,IAAI,gBAAgB;AAG5B,KAAI,OAAO,oBAAoB,WAC7B,OAAM,IAAI,gBAAgB;AAG5B,QAAO"}
@@ -0,0 +1,19 @@
1
+ import { validateName, validatePackage } from "../validation.mjs";
2
+ import { setSecurityWebHeaders } from "./security.mjs";
3
+ import express, { Router } from "express";
4
+ //#region src/middlewares/web/web-api.ts
5
+ function webAPIMiddleware(tokenMiddleware, webEndpointsApi) {
6
+ const route = Router();
7
+ route.param("package", validatePackage);
8
+ route.param("filename", validateName);
9
+ route.param("version", validateName);
10
+ route.use(express.urlencoded({ extended: false }));
11
+ route.use(setSecurityWebHeaders);
12
+ if (typeof tokenMiddleware === "function") route.use(tokenMiddleware);
13
+ if (typeof webEndpointsApi === "function") route.use(webEndpointsApi);
14
+ return route;
15
+ }
16
+ //#endregion
17
+ export { webAPIMiddleware };
18
+
19
+ //# sourceMappingURL=web-api.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-api.mjs","names":[],"sources":["../../../src/middlewares/web/web-api.ts"],"sourcesContent":["import type { RequestHandler } from 'express';\nimport express, { Router } from 'express';\n\nimport { validateName, validatePackage } from '../validation';\nimport { setSecurityWebHeaders } from './security';\n\nexport function webAPIMiddleware(\n tokenMiddleware: RequestHandler,\n webEndpointsApi: RequestHandler\n): Router {\n const route = Router();\n // validate all of these params as a package name\n // this might be too harsh, so ask if it causes trouble=\n route.param('package', validatePackage);\n route.param('filename', validateName);\n route.param('version', validateName);\n route.use(express.urlencoded({ extended: false }));\n route.use(setSecurityWebHeaders);\n\n if (typeof tokenMiddleware === 'function') {\n route.use(tokenMiddleware);\n }\n\n if (typeof webEndpointsApi === 'function') {\n route.use(webEndpointsApi);\n }\n\n return route;\n}\n"],"mappings":";;;;AAMA,SAAgB,iBACd,iBACA,iBACQ;CACR,MAAM,QAAQ,QAAQ;AAGtB,OAAM,MAAM,WAAW,gBAAgB;AACvC,OAAM,MAAM,YAAY,aAAa;AACrC,OAAM,MAAM,WAAW,aAAa;AACpC,OAAM,IAAI,QAAQ,WAAW,EAAE,UAAU,OAAO,CAAC,CAAC;AAClD,OAAM,IAAI,sBAAsB;AAEhC,KAAI,OAAO,oBAAoB,WAC7B,OAAM,IAAI,gBAAgB;AAG5B,KAAI,OAAO,oBAAoB,WAC7B,OAAM,IAAI,gBAAgB;AAG5B,QAAO"}
@@ -1,25 +1,18 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _express = _interopRequireDefault(require("express"));
8
- var _renderWeb = require("./render-web");
9
- var _webApi = require("./web-api");
10
- var _webUrls = require("./web-urls");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- var _default = (config, middlewares, pluginOptions) => {
13
- const router = _express.default.Router();
14
- const {
15
- tokenMiddleware,
16
- webEndpointsApi
17
- } = middlewares;
18
- // render web
19
- router.use(_webUrls.WebUrlsNamespace.root, (0, _renderWeb.renderWebMiddleware)(config, tokenMiddleware, pluginOptions));
20
- // web endpoints: search, packages, readme, sidebar, etc
21
- router.use(_webUrls.WebUrlsNamespace.endpoints, (0, _webApi.webAPIMiddleware)(tokenMiddleware, webEndpointsApi));
22
- return router;
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
2
+ const require_web_urls = require("./web-urls.js");
3
+ const require_render_web = require("./render-web.js");
4
+ const require_web_api = require("./web-api.js");
5
+ let express = require("express");
6
+ express = require_runtime.__toESM(express);
7
+ //#region src/middlewares/web/web-middleware.ts
8
+ var web_middleware_default = (config, middlewares, pluginOptions) => {
9
+ const router = express.default.Router();
10
+ const { tokenMiddleware, webEndpointsApi } = middlewares;
11
+ router.use(require_web_urls.WebUrlsNamespace.root, require_render_web.renderWebMiddleware(config, tokenMiddleware, pluginOptions));
12
+ router.use(require_web_urls.WebUrlsNamespace.endpoints, require_web_api.webAPIMiddleware(tokenMiddleware, webEndpointsApi));
13
+ return router;
23
14
  };
24
- exports.default = _default;
15
+ //#endregion
16
+ exports.default = web_middleware_default;
17
+
25
18
  //# sourceMappingURL=web-middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-middleware.js","names":["_express","_interopRequireDefault","require","_renderWeb","_webApi","_webUrls","e","__esModule","default","_default","config","middlewares","pluginOptions","router","express","Router","tokenMiddleware","webEndpointsApi","use","WebUrlsNamespace","root","renderWebMiddleware","endpoints","webAPIMiddleware","exports"],"sources":["../../../src/middlewares/web/web-middleware.ts"],"sourcesContent":["import express from 'express';\n\nimport { renderWebMiddleware } from './render-web';\nimport { webAPIMiddleware } from './web-api';\nimport { WebUrlsNamespace } from './web-urls';\n\nexport default (config, middlewares, pluginOptions): any => {\n const router = express.Router();\n const { tokenMiddleware, webEndpointsApi } = middlewares;\n // render web\n router.use(WebUrlsNamespace.root, renderWebMiddleware(config, tokenMiddleware, pluginOptions));\n // web endpoints: search, packages, readme, sidebar, etc\n router.use(WebUrlsNamespace.endpoints, webAPIMiddleware(tokenMiddleware, webEndpointsApi));\n return router;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA8C,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,IAAAG,QAAA,GAE/BA,CAACC,MAAM,EAAEC,WAAW,EAAEC,aAAa,KAAU;EAC1D,MAAMC,MAAM,GAAGC,gBAAO,CAACC,MAAM,CAAC,CAAC;EAC/B,MAAM;IAAEC,eAAe;IAAEC;EAAgB,CAAC,GAAGN,WAAW;EACxD;EACAE,MAAM,CAACK,GAAG,CAACC,yBAAgB,CAACC,IAAI,EAAE,IAAAC,8BAAmB,EAACX,MAAM,EAAEM,eAAe,EAAEJ,aAAa,CAAC,CAAC;EAC9F;EACAC,MAAM,CAACK,GAAG,CAACC,yBAAgB,CAACG,SAAS,EAAE,IAAAC,wBAAgB,EAACP,eAAe,EAAEC,eAAe,CAAC,CAAC;EAC1F,OAAOJ,MAAM;AACf,CAAC;AAAAW,OAAA,CAAAhB,OAAA,GAAAC,QAAA","ignoreList":[]}
1
+ {"version":3,"file":"web-middleware.js","names":[],"sources":["../../../src/middlewares/web/web-middleware.ts"],"sourcesContent":["import express from 'express';\n\nimport { renderWebMiddleware } from './render-web';\nimport { webAPIMiddleware } from './web-api';\nimport { WebUrlsNamespace } from './web-urls';\n\nexport default (config, middlewares, pluginOptions): any => {\n const router = express.Router();\n const { tokenMiddleware, webEndpointsApi } = middlewares;\n // render web\n router.use(WebUrlsNamespace.root, renderWebMiddleware(config, tokenMiddleware, pluginOptions));\n // web endpoints: search, packages, readme, sidebar, etc\n router.use(WebUrlsNamespace.endpoints, webAPIMiddleware(tokenMiddleware, webEndpointsApi));\n return router;\n};\n"],"mappings":";;;;;;;AAMA,IAAA,0BAAgB,QAAQ,aAAa,kBAAuB;CAC1D,MAAM,SAAS,QAAA,QAAQ,QAAQ;CAC/B,MAAM,EAAE,iBAAiB,oBAAoB;AAE7C,QAAO,IAAI,iBAAA,iBAAiB,MAAM,mBAAA,oBAAoB,QAAQ,iBAAiB,cAAc,CAAC;AAE9F,QAAO,IAAI,iBAAA,iBAAiB,WAAW,gBAAA,iBAAiB,iBAAiB,gBAAgB,CAAC;AAC1F,QAAO"}
@@ -0,0 +1,16 @@
1
+ import { WebUrlsNamespace } from "./web-urls.mjs";
2
+ import { renderWebMiddleware } from "./render-web.mjs";
3
+ import { webAPIMiddleware } from "./web-api.mjs";
4
+ import express from "express";
5
+ //#region src/middlewares/web/web-middleware.ts
6
+ var web_middleware_default = (config, middlewares, pluginOptions) => {
7
+ const router = express.Router();
8
+ const { tokenMiddleware, webEndpointsApi } = middlewares;
9
+ router.use(WebUrlsNamespace.root, renderWebMiddleware(config, tokenMiddleware, pluginOptions));
10
+ router.use(WebUrlsNamespace.endpoints, webAPIMiddleware(tokenMiddleware, webEndpointsApi));
11
+ return router;
12
+ };
13
+ //#endregion
14
+ export { web_middleware_default as default };
15
+
16
+ //# sourceMappingURL=web-middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-middleware.mjs","names":[],"sources":["../../../src/middlewares/web/web-middleware.ts"],"sourcesContent":["import express from 'express';\n\nimport { renderWebMiddleware } from './render-web';\nimport { webAPIMiddleware } from './web-api';\nimport { WebUrlsNamespace } from './web-urls';\n\nexport default (config, middlewares, pluginOptions): any => {\n const router = express.Router();\n const { tokenMiddleware, webEndpointsApi } = middlewares;\n // render web\n router.use(WebUrlsNamespace.root, renderWebMiddleware(config, tokenMiddleware, pluginOptions));\n // web endpoints: search, packages, readme, sidebar, etc\n router.use(WebUrlsNamespace.endpoints, webAPIMiddleware(tokenMiddleware, webEndpointsApi));\n return router;\n};\n"],"mappings":";;;;;AAMA,IAAA,0BAAgB,QAAQ,aAAa,kBAAuB;CAC1D,MAAM,SAAS,QAAQ,QAAQ;CAC/B,MAAM,EAAE,iBAAiB,oBAAoB;AAE7C,QAAO,IAAI,iBAAiB,MAAM,oBAAoB,QAAQ,iBAAiB,cAAc,CAAC;AAE9F,QAAO,IAAI,iBAAiB,WAAW,iBAAiB,iBAAiB,gBAAgB,CAAC;AAC1F,QAAO"}