Move normalizing of query for edge (#48373)

Follow-up to https://github.com/vercel/next.js/pull/48370 this just
moves the normalizing to the adapter instead of the web-server so it's
in a more specific place.
This commit is contained in:
JJ Kasper 2023-04-13 23:01:04 -07:00 committed by GitHub
parent 26a35a4798
commit 43519cf586
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 13 deletions

View file

@ -23,7 +23,6 @@ import { isDynamicRoute } from '../shared/lib/router/utils'
import { interpolateDynamicPath, normalizeVercelUrl } from './server-utils'
import { getNamedRouteRegex } from '../shared/lib/router/utils/route-regex'
import { IncrementalCache } from './lib/incremental-cache'
import { NEXT_QUERY_PARAM_PREFIX } from '../lib/constants'
interface WebServerOptions extends Options {
webServerConfig: {
page: string
@ -105,18 +104,6 @@ export default class NextWebServer extends BaseServer<WebServerOptions> {
res: BaseNextResponse,
parsedUrl: UrlWithParsedQuery
): Promise<void> {
for (const key of Object.keys(parsedUrl.query)) {
const value = parsedUrl.query[key]
if (
key !== NEXT_QUERY_PARAM_PREFIX &&
key.startsWith(NEXT_QUERY_PARAM_PREFIX)
) {
const normalizedKey = key.substring(NEXT_QUERY_PARAM_PREFIX.length)
parsedUrl.query[normalizedKey] = value
delete parsedUrl.query[key]
}
}
super.run(req, res, parsedUrl)
}
protected async hasPage(page: string) {

View file

@ -16,6 +16,7 @@ import {
NEXT_ROUTER_STATE_TREE,
RSC,
} from '../../client/components/app-router-headers'
import { NEXT_QUERY_PARAM_PREFIX } from '../../lib/constants'
declare const _ENTRIES: any
@ -70,6 +71,23 @@ export async function adapter(
nextConfig: params.request.nextConfig,
})
for (const key of requestUrl.searchParams.keys()) {
const value = requestUrl.searchParams.getAll(key)
if (
key !== NEXT_QUERY_PARAM_PREFIX &&
key.startsWith(NEXT_QUERY_PARAM_PREFIX)
) {
const normalizedKey = key.substring(NEXT_QUERY_PARAM_PREFIX.length)
requestUrl.searchParams.delete(normalizedKey)
for (const val of value) {
requestUrl.searchParams.append(normalizedKey, val)
}
requestUrl.searchParams.delete(key)
}
}
// Ensure users only see page requests, never data requests.
const buildId = requestUrl.buildId
requestUrl.buildId = ''