Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 88x 88x 88x 88x 88x 1x 1x 57x 57x 1x 1x 43x 43x 1x 1x 16x 16x 16x 16x 16x 16x 3x 3x 3x 16x | // Segment boundaries keep public routes such as /dashboard-guide on the site.
const productRoots = [
"/dashboard",
"/onboarding",
"/twitch",
"/kick",
"/staff",
"/account",
"/settings",
"/billing",
"/subscription",
]
const authRoots = ["/sign-in", "/sign-up", "/sso-callback", "/session-tasks"]
function matchesRoot(pathname: string, roots: string[]): boolean {
return roots.some(
(root) => pathname === root || pathname.startsWith(`${root}/`)
)
}
export function isProtectedAppPath(pathname: string): boolean {
return matchesRoot(pathname, productRoots)
}
export function isLegacyAppPath(pathname: string): boolean {
return isProtectedAppPath(pathname) || matchesRoot(pathname, authRoots)
}
export function legacyAppRedirect(
requestUrl: string,
appOrigin: string
): URL | null {
const request = new URL(requestUrl)
if (!isLegacyAppPath(request.pathname)) return null
const destination = new URL(appOrigin)
destination.pathname = request.pathname
destination.search = request.search
return destination
}
|