@igniter-js/plugin-better-auth
Version:
Igniter.js plugin that wires BetterAuth API into an 'auth' controller automatically.
67 lines (48 loc) • 2.07 kB
Markdown
# @igniter-js/plugin-better-auth
Type-safe Igniter.js plugin that wires BetterAuth's `api` surface into an `auth` controller automatically.
Status: scaffold. It creates an `auth` controller and dynamically maps methods discovered under `auth.api` into Igniter actions. The mapping is conservative and can be refined once the exact BetterAuth API shape is confirmed.
## Install
```
npm i @igniter-js/plugin-better-auth better-auth
```
Peer dependency `@igniter-js/core` must be available in your workspace.
## Quick Start
```ts
import { Igniter } from '@igniter-js/core'
import { createBetterAuthPlugin } from '@igniter-js/plugin-better-auth'
import { betterAuth } from 'better-auth'
const auth = betterAuth({ /* your config */ })
const { plugin, controllers } = createBetterAuthPlugin(auth)
// Attach the plugin and auto-register the typed `auth` controller
const igniter = Igniter
.addPlugin('betterAuth', plugin, controllers)
.create()
// Merge with your own controllers as usual
const router = igniter.router({
controllers: {
// ...your controllers
}
})
// Typed DX: router.caller.auth.<action>()
// Action names come from `auth.api`:
// - Direct functions → <key> (POST)
// - Method groups { get, post, ... } → <key>_get | <key>_post | ...
```
## Configuration
```ts
createBetterAuthPlugin({
auth, // required BetterAuth instance
controllerName: 'auth',
pluginName: 'better-auth'
})
```
## How Mapping Works
- It inspects top-level keys under `auth.api`.
- If it finds REST-like method containers (e.g. `{ get, post, put, delete, patch }`), it creates an action per method: `<key>_get`, `<key>_post`, ...
- If it finds a function, it creates a `POST` action named `<key>`.
- Action path is `/<key>` inside the `auth` controller, so HTTP endpoints look like `/api/v1/auth/<key>`.
Notes:
- Input types are inferred from the function signature and wired to the Igniter action `$Input` via a virtual schema.
- You can refine/extend mapping or schemas later without changing your Igniter app code.
## License
MIT