UNPKG

next

Version:

The React Framework

44 lines (43 loc) 2.16 kB
import { normalizeLocalePath } from '../../i18n/normalize-locale-path'; import { removePathPrefix } from './remove-path-prefix'; import { pathHasPrefix } from './path-has-prefix'; export function getNextPathnameInfo(pathname, options) { var _options_nextConfig; const { basePath, i18n, trailingSlash } = (_options_nextConfig = options.nextConfig) != null ? _options_nextConfig : {}; const info = { pathname, trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash }; if (basePath && pathHasPrefix(info.pathname, basePath)) { info.pathname = removePathPrefix(info.pathname, basePath); info.basePath = basePath; } let pathnameNoDataPrefix = info.pathname; if (info.pathname.startsWith('/_next/data/') && info.pathname.endsWith('.json')) { const paths = info.pathname.replace(/^\/_next\/data\//, '').replace(/\.json$/, '').split('/'); const buildId = paths[0]; info.buildId = buildId; pathnameNoDataPrefix = paths[1] !== 'index' ? "/" + paths.slice(1).join('/') : '/'; // update pathname with normalized if enabled although // we use normalized to populate locale info still if (options.parseData === true) { info.pathname = pathnameNoDataPrefix; } } // If provided, use the locale route normalizer to detect the locale instead // of the function below. if (i18n) { let result = options.i18nProvider ? options.i18nProvider.analyze(info.pathname) : normalizeLocalePath(info.pathname, i18n.locales); info.locale = result.detectedLocale; var _result_pathname; info.pathname = (_result_pathname = result.pathname) != null ? _result_pathname : info.pathname; if (!result.detectedLocale && info.buildId) { result = options.i18nProvider ? options.i18nProvider.analyze(pathnameNoDataPrefix) : normalizeLocalePath(pathnameNoDataPrefix, i18n.locales); if (result.detectedLocale) { info.locale = result.detectedLocale; } } } return info; } //# sourceMappingURL=get-next-pathname-info.js.map