UNPKG

@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
# @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