vvo / iron-session

🛠 Secure, stateless, and cookie-based session library for JavaScript
https://get-iron-session.vercel.app
MIT License
3.65k stars 251 forks source link

outdated dependency @types/cookie causes type mismatch #690

Closed brumm closed 4 months ago

brumm commented 9 months ago

Hey there,

I'm seeing a TS error when passing Nextjs's cookies() function to getIronSession

Argument of type 'ReadonlyRequestCookies' is not assignable to parameter of type 'CookieStore'.
  Types of property 'set' are incompatible.
    Type '(...args: [key: string, value: string, cookie?: Partial<ResponseCookie> | undefined] | [options: ResponseCookie]) => ResponseCookies' is not assignable to type '{ (name: string, value: string, cookie?: Partial<ResponseCookie> | undefined): void; (options: ResponseCookie): void; }'.
      Types of parameters 'args' and 'name' are incompatible.
        Type '[name: string, value: string, cookie?: Partial<ResponseCookie> | undefined]' is not assignable to type '[key: string, value: string, cookie?: Partial<ResponseCookie> | undefined] | [options: ResponseCookie]'.
          Type '[name: string, value: string, cookie?: Partial<ResponseCookie> | undefined]' is not assignable to type '[key: string, value: string, cookie?: Partial<ResponseCookie> | undefined]'.
            Type at position 2 in source is not compatible with type at position 2 in target.
              Type 'Partial<ResponseCookie> | undefined' is not assignable to type 'Partial<import("/Users/brumm/Code/portals/node_modules/next/dist/compiled/@edge-runtime/cookies/index").ResponseCookie> | undefined'.
                Type 'Partial<ResponseCookie>' is not assignable to type 'Partial<import("/Users/brumm/Code/portals/node_modules/next/dist/compiled/@edge-runtime/cookies/index").ResponseCookie>'.
                  Types of property 'priority' are incompatible.
                    Type 'unknown' is not assignable to type '"low" | "medium" | "high" | undefined'.ts(2345)

It seems like the priority attribute has been added to the types in @types/cookie@0.6.0, but this library is still on 0.5.4

aryaadinulfadlan commented 7 months ago

Hey there,

I'm seeing a TS error when passing Nextjs's cookies() function to getIronSession

Argument of type 'ReadonlyRequestCookies' is not assignable to parameter of type 'CookieStore'.
  Types of property 'set' are incompatible.
    Type '(...args: [key: string, value: string, cookie?: Partial<ResponseCookie> | undefined] | [options: ResponseCookie]) => ResponseCookies' is not assignable to type '{ (name: string, value: string, cookie?: Partial<ResponseCookie> | undefined): void; (options: ResponseCookie): void; }'.
      Types of parameters 'args' and 'name' are incompatible.
        Type '[name: string, value: string, cookie?: Partial<ResponseCookie> | undefined]' is not assignable to type '[key: string, value: string, cookie?: Partial<ResponseCookie> | undefined] | [options: ResponseCookie]'.
          Type '[name: string, value: string, cookie?: Partial<ResponseCookie> | undefined]' is not assignable to type '[key: string, value: string, cookie?: Partial<ResponseCookie> | undefined]'.
            Type at position 2 in source is not compatible with type at position 2 in target.
              Type 'Partial<ResponseCookie> | undefined' is not assignable to type 'Partial<import("/Users/brumm/Code/portals/node_modules/next/dist/compiled/@edge-runtime/cookies/index").ResponseCookie> | undefined'.
                Type 'Partial<ResponseCookie>' is not assignable to type 'Partial<import("/Users/brumm/Code/portals/node_modules/next/dist/compiled/@edge-runtime/cookies/index").ResponseCookie>'.
                  Types of property 'priority' are incompatible.
                    Type 'unknown' is not assignable to type '"low" | "medium" | "high" | undefined'.ts(2345)

It seems like the priority attribute has been added to the types in @types/cookie@0.6.0, but this library is still on 0.5.4

hello sir. I got the same error. how do you solve that?

murieldelvaux commented 5 months ago

Hello, I got the same error. How do we solve that?

mordechaim commented 5 months ago

I couldn't find a better way other than just use type assertion, ugly I know:

await getIronSession<SessionData>(cookies() as any, config)
murieldelvaux commented 5 months ago

I tried something similar, it worked, thank you very much!

vvo commented 4 months ago

Hey there, I upgraded cookies to 0.6.0 this should be solved? Let me know!

vvo commented 4 months ago

8.0.2 was released

murieldelvaux commented 4 months ago

Hello, I just updated to test, but I still get the same thing: "Argument of Type" Readonlyrequestcookies 'is not asquisignable to parameter of type' cookiestore'.ts (2345) ⚠ Error (TS2345) | ARGUENT OF TYPE is not assignable to parameter of type . "

To solve this, I had to keep it as in the image below: image

vvo commented 4 months ago

@murieldelvaux Is there any chance you can create a simple github repository showing the issue? I do not get the problem currently.

robknight commented 4 months ago

I was able to resolve this by directly depending on @types/cookie in my project.