0831dd59c9
A small refactor PR to convert some imports to type imports, as well as removing a couple of unused exports. The Edge SSR loader is also missing the global process injection (`enhanceGlobals`). ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [ ] Make sure the linting passes by running `pnpm lint` - [ ] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)
46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
import type { NextParsedUrlQuery } from './request-meta'
|
|
import React from 'react'
|
|
import { BLOCKED_PAGES } from '../shared/lib/constants'
|
|
|
|
export function isBlockedPage(pathname: string): boolean {
|
|
return BLOCKED_PAGES.includes(pathname)
|
|
}
|
|
|
|
export function cleanAmpPath(pathname: string): string {
|
|
if (pathname.match(/\?amp=(y|yes|true|1)/)) {
|
|
pathname = pathname.replace(/\?amp=(y|yes|true|1)&?/, '?')
|
|
}
|
|
if (pathname.match(/&=(y|yes|true|1)/)) {
|
|
pathname = pathname.replace(/&=(y|yes|true|1)/, '')
|
|
}
|
|
pathname = pathname.replace(/\?$/, '')
|
|
return pathname
|
|
}
|
|
|
|
export function isBot(userAgent: string): boolean {
|
|
return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(
|
|
userAgent
|
|
)
|
|
}
|
|
|
|
export function isTargetLikeServerless(target: string) {
|
|
const isServerless = target === 'serverless'
|
|
const isServerlessTrace = target === 'experimental-serverless-trace'
|
|
return isServerless || isServerlessTrace
|
|
}
|
|
|
|
export function stripInternalQueries(query: NextParsedUrlQuery) {
|
|
delete query.__nextFallback
|
|
delete query.__nextLocale
|
|
delete query.__nextDefaultLocale
|
|
delete query.__nextIsNotFound
|
|
|
|
// RSC
|
|
delete query.__flight__
|
|
delete query.__props__
|
|
// routing
|
|
delete query.__flight_router_state_tree__
|
|
}
|
|
|
|
// When react version is >= 18 opt-in using reactRoot
|
|
export const shouldUseReactRoot = parseInt(React.version) >= 18
|