solidjs-community / solid-primitives

A library of high-quality primitives that extend SolidJS reactivity.

Home Page:https://primitives.solidjs.community

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[storage] `cookieStorage`'s `maxAge` option doesn't work

yume-chan opened this issue · comments

Describe the bug

Create a persisted signal using cookieStorage and passing the maxAge option, but the created cookie is a session cookie.

In the linked StackBlitz project, click "Open in New Tab" button at top-right corner. Looks like it can't set cookies from an iframe.

  const [maxAge, setMaxAge] = makePersisted(createSignal('initial'), {
    name: 'maxAge',
    storage: cookieStorage,
    storageOptions: { path: '/', maxAge: 60 * 60 * 24 * 7 },
  });
  const [expires, setExpires] = makePersisted(createSignal('initial'), {
    name: 'expires',
    storage: cookieStorage,
    storageOptions: {
      path: '/',
      expires: new Date(Date.now() + 60 * 60 * 24 * 7 * 1000),
    },
  });

  createEffect(() => {
    setMaxAge('hello');
    setExpires('hello');
  });

image

Minimal Reproduction Link

https://stackblitz.com/edit/github-n4ho5j-nffe5j?file=src%2Froutes%2Findex.tsx

I confirm this error

The problem is serializeCookieOptions doesn't convert maxAge to max-age

Thanks, will fix.