Skip to content

Commit 3343ef1

Browse files
authoredNov 7, 2022
fix(next): conditional RSC support (#5745)
* fix(next): conditional RSC * use Node 16 for version determination * convert cookies * use map instead of reduce
1 parent 6280fe9 commit 3343ef1

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed
 

‎.github/version-pr/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ outputs:
44
version:
55
description: "npm package version"
66
runs:
7-
using: "node18"
7+
using: "node16"
88
main: "index.js"

‎packages/next-auth/src/next/index.ts

+19-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { NextAuthHandler } from "../core"
22
import { detectHost } from "../utils/detect-host"
33
import { setCookie } from "./utils"
4-
import { cookies as nextCookies, headers } from "next/headers"
54

65
import type {
76
GetServerSidePropsContext,
@@ -121,18 +120,25 @@ export async function unstable_getServerSession(
121120
experimentalRSCWarningShown = true
122121
}
123122

124-
const [req, res, options] = isRSC
125-
? [
126-
{
127-
headers: headers(),
128-
cookies: nextCookies()
129-
.getAll()
130-
.reduce((acc, c) => ({ ...acc, [c.name]: c.value }), {}),
131-
} as any,
132-
{ getHeader() {}, setCookie() {}, setHeader() {} } as any,
133-
args[0],
134-
]
135-
: args
123+
let req, res, options: NextAuthOptions
124+
if (isRSC) {
125+
options = args[0]
126+
// eslint-disable-next-line @typescript-eslint/no-var-requires
127+
const { headers, cookies } = require("next/headers")
128+
req = {
129+
headers,
130+
cookies: Object.fromEntries(
131+
cookies()
132+
.getAll()
133+
.map((c) => [c.name, c.value])
134+
),
135+
}
136+
res = { getHeader() {}, setCookie() {}, setHeader() {} }
137+
} else {
138+
req = args[0]
139+
res = args[1]
140+
options = args[2]
141+
}
136142

137143
options.secret = options.secret ?? process.env.NEXTAUTH_SECRET
138144

0 commit comments

Comments
 (0)
Please sign in to comment.