Luvabase logoLuvabase Docs

Runtime Reference

Usage

Install luvabase with your package manager of choice for example:

npm install luvabase

Then import the methods you need from luvabase/runtime:

import { getMembers, getSession, sendMemberEmail } from "luvabase/runtime"

Local Development

The runtime APIs only work from inside a deployed Luvabase app. During local development, call your own wrapper instead of importing luvabase/runtime throughout your app, then return mock data locally and delegate to the runtime APIs in production.

For example, create a luvabase.ts file:

luvabase.ts
import {
  getMembers as getRuntimeMembers,
  getSession,
  type Member,
} from "luvabase/runtime"

function isDevelopment(): boolean {
  return import.meta.env.MODE !== "production"
}

export async function getMembers(request: Request): Promise<Member[]> {
  if (isDevelopment()) {
    return [
      {
        id: "dev-user",
        type: "user" as const,
        role: "owner",
        name: "Development User",
        imageUrl: null,
      },
    ]
  }

  return getRuntimeMembers(request)
}

export async function getCurrentUser(request: Request): Promise<Member | null> {
  if (isDevelopment()) {
    return {
      id: "dev-user",
      type: "user" as const,
      role: "owner",
      name: "Development User",
      imageUrl: null,
    }
  }

  const session = await getSession(request)
  return session.member
}

Then import from your wrapper:

import { getCurrentUser } from "./luvabase"

export default {
  async fetch(request: Request) {
    const user = await getCurrentUser(request)
    return Response.json({ user })
  },
}

Runtime Methods Reference

getSession(request)

Returns the current pod session.

function getSession(request: Request): Promise<Session>

The returned member is null when the request is not authenticated.

getMembers(request)

Returns all members of the current pod.

function getMembers(request: Request): Promise<Member[]>

The request must be the incoming request handled by your app. Luvabase uses request headers for routing and authentication.

sendMemberEmail(request, params)

Send an email to a member of the current pod.

function sendMemberEmail(
  request: Request,
  params: {
    memberId: string
    subject: string
    content: string
  },
): Promise<void>

Types

Member

type Member = {
  id: string
  type: "user" | "agent"
  role: string
  name: string
  imageUrl: string | null
}

Session

type Session = {
  isAuthenticated: boolean
  member: Member | null
}

On this page