Open
Description
Environment
const target = {
sessionToken: {
name: "authjs.session-token",
options: {
httpOnly: true,
sameSite: "lax",
path: "/",
secure: false,
},
}
}
const source = {
sessionToken: {
options: {
expires: new Date("2024-01-01T00:00:00Z"),
},
}
}
// Call
merge(target, source)
const expected = {
sessionToken: {
name: "authjs.session-token",
options: {
httpOnly: true,
sameSite: "lax",
path: "/",
secure: false,
expires: source.sessionToken.options.expires,
},
}
}
// Actual result
Object {
"sessionToken": Object {
"name": "authjs.session-token",
"options": Object {
- "expires": 2024-01-01T00:00:00.000Z,
+ "expires": Object {},
"httpOnly": true,
"path": "/",
"sameSite": "lax",
"secure": false,
},
},
}
See PR: #13030
Reproduction URL
https://github.com/magom001/operaclass.net/tree/nextauth
Describe the issue
Merge function does not correctly merge objects. E.g., it treats Date as a regular Object.
How to reproduce
Add the following test to merge.test.ts
:
it("should handle merging Date object", () => {
const target = {
sessionToken: {
name: "authjs.session-token",
options: {
httpOnly: true,
sameSite: "lax",
path: "/",
secure: false,
},
},
}
const source = {
sessionToken: {
options: {
expires: new Date("2024-01-01T00:00:00Z"),
},
},
}
const expected = {
sessionToken: {
name: "authjs.session-token",
options: {
httpOnly: true,
sameSite: "lax",
path: "/",
secure: false,
expires: source.sessionToken.options.expires,
},
},
}
expect(merge(target, source)).toEqual(expected)
})
Expected behavior
merge correctly merges objects