* feat: move adapters repo to new packages dir * fix: rm docusaurus build dir * fix: update .gitignore * fix: reorganise package directories * remove package lock files * fix: folder rename * remove package lock file * fix: jest config paths * update yarn.lock * ignore dynamodb local bin * fix: gitignore * fix: update adapter-test * change adapter-test package json * rename prisma adapter package name * fix paths * update gitignore * run tests with one concurrency * fix: merge conflicts * gitignore dist folders * fix: add jest.config.js to tsconfig ignore * fix: yarn.lock * fix: ignore pouch in turbo commands * ignore jest file * fix: test turbo test cmd * fix: turbo test cmd * test: disable mongodb-adapter temporarily * ignore all dev.db files * simplify gitignore * remove unused dependency * have tsconfig in its own package * remove unnecessary .gitignore files * move jest config to preset * add ts expect error comment * chore: update .gitignore * remove babelrc * don't depend on build for testing in turbo * fix: cleanup testing npm scripts * fix: remove jest-config roots * fix: add fauna jest preset * fix: rm dev.db from prisma mirgation * fix prisma * remove nohoist Co-authored-by: Balázs Orbán <info@balazsorban.com>
PouchDB Adapter - NextAuth.js
Open Source. Full Stack. Own Your Data.
Overview
This is the PouchDB Adapter for next-auth. This package can only be used in conjunction with the primary next-auth package. It is not a standalone package.
Depending on your architecture you can use PouchDB's http adapter to reach any database compliant with the CouchDB protocol (CouchDB, Cloudant, ...) or use any other PouchDB compatible adapter (leveldb, in-memory, ...)
Getting Started
- Install
next-authand@next-auth/pouchdb-adapter, as well aspouchdb.
Prerequesite: Your PouchDB instance MUST provide the
pouchdb-findplugin since it is used internally by the adapter to build and manage indexes
npm install next-auth @next-auth/pouchdb-adapter pouchdb
- Add this adapter to your
pages/api/[...nextauth].jsnext-auth configuration object.
import NextAuth from "next-auth"
import Providers from "next-auth/providers"
import { PouchDBAdapter } from "@next-auth/pouchdb-adapter"
import PouchDB from "pouchdb"
// Setup your PouchDB instance and database
PouchDB.plugin(require("pouchdb-adapter-leveldb")) // Or any other PouchDB-compliant adapter
.plugin(require("pouchdb-find")) // Don't forget the `pouchdb-find` plugin
const pouchdb = new PouchDB("auth_db", { adapter: "leveldb" })
// For more information on each option (and a full list of options) go to
// https://next-auth.js.org/configuration/options
export default NextAuth({
// https://next-auth.js.org/configuration/providers
providers: [
Providers.Google({
clientId: process.env.GOOGLE_ID,
clientSecret: process.env.GOOGLE_SECRET,
}),
],
adapter: PouchDBAdapter(pouchdb),
// ...
})
Advanced
Memory-First Caching Strategy
If you need to boost your authentication layer performance, you may use PouchDB's powerful sync features and various adapters, to build a memory-first caching strategy.
Use an in-memory PouchDB as your main authentication database, and synchronize it with any other persisted PouchDB. You may do a one way, one-off replication at startup from the persisted PouchDB into the in-memory PouchDB, then two-way, continuous, retriable sync.
This will probably not improve performance much in a serverless environment for various reasons such as concurrency, function startup time increases, etc.
For more details, please see https://pouchdb.com/api.html#sync
Contributing
We're open to all community contributions! If you'd like to contribute in any way, please read our Contributing Guide.
License
ISC
