next.js/packages/next/src/client/components/router-reducer/create-router-cache-key.ts
create-router-cache-key.ts22 lines779 B
import type { Segment } from '../../../shared/lib/app-router-types'
import { PAGE_SEGMENT_KEY } from '../../../shared/lib/segment'

export function createRouterCacheKey(
  segment: Segment,
  withoutSearchParameters: boolean = false
) {
  // if the segment is an array, it means it's a dynamic segment
  // for example, ['lang', 'en', 'd']. We need to convert it to a string to store it as a cache node key.
  if (Array.isArray(segment)) {
    return `${segment[0]}|${segment[1]}|${segment[2]}`
  }

  // Page segments might have search parameters, ie __PAGE__?foo=bar
  // When `withoutSearchParameters` is true, we only want to return the page segment
  if (withoutSearchParameters && segment.startsWith(PAGE_SEGMENT_KEY)) {
    return PAGE_SEGMENT_KEY
  }

  return segment
}
Quest for Codev2.0.0
/
SIGN IN