/opt/canhelp/node_modules/next/dist/lib
NameSizeModeActions
eslint/-0755rm
framework/-0755rm
fs/-0755rm
helpers/-0755rm
memory/-0755rm
metadata/-0755rm
typescript/-0755rm
batcher.d.ts21320644editdlrm
batcher.js21660644editdlrm
batcher.js.map42150644editdlrm
build-custom-route.d.ts5050644editdlrm
build-custom-route.js11830644editdlrm
build-custom-route.js.map24080644editdlrm
client-and-server-references.d.ts4550644editdlrm
client-and-server-references.js12930644editdlrm
client-and-server-references.js.map17270644editdlrm
coalesced-function.d.ts3270644editdlrm
coalesced-function.js10880644editdlrm
coalesced-function.js.map20190644editdlrm
compile-error.d.ts520644editdlrm
compile-error.js2920644editdlrm
compile-error.js.map2320644editdlrm
constants.d.ts78380644editdlrm
constants.js147100644editdlrm
constants.js.map140730644editdlrm
create-client-router-filter.d.ts3410644editdlrm
create-client-router-filter.js24870644editdlrm
create-client-router-filter.js.map39580644editdlrm
default-transpiled-packages.json100644editdlrm
detached-promise.d.ts3870644editdlrm
detached-promise.js8910644editdlrm
detached-promise.js.map12980644editdlrm
detect-typo.d.ts1050644editdlrm
detect-typo.js15210644editdlrm
detect-typo.js.map27930644editdlrm
download-swc.d.ts2570644editdlrm
download-swc.js72130644editdlrm
download-swc.js.map82840644editdlrm
error-telemetry-utils.d.ts6500644editdlrm
error-telemetry-utils.js14450644editdlrm
error-telemetry-utils.js.map24030644editdlrm
fallback.d.ts15850644editdlrm
fallback.js33190644editdlrm
fallback.js.map38960644editdlrm
fatal-error.d.ts500644editdlrm
fatal-error.js2840644editdlrm
fatal-error.js.map2260644editdlrm
file-exists.d.ts1690644editdlrm
file-exists.js14230644editdlrm
file-exists.js.map14760644editdlrm
find-config.d.ts3140644editdlrm
find-config.js34640644editdlrm
find-config.js.map50280644editdlrm
find-pages-dir.d.ts2060644editdlrm
find-pages-dir.js15600644editdlrm
find-pages-dir.js.map15960644editdlrm
find-root.d.ts1330644editdlrm
find-root.js45970644editdlrm
find-root.js.map43520644editdlrm
format-cli-help-output.d.ts1740644editdlrm
format-cli-help-output.js28490644editdlrm
format-cli-help-output.js.map49190644editdlrm
format-dynamic-import-path.d.ts4190644editdlrm
format-dynamic-import-path.js7840644editdlrm
format-dynamic-import-path.js.map11750644editdlrm
format-server-error.d.ts3680644editdlrm
format-server-error.js26880644editdlrm
format-server-error.js.map37840644editdlrm
generate-interception-routes-rewrites.d.ts3190644editdlrm
generate-interception-routes-rewrites.js32870644editdlrm
generate-interception-routes-rewrites.js.map43640644editdlrm
get-files-in-dir.d.ts750644editdlrm
get-files-in-dir.js9270644editdlrm
get-files-in-dir.js.map11860644editdlrm
get-network-host.d.ts800644editdlrm
get-network-host.js14230644editdlrm
get-network-host.js.map19290644editdlrm
get-package-version.d.ts3640644editdlrm
get-package-version.js36960644editdlrm
get-package-version.js.map32300644editdlrm
get-project-dir.d.ts850644editdlrm
get-project-dir.js19040644editdlrm
get-project-dir.js.map23780644editdlrm
has-necessary-dependencies.d.ts12120644editdlrm
has-necessary-dependencies.js16380644editdlrm
has-necessary-dependencies.js.map37150644editdlrm
import-next-warning.d.ts110644editdlrm
import-next-warning.js18270644editdlrm
import-next-warning.js.map5340644editdlrm
inline-static-env.d.ts2030644editdlrm
inline-static-env.js46190644editdlrm
inline-static-env.js.map70980644editdlrm
install-dependencies.d.ts1700644editdlrm
install-dependencies.js13560644editdlrm
install-dependencies.js.map19380644editdlrm
interop-default.d.ts550644editdlrm
interop-default.js3250644editdlrm
interop-default.js.map3100644editdlrm
is-api-route.d.ts610644editdlrm
is-api-route.js3730644editdlrm
is-api-route.js.map3800644editdlrm
is-app-page-route.d.ts640644editdlrm
is-app-page-route.js3340644editdlrm
is-app-page-route.js.map3330644editdlrm
is-app-route-route.d.ts650644editdlrm
is-app-route-route.js3390644editdlrm
is-app-route-route.js.map3390644editdlrm
is-edge-runtime.d.ts1260644editdlrm
is-edge-runtime.js4450644editdlrm
is-edge-runtime.js.map5800644editdlrm
is-error.d.ts4400644editdlrm
is-error.js23890644editdlrm
is-error.js.map28630644editdlrm
is-internal-component.d.ts1440644editdlrm
is-internal-component.js8810644editdlrm
is-internal-component.js.map7470644editdlrm
is-serializable-props.d.ts2280644editdlrm
is-serializable-props.js46940644editdlrm
is-serializable-props.js.map65220644editdlrm
known-edge-safe-packages.json180644editdlrm
load-custom-routes.d.ts15100644editdlrm
load-custom-routes.js228710644editdlrm
load-custom-routes.js.map386580644editdlrm
mime-type.d.ts2300644editdlrm
mime-type.js4440644editdlrm
mime-type.js.map4580644editdlrm
mkcert.d.ts2290644editdlrm
mkcert.js82830644editdlrm
mkcert.js.map97600644editdlrm
multi-file-writer.d.ts14650644editdlrm
multi-file-writer.js25730644editdlrm
multi-file-writer.js.map42000644editdlrm
needs-experimental-react.d.ts1360644editdlrm
needs-experimental-react.js4840644editdlrm
needs-experimental-react.js.map6970644editdlrm
non-nullable.d.ts750644editdlrm
non-nullable.js3340644editdlrm
non-nullable.js.map3520644editdlrm
normalize-path.d.ts610644editdlrm
normalize-path.js5490644editdlrm
normalize-path.js.map4370644editdlrm
oxford-comma-list.d.ts690644editdlrm
oxford-comma-list.js4510644editdlrm
oxford-comma-list.js.map7180644editdlrm
page-types.d.ts970644editdlrm
page-types.js4310644editdlrm
page-types.js.map2730644editdlrm
patch-incorrect-lockfile.d.ts3240644editdlrm
patch-incorrect-lockfile.js70360644editdlrm
patch-incorrect-lockfile.js.map91970644editdlrm
pick.d.ts830644editdlrm
pick.js3680644editdlrm
pick.js.map5130644editdlrm
picocolors.d.ts14530644editdlrm
picocolors.js53750644editdlrm
picocolors.js.map62880644editdlrm
pretty-bytes.d.ts760644editdlrm
pretty-bytes.js30560644editdlrm
pretty-bytes.js.map41450644editdlrm
realpath.d.ts870644editdlrm
realpath.js5720644editdlrm
realpath.js.map7950644editdlrm
recursive-copy.d.ts2180644editdlrm
recursive-copy.js28600644editdlrm
recursive-copy.js.map44700644editdlrm
recursive-delete.d.ts3210644editdlrm
recursive-delete.js26420644editdlrm
recursive-delete.js.map42200644editdlrm
recursive-readdir.d.ts10540644editdlrm
recursive-readdir.js54640644editdlrm
recursive-readdir.js.map84860644editdlrm
redirect-status.d.ts2600644editdlrm
redirect-status.js12850644editdlrm
redirect-status.js.map17940644editdlrm
require-instrumentation-client.d.ts00644editdlrm
require-instrumentation-client.js12920644editdlrm
require-instrumentation-client.js.map19470644editdlrm
resolve-from.d.ts1020644editdlrm
resolve-from.js21440644editdlrm
resolve-from.js.map26440644editdlrm
route-pattern-normalizer.d.ts11010644editdlrm
route-pattern-normalizer.js45020644editdlrm
route-pattern-normalizer.js.map66050644editdlrm
scheduler.d.ts15830644editdlrm
scheduler.js18630644editdlrm
scheduler.js.map34800644editdlrm
semver-noop.d.ts460644editdlrm
semver-noop.js4710644editdlrm
semver-noop.js.map4520644editdlrm
server-external-packages.json12810644editdlrm
setup-exception-listeners.d.ts00644editdlrm
setup-exception-listeners.js2920644editdlrm
setup-exception-listeners.js.map5910644editdlrm
static-env.d.ts6050644editdlrm
static-env.js26660644editdlrm
static-env.js.map38530644editdlrm
try-to-parse-path.d.ts6960644editdlrm
try-to-parse-path.js25420644editdlrm
try-to-parse-path.js.map44610644editdlrm
turbopack-warning.d.ts1890644editdlrm
turbopack-warning.js87770644editdlrm
turbopack-warning.js.map116370644editdlrm
url.d.ts3330644editdlrm
url.js19820644editdlrm
url.js.map29420644editdlrm
verify-partytown-setup.d.ts930644editdlrm
verify-partytown-setup.js49180644editdlrm
verify-partytown-setup.js.map51260644editdlrm
verify-root-layout.d.ts3350644editdlrm
verify-root-layout.js56820644editdlrm
verify-root-layout.js.map66250644editdlrm
verify-typescript-setup.d.ts5400644editdlrm
verify-typescript-setup.js74810644editdlrm
verify-typescript-setup.js.map89390644editdlrm
verifyAndLint.d.ts2470644editdlrm
verifyAndLint.js31590644editdlrm
verifyAndLint.js.map46630644editdlrm
wait.d.ts1800644editdlrm
wait.js4380644editdlrm
wait.js.map4940644editdlrm
with-promise-cache.d.ts3770644editdlrm
with-promise-cache.js5940644editdlrm
with-promise-cache.js.map13960644editdlrm
worker.d.ts12760644editdlrm
worker.js84290644editdlrm
worker.js.map131700644editdlrm
Edit: /opt/canhelp/node_modules/next/dist/lib/load-custom-routes.js (22871B)
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { checkCustomRoutes: null, default: null, normalizeRouteRegex: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { checkCustomRoutes: function() { return checkCustomRoutes; }, default: function() { return loadCustomRoutes; }, normalizeRouteRegex: function() { return normalizeRouteRegex; } }); const _picocolors = require("./picocolors"); const _escaperegexp = require("../shared/lib/escape-regexp"); const _trytoparsepath = require("./try-to-parse-path"); const _redirectstatus = require("./redirect-status"); const _url = require("./url"); const allowedHasTypes = new Set([ 'header', 'cookie', 'query', 'host' ]); const namedGroupsRegex = /\(\?<([a-zA-Z][a-zA-Z0-9]*)>/g; function normalizeRouteRegex(regex) { // clean up un-necessary escaping from regex.source which turns / into \\/ return regex.replace(/\\\//g, '/'); } function checkRedirect(route) { const invalidParts = []; let hadInvalidStatus = false; if (route.statusCode && !_redirectstatus.allowedStatusCodes.has(route['statusCode'])) { hadInvalidStatus = true; invalidParts.push(`\`statusCode\` is not undefined or valid statusCode`); } if (typeof route.permanent !== 'boolean' && !route['statusCode']) { invalidParts.push(`\`permanent\` is not set to \`true\` or \`false\``); } return { invalidParts, hadInvalidStatus }; } function checkHeader(route) { const invalidParts = []; if (!Array.isArray(route.headers)) { invalidParts.push('`headers` field must be an array'); } else if (route.headers.length === 0) { invalidParts.push('`headers` field cannot be empty'); } else { for (const header of route.headers){ if (!header || typeof header !== 'object') { invalidParts.push("`headers` items must be object with { key: '', value: '' }"); break; } if (typeof header.key !== 'string') { invalidParts.push('`key` in header item must be string'); break; } if (typeof header.value !== 'string') { invalidParts.push('`value` in header item must be string'); break; } } } return invalidParts; } function checkCustomRoutes(routes, type) { if (!Array.isArray(routes)) { console.error(`Error: ${type}s must return an array, received ${typeof routes}.\n` + `See here for more info: https://nextjs.org/docs/messages/routes-must-be-array`); process.exit(1); } let numInvalidRoutes = 0; let hadInvalidStatus = false; let hadInvalidHas = false; let hadInvalidMissing = false; const allowedKeys = new Set([ 'source', 'locale', 'has', 'missing' ]); if (type === 'rewrite') { allowedKeys.add('basePath'); allowedKeys.add('destination'); } if (type === 'redirect') { allowedKeys.add('basePath'); allowedKeys.add('statusCode'); allowedKeys.add('permanent'); allowedKeys.add('destination'); } if (type === 'header') { allowedKeys.add('basePath'); allowedKeys.add('headers'); } for (const route of routes){ if (!route || typeof route !== 'object') { console.error(`The route ${JSON.stringify(route)} is not a valid object with \`source\`${type !== 'middleware' ? ` and \`${type === 'header' ? 'headers' : 'destination'}\`` : ''}`); numInvalidRoutes++; continue; } if (type === 'rewrite' && route.basePath === false && !(route.destination.startsWith('http://') || route.destination.startsWith('https://'))) { console.error(`The route ${route.source} rewrites urls outside of the basePath. Please use a destination that starts with \`http://\` or \`https://\` https://nextjs.org/docs/messages/invalid-external-rewrite`); numInvalidRoutes++; continue; } const keys = Object.keys(route); const invalidKeys = keys.filter((key)=>!allowedKeys.has(key)); const invalidParts = []; if ('basePath' in route && typeof route.basePath !== 'undefined' && route.basePath !== false) { invalidParts.push('`basePath` must be undefined or false'); } if (typeof route.locale !== 'undefined' && route.locale !== false) { invalidParts.push('`locale` must be undefined or false'); } const checkInvalidHasMissing = (items, fieldName)=>{ let hadInvalidItem = false; if (typeof items !== 'undefined' && !Array.isArray(items)) { invalidParts.push(`\`${fieldName}\` must be undefined or valid has object`); hadInvalidItem = true; } else if (items) { const invalidHasItems = []; for (const hasItem of items){ let invalidHasParts = []; if (!allowedHasTypes.has(hasItem.type)) { invalidHasParts.push(`invalid type "${hasItem.type}"`); } if (typeof hasItem.key !== 'string' && hasItem.type !== 'host') { invalidHasParts.push(`invalid key "${hasItem.key}"`); } if (typeof hasItem.value !== 'undefined' && typeof hasItem.value !== 'string') { invalidHasParts.push(`invalid value "${hasItem.value}"`); } if (typeof hasItem.value === 'undefined' && hasItem.type === 'host') { invalidHasParts.push(`value is required for "host" type`); } if (invalidHasParts.length > 0) { invalidHasItems.push(`${invalidHasParts.join(', ')} for ${JSON.stringify(hasItem)}`); } } if (invalidHasItems.length > 0) { hadInvalidItem = true; const itemStr = `item${invalidHasItems.length === 1 ? '' : 's'}`; console.error(`Invalid \`${fieldName}\` ${itemStr}:\n` + invalidHasItems.join('\n')); console.error(); invalidParts.push(`invalid \`${fieldName}\` ${itemStr} found`); } } return hadInvalidItem; }; if (checkInvalidHasMissing(route.has, 'has')) { hadInvalidHas = true; } if (checkInvalidHasMissing(route.missing, 'missing')) { hadInvalidMissing = true; } if (!route.source) { invalidParts.push('`source` is missing'); } else if (typeof route.source !== 'string') { invalidParts.push('`source` is not a string'); } else if (!route.source.startsWith('/')) { invalidParts.push('`source` does not start with /'); } if (type === 'header') { invalidParts.push(...checkHeader(route)); } else if (type !== 'middleware') { let _route = route; if (!_route.destination) { invalidParts.push('`destination` is missing'); } else if (typeof _route.destination !== 'string') { invalidParts.push('`destination` is not a string'); } else if (type === 'rewrite' && !_route.destination.match(/^(\/|https:\/\/|http:\/\/)/)) { invalidParts.push('`destination` does not start with `/`, `http://`, or `https://`'); } } if (type === 'redirect') { const result = checkRedirect(route); hadInvalidStatus = hadInvalidStatus || result.hadInvalidStatus; invalidParts.push(...result.invalidParts); } let sourceTokens; if (typeof route.source === 'string' && route.source.startsWith('/')) { // only show parse error if we didn't already show error // for not being a string const { tokens, error, regexStr } = (0, _trytoparsepath.tryToParsePath)(route.source); if (error) { invalidParts.push('`source` parse failed'); } if (regexStr && regexStr.length > 4096) { invalidParts.push('`source` exceeds max built length of 4096'); } sourceTokens = tokens; } const hasSegments = new Set(); if (route.has) { for (const hasItem of route.has){ if (!hasItem.value && hasItem.key) { hasSegments.add(hasItem.key); } if (hasItem.value) { for (const match of hasItem.value.matchAll(namedGroupsRegex)){ if (match[1]) { hasSegments.add(match[1]); } } if (hasItem.type === 'host') { hasSegments.add('host'); } } } } // make sure no unnamed patterns are attempted to be used in the // destination as this can cause confusion and is not allowed if (typeof route.destination === 'string') { if (route.destination.startsWith('/') && Array.isArray(sourceTokens)) { const unnamedInDest = new Set(); for (const token of sourceTokens){ if (typeof token === 'object' && typeof token.name === 'number') { const unnamedIndex = new RegExp(`:${token.name}(?!\\d)`); if (route.destination.match(unnamedIndex)) { unnamedInDest.add(`:${token.name}`); } } } if (unnamedInDest.size > 0) { invalidParts.push(`\`destination\` has unnamed params ${[ ...unnamedInDest ].join(', ')}`); } else { const { tokens: destTokens, regexStr: destRegexStr, error: destinationParseFailed } = (0, _trytoparsepath.tryToParsePath)(route.destination, { handleUrl: true }); if (destRegexStr && destRegexStr.length > 4096) { invalidParts.push('`destination` exceeds max built length of 4096'); } if (destinationParseFailed) { invalidParts.push('`destination` parse failed'); } else { const sourceSegments = new Set(sourceTokens.map((item)=>typeof item === 'object' && item.name).filter(Boolean)); const invalidDestSegments = new Set(); for (const token of destTokens){ if (typeof token === 'object' && !sourceSegments.has(token.name) && !hasSegments.has(token.name)) { invalidDestSegments.add(token.name); } } if (invalidDestSegments.size) { invalidParts.push(`\`destination\` has segments not in \`source\` or \`has\` (${[ ...invalidDestSegments ].join(', ')})`); } } } } } const hasInvalidKeys = invalidKeys.length > 0; const hasInvalidParts = invalidParts.length > 0; if (hasInvalidKeys || hasInvalidParts) { console.error(`${invalidParts.join(', ')}${invalidKeys.length ? (hasInvalidParts ? ',' : '') + ` invalid field${invalidKeys.length === 1 ? '' : 's'}: ` + invalidKeys.join(',') : ''} for route ${JSON.stringify(route)}`); console.error(); numInvalidRoutes++; } } if (numInvalidRoutes > 0) { if (hadInvalidStatus) { console.error(`\nValid redirect statusCode values are ${[ ..._redirectstatus.allowedStatusCodes ].join(', ')}`); } if (hadInvalidHas) { console.error(`\nValid \`has\` object shape is ${JSON.stringify({ type: [ ...allowedHasTypes ].join(', '), key: 'the key to check for', value: 'undefined or a value string to match against' }, null, 2)}`); } if (hadInvalidMissing) { console.error(`\nValid \`missing\` object shape is ${JSON.stringify({ type: [ ...allowedHasTypes ].join(', '), key: 'the key to check for', value: 'undefined or a value string to match against' }, null, 2)}`); } console.error(); console.error(`Error: Invalid ${type}${numInvalidRoutes === 1 ? '' : 's'} found`); process.exit(1); } } function processRoutes(routes, config, type) { const _routes = routes; const newRoutes = []; const defaultLocales = []; if (config.i18n && type === 'redirect') { var _config_i18n; for (const item of ((_config_i18n = config.i18n) == null ? void 0 : _config_i18n.domains) || []){ defaultLocales.push({ locale: item.defaultLocale, base: `http${item.http ? '' : 's'}://${item.domain}` }); } defaultLocales.push({ locale: config.i18n.defaultLocale, base: '' }); } for (const r of _routes){ var _r_destination; const srcBasePath = config.basePath && r.basePath !== false ? config.basePath : ''; const isExternal = !((_r_destination = r.destination) == null ? void 0 : _r_destination.startsWith('/')); const destBasePath = srcBasePath && !isExternal ? srcBasePath : ''; if (config.i18n && r.locale !== false) { var _r_destination1; if (!isExternal) { defaultLocales.forEach((item)=>{ let destination; if (r.destination) { destination = item.base ? `${item.base}${destBasePath}${r.destination}` : `${destBasePath}${r.destination}`; } newRoutes.push({ ...r, destination, source: `${srcBasePath}/${item.locale}${r.source === '/' && !config.trailingSlash ? '' : r.source}` }); }); } r.source = `/:nextInternalLocale(${config.i18n.locales.map((locale)=>(0, _escaperegexp.escapeStringRegexp)(locale)).join('|')})${r.source === '/' && !config.trailingSlash ? '' : r.source}`; if (r.destination && ((_r_destination1 = r.destination) == null ? void 0 : _r_destination1.startsWith('/'))) { r.destination = `/:nextInternalLocale${r.destination === '/' && !config.trailingSlash ? '' : r.destination}`; } } r.source = `${srcBasePath}${r.source === '/' && srcBasePath ? '' : r.source}`; if (r.destination) { r.destination = `${destBasePath}${r.destination === '/' && destBasePath ? '' : r.destination}`; } newRoutes.push(r); } return newRoutes; } async function loadRedirects(config) { if (typeof config.redirects !== 'function') { return []; } let redirects = await config.redirects(); // check before we process the routes and after to ensure // they are still valid checkCustomRoutes(redirects, 'redirect'); // save original redirects before transforms if (Array.isArray(redirects)) { config._originalRedirects = redirects.map((r)=>({ ...r })); } redirects = processRoutes(redirects, config, 'redirect'); checkCustomRoutes(redirects, 'redirect'); return redirects; } async function loadRewrites(config) { // If assetPrefix is set, add a rewrite for `/${assetPrefix}/_next/*` // requests so that they are handled in any of dev, start, or deploy // automatically without the user having to configure this. // If the assetPrefix is an absolute URL, we still consider the path for automatic rewrite. // but hostname routing must be handled by the user let maybeAssetPrefixRewrite = []; if (config.assetPrefix) { let prefix = config.assetPrefix; if ((0, _url.isFullStringUrl)(config.assetPrefix) && URL.canParse(config.assetPrefix)) { prefix = new URL(config.assetPrefix).pathname; } if (prefix && prefix !== '/') { const assetPrefix = prefix.startsWith('/') ? prefix : `/${prefix}`; const basePath = config.basePath || ''; // If these are the same, then this would result in an infinite rewrite. if (assetPrefix !== basePath) { maybeAssetPrefixRewrite.push({ source: `${assetPrefix}/_next/:path+`, destination: `${basePath}/_next/:path+` }); } } } if (typeof config.rewrites !== 'function') { return { beforeFiles: [ ...maybeAssetPrefixRewrite ], afterFiles: [], fallback: [] }; } const _rewrites = await config.rewrites(); let beforeFiles = []; let afterFiles = []; let fallback = []; if (!Array.isArray(_rewrites) && typeof _rewrites === 'object' && Object.keys(_rewrites).every((key)=>key === 'beforeFiles' || key === 'afterFiles' || key === 'fallback')) { beforeFiles = _rewrites.beforeFiles || []; afterFiles = _rewrites.afterFiles || []; fallback = _rewrites.fallback || []; } else { afterFiles = _rewrites; } // check before we process the routes and after to ensure // they are still valid checkCustomRoutes(beforeFiles, 'rewrite'); checkCustomRoutes(afterFiles, 'rewrite'); checkCustomRoutes(fallback, 'rewrite'); // save original rewrites before transforms config._originalRewrites = { beforeFiles: beforeFiles.map((r)=>({ ...r })), afterFiles: afterFiles.map((r)=>({ ...r })), fallback: fallback.map((r)=>({ ...r })) }; beforeFiles = [ ...maybeAssetPrefixRewrite, ...processRoutes(beforeFiles, config, 'rewrite') ]; afterFiles = processRoutes(afterFiles, config, 'rewrite'); fallback = processRoutes(fallback, config, 'rewrite'); checkCustomRoutes(beforeFiles, 'rewrite'); checkCustomRoutes(afterFiles, 'rewrite'); checkCustomRoutes(fallback, 'rewrite'); return { beforeFiles, afterFiles, fallback }; } async function loadHeaders(config) { if (typeof config.headers !== 'function') { return []; } let headers = await config.headers(); // check before we process the routes and after to ensure // they are still valid checkCustomRoutes(headers, 'header'); headers = processRoutes(headers, config, 'header'); checkCustomRoutes(headers, 'header'); return headers; } async function loadCustomRoutes(config) { var _config_experimental; const [headers, rewrites, redirects] = await Promise.all([ loadHeaders(config), loadRewrites(config), loadRedirects(config) ]); const totalRewrites = rewrites.beforeFiles.length + rewrites.afterFiles.length + rewrites.fallback.length; const totalRoutes = headers.length + redirects.length + totalRewrites; if (totalRoutes > 1000) { console.warn((0, _picocolors.bold)((0, _picocolors.yellow)(`Warning: `)) + `total number of custom routes exceeds 1000, this can reduce performance. Route counts:\n` + `headers: ${headers.length}\n` + `rewrites: ${totalRewrites}\n` + `redirects: ${redirects.length}\n` + `See more info: https://nextjs.org/docs/messages/max-custom-routes-reached`); } if (((_config_experimental = config.experimental) == null ? void 0 : _config_experimental.useSkewCookie) && config.deploymentId) { headers.unshift({ source: '/:path*', headers: [ { key: 'Set-Cookie', value: `__vdpl=${config.deploymentId}; Path=/; HttpOnly` } ] }); } if (!config.skipTrailingSlashRedirect) { if (config.trailingSlash) { redirects.unshift({ source: '/:file((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/]+\\.\\w+)/', destination: '/:file', permanent: true, locale: config.i18n ? false : undefined, internal: true, // don't run this redirect for _next/data requests missing: [ { type: 'header', key: 'x-nextjs-data' } ] }, { source: '/:notfile((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/\\.]+)', destination: '/:notfile/', permanent: true, locale: config.i18n ? false : undefined, internal: true }); if (config.basePath) { redirects.unshift({ source: config.basePath, destination: config.basePath + '/', permanent: true, basePath: false, locale: config.i18n ? false : undefined, internal: true }); } } else { redirects.unshift({ source: '/:path+/', destination: '/:path+', permanent: true, locale: config.i18n ? false : undefined, internal: true }); if (config.basePath) { redirects.unshift({ source: config.basePath + '/', destination: config.basePath, permanent: true, basePath: false, locale: config.i18n ? false : undefined, internal: true }); } } } return { headers, rewrites, redirects }; } //# sourceMappingURL=load-custom-routes.js.map