0.0.4 • Published 2 years ago

@edgesession/adapter-next-kv v0.0.4

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 years ago

@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 {
        // ...
    }
}
0.0.1-alpha.14

2 years ago

0.0.1-alpha.13

2 years ago

0.0.1

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.4

2 years ago

0.0.1-alpha.12

2 years ago

0.0.1-alpha.11

2 years ago

0.0.1-alpha.10

2 years ago

0.0.1-alpha.9

2 years ago

0.0.1-alpha.8

2 years ago

0.0.1-alpha.7

2 years ago

0.0.1-alpha.6

2 years ago

0.0.1-alpha.5

2 years ago

0.0.1-alpha.0

2 years ago