@edgesession/adapter-next-kv
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

@edgesession/adapter-next-kv

A session manager for Next.js on edge runtime.

Getting started

Prerequisite

Please make sure that Vercel KV is enabled.

npm i edgesession @edgesession/adapter-next-kv @vercel/kv
// kvsession.ts
import { kv } from "@vercel/kv";
import { Signature, EdgeSession } from "edgesession";
import { NextKvSessionStore } from "@edgesession/adapter-next-kv";

export const kvsession = new EdgeSession(
  new Signature(process.env.SESSION_SECRET as string),
  new NextKvSessionStore(kv)
);
// page.tsx
import { cookies } from "next/headers";
import { kvsession } from "./kvsession";
import { SessionState } from "edgesession";

interface UserId extends SessionState<"user_id"> {}
interface SubmissionResult extends SessionState<"submission_result", "success" | "failed", true> {}

export async function getSessionData() {
    const res = await kvsession.get<UserId>(cookies(), "user_id");
    if (!res.success) return res;
    
    console.log(`user_id => ${res.data}`) // => user_id => xxx-yyy-zzz

    // Flash data will be volatile once it's fetched.
    const res2 = await kvsession.getFlash<SubmissionResult>(cookies(), "submission_result");
    if (!res2.success) return res;

    console.log(`submission_result => ${res2.data}`) // => submission_result => success
    
    return { success: true, userId: res.data, submtResult: res2.data }
}

export default async function Page() {
    const res = await getSessionData()
    
    if (!res.success) {
        return (<h1>Error</h1>)
    } else {
        // ...
    }
}

Readme

Keywords

Package Sidebar

Install

npm i @edgesession/adapter-next-kv

Weekly Downloads

2

Version

0.0.4

License

Apache-2.0

Unpacked Size

4.13 kB

Total Files

5

Last publish

Collaborators

  • sundaycrafts