/opt/canhelp/node_modules/next/dist/server/lib
NameSizeModeActions
cache-handlers/-0755rm
experimental/-0755rm
incremental-cache/-0755rm
module-loader/-0755rm
router-utils/-0755rm
server-ipc/-0755rm
trace/-0755rm
app-dir-module.d.ts6230644editdlrm
app-dir-module.js16750644editdlrm
app-dir-module.js.map26320644editdlrm
app-info-log.d.ts6170644editdlrm
app-info-log.js48460644editdlrm
app-info-log.js.map58670644editdlrm
async-callback-set.d.ts1400644editdlrm
async-callback-set.js7330644editdlrm
async-callback-set.js.map11130644editdlrm
cache-control.d.ts5720644editdlrm
cache-control.js8150644editdlrm
cache-control.js.map16230644editdlrm
chrome-devtools-workspace.d.ts4180644editdlrm
chrome-devtools-workspace.js43680644editdlrm
chrome-devtools-workspace.js.map41900644editdlrm
clone-response.d.ts5310644editdlrm
clone-response.js26410644editdlrm
clone-response.js.map44410644editdlrm
cpu-profile.d.ts1120644editdlrm
cpu-profile.js10340644editdlrm
cpu-profile.js.map20620644editdlrm
decode-query-path-parameter.d.ts1890644editdlrm
decode-query-path-parameter.js6880644editdlrm
decode-query-path-parameter.js.map7550644editdlrm
dedupe-fetch.d.ts1470644editdlrm
dedupe-fetch.js67850644editdlrm
dedupe-fetch.js.map73960644editdlrm
dev-bundler-service.d.ts11830644editdlrm
dev-bundler-service.js32380644editdlrm
dev-bundler-service.js.map57920644editdlrm
disk-lru-cache.external.d.ts8080644editdlrm
disk-lru-cache.external.js19150644editdlrm
disk-lru-cache.external.js.map31460644editdlrm
etag.d.ts4530644editdlrm
etag.js15850644editdlrm
etag.js.map21980644editdlrm
find-page-file.d.ts13950644editdlrm
find-page-file.js54210644editdlrm
find-page-file.js.map94400644editdlrm
fix-mojibake.d.ts600644editdlrm
fix-mojibake.js7270644editdlrm
fix-mojibake.js.map10410644editdlrm
format-hostname.d.ts2150644editdlrm
format-hostname.js4080644editdlrm
format-hostname.js.map6100644editdlrm
i18n-provider.d.ts23910644editdlrm
i18n-provider.js55930644editdlrm
i18n-provider.js.map90460644editdlrm
implicit-tags.d.ts9860644editdlrm
implicit-tags.js26850644editdlrm
implicit-tags.js.map52120644editdlrm
is-ipv6.d.ts520644editdlrm
is-ipv6.js22840644editdlrm
is-ipv6.js.map34070644editdlrm
lazy-result.d.ts5650644editdlrm
lazy-result.js12460644editdlrm
lazy-result.js.map19070644editdlrm
lru-cache.d.ts36610644editdlrm
lru-cache.js66430644editdlrm
lru-cache.js.map113580644editdlrm
match-next-data-pathname.d.ts1130644editdlrm
match-next-data-pathname.js5510644editdlrm
match-next-data-pathname.js.map6360644editdlrm
mock-request.d.ts41250644editdlrm
mock-request.js144950644editdlrm
mock-request.js.map212690644editdlrm
node-fs-methods.d.ts930644editdlrm
node-fs-methods.js7720644editdlrm
node-fs-methods.js.map9760644editdlrm
parse-stack.d.ts2930644editdlrm
parse-stack.js17990644editdlrm
parse-stack.js.map29910644editdlrm
patch-fetch.d.ts9580644editdlrm
patch-fetch.js459600644editdlrm
patch-fetch.js.map647100644editdlrm
patch-set-header.d.ts4640644editdlrm
patch-set-header.js14520644editdlrm
patch-set-header.js.map24630644editdlrm
render-server.d.ts38030644editdlrm
render-server.js39380644editdlrm
render-server.js.map63770644editdlrm
router-server.d.ts8160644editdlrm
router-server.js330710644editdlrm
router-server.js.map464730644editdlrm
server-action-request-meta.d.ts5370644editdlrm
server-action-request-meta.js21160644editdlrm
server-action-request-meta.js.map30700644editdlrm
source-maps.d.ts19760644editdlrm
source-maps.js90100644editdlrm
source-maps.js.map149080644editdlrm
start-server.d.ts10600644editdlrm
start-server.js195790644editdlrm
start-server.js.map276000644editdlrm
streaming-metadata.d.ts2740644editdlrm
streaming-metadata.js11370644editdlrm
streaming-metadata.js.map15880644editdlrm
to-route.d.ts5060644editdlrm
to-route.js7780644editdlrm
to-route.js.map8630644editdlrm
types.d.ts2910644editdlrm
types.js1150644editdlrm
types.js.map670644editdlrm
utils.d.ts29660644editdlrm
utils.js83120644editdlrm
utils.js.map136580644editdlrm
worker-utils.d.ts570644editdlrm
worker-utils.js11280644editdlrm
worker-utils.js.map11250644editdlrm
Edit: /opt/canhelp/node_modules/next/dist/server/lib/i18n-provider.js.map (9046B)
{"version":3,"sources":["../../../src/server/lib/i18n-provider.ts"],"sourcesContent":["import type { DomainLocale, I18NConfig } from '../config-shared'\nimport { getRequestMeta, type NextIncomingMessage } from '../request-meta'\n\n/**\n * The result of matching a locale aware route.\n */\nexport interface LocaleAnalysisResult {\n /**\n * The pathname without the locale prefix (if any).\n */\n pathname: string\n\n /**\n * The detected locale. If no locale was detected, this will be `undefined`.\n */\n detectedLocale?: string\n\n /**\n * True if the locale was inferred from the default locale.\n */\n inferredFromDefault: boolean\n}\n\ntype LocaleAnalysisOptions = {\n /**\n * When provided, it will be used as the default locale if the locale\n * cannot be inferred from the pathname.\n */\n defaultLocale?: string\n}\n\n/**\n * The I18NProvider is used to match locale aware routes, detect the locale from\n * the pathname and hostname and normalize the pathname by removing the locale\n * prefix.\n */\nexport class I18NProvider {\n private readonly lowerCaseLocales: ReadonlyArray\n private readonly lowerCaseDomains?: ReadonlyArray<\n DomainLocale & {\n // The configuration references a domain with an optional port, but the\n // hostname is always the domain without the port and is used for\n // matching.\n hostname: string\n }\n >\n\n constructor(public readonly config: Readonly) {\n if (!config.locales.length) {\n throw new Error('Invariant: No locales provided')\n }\n\n this.lowerCaseLocales = config.locales.map((locale) => locale.toLowerCase())\n this.lowerCaseDomains = config.domains?.map((domainLocale) => {\n const domain = domainLocale.domain.toLowerCase()\n return {\n defaultLocale: domainLocale.defaultLocale.toLowerCase(),\n hostname: domain.split(':', 1)[0],\n domain,\n locales: domainLocale.locales?.map((locale) => locale.toLowerCase()),\n http: domainLocale.http,\n }\n })\n }\n\n /**\n * Detects the domain locale from the hostname and the detected locale if\n * provided.\n *\n * @param hostname The hostname to detect the domain locale from, this must be lowercased.\n * @param detectedLocale The detected locale to use if the hostname does not match.\n * @returns The domain locale if found, `undefined` otherwise.\n */\n public detectDomainLocale(\n hostname?: string,\n detectedLocale?: string\n ): DomainLocale | undefined {\n if (!hostname || !this.lowerCaseDomains || !this.config.domains) return\n\n if (detectedLocale) detectedLocale = detectedLocale.toLowerCase()\n\n for (let i = 0; i < this.lowerCaseDomains.length; i++) {\n const domainLocale = this.lowerCaseDomains[i]\n if (\n // We assume that the hostname is already lowercased.\n domainLocale.hostname === hostname ||\n // Configuration validation ensures that the locale is not repeated in\n // other domains locales.\n domainLocale.locales?.some((locale) => locale === detectedLocale)\n ) {\n return this.config.domains[i]\n }\n }\n\n return\n }\n\n /**\n * Pulls the pre-computed locale and inference results from the query\n * object.\n *\n * @param req the request object\n * @param pathname the pathname that could contain a locale prefix\n * @returns the locale analysis result\n */\n public fromRequest(\n req: NextIncomingMessage,\n pathname: string\n ): LocaleAnalysisResult {\n const detectedLocale = getRequestMeta(req, 'locale')\n\n // If a locale was detected on the query, analyze the pathname to ensure\n // that the locale matches.\n if (detectedLocale) {\n const analysis = this.analyze(pathname)\n\n // If the analysis contained a locale we should validate it against the\n // query and strip it from the pathname.\n if (analysis.detectedLocale) {\n if (analysis.detectedLocale !== detectedLocale) {\n console.warn(\n `The detected locale does not match the locale in the query. Expected to find '${detectedLocale}' in '${pathname}' but found '${analysis.detectedLocale}'}`\n )\n }\n\n pathname = analysis.pathname\n }\n }\n\n return {\n pathname,\n detectedLocale,\n inferredFromDefault:\n getRequestMeta(req, 'localeInferredFromDefault') ?? false,\n }\n }\n\n /**\n * Analyzes the pathname for a locale and returns the pathname without it.\n *\n * @param pathname The pathname that could contain a locale prefix.\n * @param options The options to use when matching the locale.\n * @returns The matched locale and the pathname without the locale prefix\n * (if any).\n */\n public analyze(\n pathname: string,\n options: LocaleAnalysisOptions = {}\n ): LocaleAnalysisResult {\n let detectedLocale: string | undefined = options.defaultLocale\n\n // By default, we assume that the default locale was inferred if there was\n // no detected locale.\n let inferredFromDefault = typeof detectedLocale === 'string'\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n if (!segments[1])\n return {\n detectedLocale,\n pathname,\n inferredFromDefault,\n }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = this.lowerCaseLocales.indexOf(segment)\n if (index < 0)\n return {\n detectedLocale,\n pathname,\n inferredFromDefault,\n }\n\n // Return the case-sensitive locale.\n detectedLocale = this.config.locales[index]\n inferredFromDefault = false\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return {\n detectedLocale,\n pathname,\n inferredFromDefault,\n }\n }\n}\n"],"names":["I18NProvider","constructor","config","locales","length","Error","lowerCaseLocales","map","locale","toLowerCase","lowerCaseDomains","domains","domainLocale","domain","defaultLocale","hostname","split","http","detectDomainLocale","detectedLocale","i","some","fromRequest","req","pathname","getRequestMeta","analysis","analyze","console","warn","inferredFromDefault","options","segments","segment","index","indexOf","slice"],"mappings":";;;;+BAoCaA;;;eAAAA;;;6BAnC4C;AAmClD,MAAMA;IAWXC,YAAY,AAAgBC,MAA4B,CAAE;YAMhCA;aANEA,SAAAA;QAC1B,IAAI,CAACA,OAAOC,OAAO,CAACC,MAAM,EAAE;YAC1B,MAAM,qBAA2C,CAA3C,IAAIC,MAAM,mCAAV,qBAAA;uBAAA;4BAAA;8BAAA;YAA0C;QAClD;QAEA,IAAI,CAACC,gBAAgB,GAAGJ,OAAOC,OAAO,CAACI,GAAG,CAAC,CAACC,SAAWA,OAAOC,WAAW;QACzE,IAAI,CAACC,gBAAgB,IAAGR,kBAAAA,OAAOS,OAAO,qBAAdT,gBAAgBK,GAAG,CAAC,CAACK;gBAMhCA;YALX,MAAMC,SAASD,aAAaC,MAAM,CAACJ,WAAW;YAC9C,OAAO;gBACLK,eAAeF,aAAaE,aAAa,CAACL,WAAW;gBACrDM,UAAUF,OAAOG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE;gBACjCH;gBACAV,OAAO,GAAES,wBAAAA,aAAaT,OAAO,qBAApBS,sBAAsBL,GAAG,CAAC,CAACC,SAAWA,OAAOC,WAAW;gBACjEQ,MAAML,aAAaK,IAAI;YACzB;QACF;IACF;IAEA;;;;;;;GAOC,GACD,AAAOC,mBACLH,QAAiB,EACjBI,cAAuB,EACG;QAC1B,IAAI,CAACJ,YAAY,CAAC,IAAI,CAACL,gBAAgB,IAAI,CAAC,IAAI,CAACR,MAAM,CAACS,OAAO,EAAE;QAEjE,IAAIQ,gBAAgBA,iBAAiBA,eAAeV,WAAW;QAE/D,IAAK,IAAIW,IAAI,GAAGA,IAAI,IAAI,CAACV,gBAAgB,CAACN,MAAM,EAAEgB,IAAK;gBAKnD,sEAAsE;YACtE,yBAAyB;YACzBR;YANF,MAAMA,eAAe,IAAI,CAACF,gBAAgB,CAACU,EAAE;YAC7C,IACE,qDAAqD;YACrDR,aAAaG,QAAQ,KAAKA,cAG1BH,wBAAAA,aAAaT,OAAO,qBAApBS,sBAAsBS,IAAI,CAAC,CAACb,SAAWA,WAAWW,kBAClD;gBACA,OAAO,IAAI,CAACjB,MAAM,CAACS,OAAO,CAACS,EAAE;YAC/B;QACF;QAEA;IACF;IAEA;;;;;;;GAOC,GACD,AAAOE,YACLC,GAAwB,EACxBC,QAAgB,EACM;QACtB,MAAML,iBAAiBM,IAAAA,2BAAc,EAACF,KAAK;QAE3C,wEAAwE;QACxE,2BAA2B;QAC3B,IAAIJ,gBAAgB;YAClB,MAAMO,WAAW,IAAI,CAACC,OAAO,CAACH;YAE9B,uEAAuE;YACvE,wCAAwC;YACxC,IAAIE,SAASP,cAAc,EAAE;gBAC3B,IAAIO,SAASP,cAAc,KAAKA,gBAAgB;oBAC9CS,QAAQC,IAAI,CACV,CAAC,8EAA8E,EAAEV,eAAe,MAAM,EAAEK,SAAS,aAAa,EAAEE,SAASP,cAAc,CAAC,EAAE,CAAC;gBAE/J;gBAEAK,WAAWE,SAASF,QAAQ;YAC9B;QACF;QAEA,OAAO;YACLA;YACAL;YACAW,qBACEL,IAAAA,2BAAc,EAACF,KAAK,gCAAgC;QACxD;IACF;IAEA;;;;;;;GAOC,GACD,AAAOI,QACLH,QAAgB,EAChBO,UAAiC,CAAC,CAAC,EACb;QACtB,IAAIZ,iBAAqCY,QAAQjB,aAAa;QAE9D,0EAA0E;QAC1E,sBAAsB;QACtB,IAAIgB,sBAAsB,OAAOX,mBAAmB;QAEpD,oEAAoE;QACpE,yEAAyE;QACzE,MAAMa,WAAWR,SAASR,KAAK,CAAC,KAAK;QACrC,IAAI,CAACgB,QAAQ,CAAC,EAAE,EACd,OAAO;YACLb;YACAK;YACAM;QACF;QAEF,0DAA0D;QAC1D,MAAMG,UAAUD,QAAQ,CAAC,EAAE,CAACvB,WAAW;QAEvC,yEAAyE;QACzE,mCAAmC;QACnC,MAAMyB,QAAQ,IAAI,CAAC5B,gBAAgB,CAAC6B,OAAO,CAACF;QAC5C,IAAIC,QAAQ,GACV,OAAO;YACLf;YACAK;YACAM;QACF;QAEF,oCAAoC;QACpCX,iBAAiB,IAAI,CAACjB,MAAM,CAACC,OAAO,CAAC+B,MAAM;QAC3CJ,sBAAsB;QAEtB,gDAAgD;QAChDN,WAAWA,SAASY,KAAK,CAACjB,eAAef,MAAM,GAAG,MAAM;QAExD,OAAO;YACLe;YACAK;YACAM;QACF;IACF;AACF","ignoreList":[0]}