JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 11
  • Score
    100M100P100Q27190F
  • License MIT

A better authentication validator

Package Exports

  • validator-better-auth
  • validator-better-auth/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (validator-better-auth) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

validator-better-auth

A plugin for Better Auth that enables schema validation using Zod, Yup, and Valibot, or any other schema validator. It simplifies input validation for authentication flows.

Features

  • Supports Multiple Validators: Use Zod, Yup, or Valibot or any other schema validator for schema validation.
  • Middleware Integration: Easily integrates with Better Auth as a validation plugin.
  • Type-Safe & Error Handling: Provides structured validation error messages.

Installation

npm install validator-better-auth
# or
yarn add validator-better-auth
# or
pnpm add validator-better-auth
# or
bun add validator-better-auth

Usage

Using the Validator Middleware

Integrate the validator into Better Auth with schema validation for requests.

import { betterAuth } from "better-auth";
import { validator } from "validator-better-auth";
import { z } from "zod";

// Define a Zod schema
const signupSchema = z.object({
  name: z.string(),
  email: z.string().email(),
  password: z.string().min(12),
});

// Register validator plugin
betterAuth({
  plugins: [
    validator({
      middlewares: [
        { path: "/sign-up/email", schemas: { body: signupSchema } },
      ],
    }),
  ],
});

Testing Example

Running Validation with Different Schema Validators

import { betterAuth } from "better-auth";
import * as v from "valibot"; // 1.24 kB
import { describe, it } from "vitest";
import * as y from "yup";
import { z } from "zod";

import { validator } from "./validator";

describe("validator", () => {
  it("initializes without errors with Zod", () => {
    const signupSchema = z.object({
      name: z.string(),
      email: z.string().email(),
      password: z.string().min(12),
    });

    betterAuth({
      plugins: [
        validator({
          middlewares: [
            { path: "/sign-up/email", schemas: { body: signupSchema } },
          ],
        }),
      ],
    });
  });

  it("initializes without errors with Yup", () => {
    const signupSchema = y.object().shape({
      name: y.string().required(),
      email: y.string().email().required(),
      password: y.string().min(12).required(),
    });

    betterAuth({
      plugins: [
        validator({
          middlewares: [
            { path: "/sign-up/email", schemas: { body: signupSchema } },
          ],
        }),
      ],
    });
  });

  it("initializes without errors with Valibot", () => {
    const signupSchema = v.object({
      name: v.string(),
      email: v.pipe(v.string(), v.email()),
      password: v.pipe(v.string(), v.minLength(12)),
    });

    betterAuth({
      plugins: [
        validator({
          middlewares: [
            { path: "/sign-up/email", schemas: { body: signupSchema } },
          ],
        }),
      ],
    });
  });
});

File Structure

. 📂 validator-better-auth
├── 📄 CHANGELOG.md
├── 📄 README.md
├── 📄 eslint.config.js
├── 📄 package.json
├── 📄 pnpm-lock.yaml
└── 📂 src/
└── 📂 core/
├── 📄 index.ts
└── 📂 standard-validate/
├── 📄 index.ts
├── 📄 standard-validate.test.ts
├── 📄 standard-validate.types.ts
├── 📄 validator.test.ts
├── 📄 validator.ts
├── 📄 validator.types.ts
├── 📄 index.ts
└── 📄 tsconfig.json

Contributing

Contributions are welcome! Please check our CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License. See the LICENSE file for details.