@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.
- package/build/_virtual/_rolldown/runtime.js +23 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +62 -221
- package/build/index.mjs +23 -0
- package/build/middlewares/allow.js +42 -50
- package/build/middlewares/allow.js.map +1 -1
- package/build/middlewares/allow.mjs +44 -0
- package/build/middlewares/allow.mjs.map +1 -0
- package/build/middlewares/antiLoop.d.ts +2 -2
- package/build/middlewares/antiLoop.js +22 -40
- package/build/middlewares/antiLoop.js.map +1 -1
- package/build/middlewares/antiLoop.mjs +25 -0
- package/build/middlewares/antiLoop.mjs.map +1 -0
- package/build/middlewares/api_urls.js +66 -59
- package/build/middlewares/api_urls.js.map +1 -1
- package/build/middlewares/api_urls.mjs +59 -0
- package/build/middlewares/api_urls.mjs.map +1 -0
- package/build/middlewares/body-parser.d.ts +8 -0
- package/build/middlewares/body-parser.js +31 -0
- package/build/middlewares/body-parser.js.map +1 -0
- package/build/middlewares/body-parser.mjs +28 -0
- package/build/middlewares/body-parser.mjs.map +1 -0
- package/build/middlewares/dotfiles.d.ts +1 -1
- package/build/middlewares/dotfiles.js +25 -28
- package/build/middlewares/dotfiles.js.map +1 -1
- package/build/middlewares/dotfiles.mjs +27 -0
- package/build/middlewares/dotfiles.mjs.map +1 -0
- package/build/middlewares/encode-pkg.d.ts +1 -1
- package/build/middlewares/encode-pkg.js +20 -36
- package/build/middlewares/encode-pkg.js.map +1 -1
- package/build/middlewares/encode-pkg.mjs +22 -0
- package/build/middlewares/encode-pkg.mjs.map +1 -0
- package/build/middlewares/error.d.ts +3 -3
- package/build/middlewares/error.js +53 -71
- package/build/middlewares/error.js.map +1 -1
- package/build/middlewares/error.mjs +53 -0
- package/build/middlewares/error.mjs.map +1 -0
- package/build/middlewares/final.d.ts +2 -2
- package/build/middlewares/final.js +46 -57
- package/build/middlewares/final.js.map +1 -1
- package/build/middlewares/final.mjs +46 -0
- package/build/middlewares/final.mjs.map +1 -0
- package/build/middlewares/json.d.ts +1 -1
- package/build/middlewares/json.js +8 -11
- package/build/middlewares/json.js.map +1 -1
- package/build/middlewares/json.mjs +10 -0
- package/build/middlewares/json.mjs.map +1 -0
- package/build/middlewares/log.d.ts +1 -1
- package/build/middlewares/log.js +97 -125
- package/build/middlewares/log.js.map +1 -1
- package/build/middlewares/log.mjs +96 -0
- package/build/middlewares/log.mjs.map +1 -0
- package/build/middlewares/make-url-relative.d.ts +1 -1
- package/build/middlewares/make-url-relative.js +26 -41
- package/build/middlewares/make-url-relative.js.map +1 -1
- package/build/middlewares/make-url-relative.mjs +28 -0
- package/build/middlewares/make-url-relative.mjs.map +1 -0
- package/build/middlewares/match.js +8 -13
- package/build/middlewares/match.js.map +1 -1
- package/build/middlewares/match.mjs +11 -0
- package/build/middlewares/match.mjs.map +1 -0
- package/build/middlewares/media.js +15 -19
- package/build/middlewares/media.js.map +1 -1
- package/build/middlewares/media.mjs +17 -0
- package/build/middlewares/media.mjs.map +1 -0
- package/build/middlewares/rate-limit.d.ts +2 -2
- package/build/middlewares/rate-limit.js +8 -10
- package/build/middlewares/rate-limit.js.map +1 -1
- package/build/middlewares/rate-limit.mjs +9 -0
- package/build/middlewares/rate-limit.mjs.map +1 -0
- package/build/middlewares/request-options.d.ts +2 -2
- package/build/middlewares/request-options.js +18 -27
- package/build/middlewares/request-options.js.map +1 -1
- package/build/middlewares/request-options.mjs +19 -0
- package/build/middlewares/request-options.mjs.map +1 -0
- package/build/middlewares/user-agent.d.ts +1 -1
- package/build/middlewares/user-agent.js +11 -12
- package/build/middlewares/user-agent.js.map +1 -1
- package/build/middlewares/user-agent.mjs +13 -0
- package/build/middlewares/user-agent.mjs.map +1 -0
- package/build/middlewares/validation.d.ts +1 -1
- package/build/middlewares/validation.js +11 -18
- package/build/middlewares/validation.js.map +1 -1
- package/build/middlewares/validation.mjs +14 -0
- package/build/middlewares/validation.mjs.map +1 -0
- package/build/middlewares/web/index.js +4 -35
- package/build/middlewares/web/index.mjs +4 -0
- package/build/middlewares/web/render-web.d.ts +1 -1
- package/build/middlewares/web/render-web.js +80 -109
- package/build/middlewares/web/render-web.js.map +1 -1
- package/build/middlewares/web/render-web.mjs +79 -0
- package/build/middlewares/web/render-web.mjs.map +1 -0
- package/build/middlewares/web/security.js +29 -41
- package/build/middlewares/web/security.js.map +1 -1
- package/build/middlewares/web/security.mjs +30 -0
- package/build/middlewares/web/security.mjs.map +1 -0
- package/build/middlewares/web/utils/manifest.js +17 -18
- package/build/middlewares/web/utils/manifest.js.map +1 -1
- package/build/middlewares/web/utils/manifest.mjs +21 -0
- package/build/middlewares/web/utils/manifest.mjs.map +1 -0
- package/build/middlewares/web/utils/renderHTML.d.ts +5 -5
- package/build/middlewares/web/utils/renderHTML.js +109 -136
- package/build/middlewares/web/utils/renderHTML.js.map +1 -1
- package/build/middlewares/web/utils/renderHTML.mjs +113 -0
- package/build/middlewares/web/utils/renderHTML.mjs.map +1 -0
- package/build/middlewares/web/utils/template.d.ts +2 -2
- package/build/middlewares/web/utils/template.js +19 -20
- package/build/middlewares/web/utils/template.js.map +1 -1
- package/build/middlewares/web/utils/template.mjs +35 -0
- package/build/middlewares/web/utils/template.mjs.map +1 -0
- package/build/middlewares/web/utils/web-utils.js +17 -18
- package/build/middlewares/web/utils/web-utils.js.map +1 -1
- package/build/middlewares/web/utils/web-utils.mjs +18 -0
- package/build/middlewares/web/utils/web-utils.mjs.map +1 -0
- package/build/middlewares/web/web-api.d.ts +1 -2
- package/build/middlewares/web/web-api.js +18 -27
- package/build/middlewares/web/web-api.js.map +1 -1
- package/build/middlewares/web/web-api.mjs +19 -0
- package/build/middlewares/web/web-api.mjs.map +1 -0
- package/build/middlewares/web/web-middleware.js +16 -23
- package/build/middlewares/web/web-middleware.js.map +1 -1
- package/build/middlewares/web/web-middleware.mjs +16 -0
- package/build/middlewares/web/web-middleware.mjs.map +1 -0
- package/build/middlewares/web/web-urls.js +28 -29
- package/build/middlewares/web/web-urls.js.map +1 -1
- package/build/middlewares/web/web-urls.mjs +32 -0
- package/build/middlewares/web/web-urls.mjs.map +1 -0
- package/build/types.d.ts +2 -2
- package/package.json +24 -13
- package/build/index.js.map +0 -1
- package/build/middlewares/web/index.js.map +0 -1
- package/build/types.js +0 -6
- 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
|
|
2
|
-
import
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 ??
|
|
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
|
-
|
|
26
|
-
${template.manifest.css?.length ?
|
|
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
|
-
${
|
|
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":[
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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":[
|
|
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,30 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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":[
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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":[
|
|
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"}
|