Data Adapter
Defines how session data is stored.
const rp = await OidcClient.factory({ //... dataAdapter: OIDCClientDataAdapter, //...})- The package includes data adapters using SQLite/LokiJS/Lowdb/Redis.
- You can make your own adapters.
- SQLite with in-memory option is used by default.
- When using multiple OP, share a single data adapter.
- Ref: OIDCClientDataAdapter
SQLite
Use Bun built-in SQLite driver.
import { SQLiteAdapter } from 'elysia-openid-client/dataAdapters/SQLiteAdapter';
// In-memoryconst memoryAdapter = new SQLiteAdapter();// Same as `new SQLiteAdapter({ filename: ":memory:" })`
// Persistence to fileconst fileAdapter = new SQLiteAdapter({ filename: "path/to/sessions.sqlite"});LokiJS
Use LokiJS.
bun add lokijsbun add -D @types/lokijs// In-memoryimport { LokiInMemoryAdapter } from 'elysia-openid-client/dataAdapters/LokiInMemoryAdapter';const memoryAdapter = new LokiInMemoryAdapter();
// Persistence to fileimport { LokiFileAdapter } from 'elysia-openid-client/dataAdapters/LokiFileAdapter';const fileAdapter = await LokiFileAdapter.factory({ filename: "path/to/sessions.db"});Lowdb
Use Lowdb.
bun add lowdbimport { LowdbAdapter } from 'elysia-openid-client/dataAdapters/LowdbAdapter';
// In-memoryconst memoryAdapter = await LowdbAdapter.factory();
// Persistence to fileconst fileAdapter = await LowdbAdapter.factory({ filename: "sessions.json",})Redis
bun add ioredisimport { RedisAdapter } from 'elysia-openid-client/dataAdapters/RedisAdapter';const redisAdapter = new RedisAdapter({ port: 6379, host: "localhost",});Creating your own adapters
import type { OIDCClientDataAdapter } from 'elysia-openid-client';export class MyDataAdapter implements OIDCClientDataAdapter { // ...}
// app.tsimport { MyDataAdapter } from 'path/to/MyDataAdapter';const rp = await OidcClient.factory({ //... dataAdapter: new MyDataAdapter(), //...})