remix-session-helper v0.2.1
Remix Session Helper
This is a helper library for the Remix framework. It provides a SessionProxy
class that simplifies commiting and destroying sessions in loaders and actions.
It supports all official Remix adapters that implement the SessionStorage
interface, including @remix-run/node
, @remix-run/cloudflare
, @remix-run/deno
, and @remix-run/architect
Installation
npm install remix-session-helper
# or
yarn add remix-session-helper
Setup
import { createSessionStorage } from "@remix-run/node";
import { wrapSessionStorage } from "remix-session-helper";
// Optional but recommended
type SessionKey = "userId" | "login-error";
const { getSession } = wrapSessionStorage<SessionKey>(
createSessionStorage({
// ...session storage options
}),
);
Usage
export async function action({ request }: ActionArgs) {
const session = await getSession(request);
const formData = await request.formData();
const username = formData.get("username");
const password = formData.get("password");
const user = await verifyLogin(username, password);
if (!user) {
session.flash("login-error", "Invalid username or password");
return session.redirect("/login");
}
session.set("userId", user.id);
return session.redirect("/dashboard");
}
SessionProxy
For all methods, if the SessionKey generic is used, the key will be type-checked.
Properties
SessionProxy#id: string
The session ID.
SessionProxy#isDirty: boolean
A boolean indicating whether the session has been modified.
Standard Methods
SessionProxy#has(key: SessionKey): boolean
Checks if a key exists in the session.
SessionProxy#get(key: SessionKey): any
Gets a value from the session.
SessionProxy#getString(key: SessionKey): string | null
Gets a string value from the session, if the value is not a string, null
will be returned.
SessionProxy#assertString(key: SessionKey): string
Gets a string value from the session, if the value is not a string, an error will be thrown.
SessionProxy#set(key: SessionKey, value: any): void
Sets a value in the session.
SessionProxy#unset(key: SessionKey): void
Unsets a value in the session.
SessionProxy#flash(key: SessionKey, value: any): void
Sets a value in the session and marks it as a flash value. Flash values are automatically unset after the next request.
Response Utility Methods
SessionProxy#json<T>(data: T, init?: RequestInit): Promise<TypedResponse<T>>
A wrapper around Remix's json
function that commits the session before returning the response.
SessionProxy#destroyJson<T>(data: T, init?: RequestInit): Promise<TypedResponse<T>>
A wrapper around Remix's json
function that destroys the session before returning the response.
SessionProxy#redirect(url: string, init?: RequestInit): Promise<TypedResponse<never>>
A wrapper around Remix's redirect
function that commits the session before returning the response.
SessionProxy#destroyRedirect(url: string, init?: RequestInit): Promise<TypedResponse<never>>
A wrapper around Remix's redirect
function that destroys the session before returning the response.