0.2.1 • Published 1 year ago

remix-session-helper v0.2.1

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

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.

0.2.1

1 year ago

0.2.0

1 year ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago