sessionize-auth
Version:
A flexible session management library for React, Next.js, Angular, and React Native
40 lines (36 loc) • 968 B
text/typescript
import Cookies from "js-cookie";
import { SessionStore } from "../core/types";
/**
* Cookies session store
*/
export function createCookiesStore<T>(key: string = "account"): SessionStore<T> {
return {
get: (): T | null => {
try {
const cookie = Cookies.get(key);
return cookie ? JSON.parse(cookie) : null;
} catch (error) {
console.warn("Failed to parse cookie data:", error);
return null;
}
},
set: (account: T): void => {
try {
Cookies.set(key, JSON.stringify(account), {
secure: true,
sameSite: "Strict",
expires: 7 // 7 days
});
} catch (error) {
console.error("Failed to save to cookies:", error);
}
},
remove: (): void => {
try {
Cookies.remove(key);
} catch (error) {
console.error("Failed to remove from cookies:", error);
}
}
};
}