Skip to main content

@auth/surrealdb-adapter

Official SurrealDB adapter for Auth.js / NextAuth.js.

Installation​

npm install @auth/surrealdb-adapter surrealdb.js

SurrealDBAdapter()​

SurrealDBAdapter<T>(client): Adapter

Setup​

The SurrealDB adapter does not handle connections automatically, so you will have to make sure that you pass the Adapter a SurrealDBClient that is connected already. Below you can see an example how to do this.

Add the SurrealDB client​

Option 1/2 – Using RPC:​

import { Surreal } from "surrealdb.js";

const connectionString = ... // i.e. "http://0.0.0.0:8000"
const user = ...
const pass = ...
const ns = ...
const db = ...

const clientPromise = new Promise<Surreal>(async (resolve, reject) => {
const db = new Surreal();
try {
await db.connect(`${connectionString}/rpc`, {
ns, db, auth: { user, pass }
})
resolve(db)
} catch (e) {
reject(e)
}
})

// Export a module-scoped MongoClient promise. By doing this in a
// separate module, the client can be shared across functions.
export default clientPromise

Option 2/2 – Using HTTP:​

Usefull in serverlees environments like Vercel.

import { ExperimentalSurrealHTTP } from "surrealdb.js"

const connectionString = ... // i.e. "http://0.0.0.0:8000"
const user = ...
const pass = ...
const ns = ...
const db = ...

const clientPromise = new Promise<ExperimentalSurrealHTTP<typeof fetch>>(async (resolve, reject) => {
try {
const db = new ExperimentalSurrealHTTP(connectionString, {
fetch,
ns, db, auth: { user, pass }
})
resolve(db)
} catch (e) {
reject(e)
}
})

// Export a module-scoped MongoClient promise. By doing this in a
// separate module, the client can be shared across functions.
export default clientPromise

Configure Auth.js​

import NextAuth from "next-auth"
import { SurrealDBAdapter } from "@auth/surrealdb-adapter"
import clientPromise from "../../../lib/surrealdb"

// For more information on each option (and a full list of options) go to
// https://authjs.dev/reference/providers/oauth
export default NextAuth({
adapter: SurrealDBAdapter(clientPromise),
...
})

Type parameters​

β–ͺ T

Parameters​

β–ͺ client: Promise<WebSocketStrategy | HTTPStrategy<T>>

Returns​

Adapter