YASS
Yet another session storage is a full strongly typed session storage for Fetch API in Deno.
This library is fairly barebones atm but is being used in production.
Example Usage
// in fresh project _middleware.ts
import { createFreshMiddleware, createJWTContainer } from "https://deno.land/x/yass/mod.ts"
import { ZodIssue } from "zod";
export type Schema = {
errors: ZodIssue[]
partial: Record<string, any>
success: {
firstName: string;
lastName: string;
email: string;
phone: string;
}
}
const container = createJWTContainer<"data", Schema>("data", Deno.env.get("MY_JWT_SIGNING_SECRET"))
export const handler = createFreshMiddleware(container)
// in fresh route file
import { Context } from "https://deno.land/x/yass/mod.ts";
type PageData = {
fullName: string;
email: string;
phone: string;
};
export const handler: Handlers<PageData, Context<Schema>> = {
GET: (req, ctx) => {
const success = ctx.state.session.get("success");
if (!success) {
return new Response(null, {
headers: { Location: "/contact" },
status: 302,
});
}
return ctx.render({
fullName: success.firstName,
email: success.email,
phone: success.phone,
});
},
};