refactor: separate adapters into different packages (#7439)

This commit is contained in:
Alex Yang
2026-01-20 06:25:17 +00:00
committed by GitHub
parent dabed1ba06
commit 4bf407d161
98 changed files with 1240 additions and 214 deletions
+2 -2
View File
@@ -59,11 +59,11 @@ jobs:
sleep 10
- name: Test Adapters
working-directory: packages/better-auth
working-directory: e2e/adapter
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
run: pnpm test:adapters
run: pnpm test
- name: Stop Docker Containers
run: docker compose down
+1 -1
View File
@@ -20,6 +20,6 @@
"@/*": ["./src/*"]
}
},
"include": ["src"],
"include": ["./src"],
"references": [{ "path": "./tsconfig.node.json" }]
}
+33
View File
@@ -0,0 +1,33 @@
{
"name": "adapter",
"scripts": {
"test": "vitest",
"prepare": "prisma generate --schema ./test/prisma-adapter/base.prisma"
},
"private": true,
"devDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/drizzle-adapter": "workspace:*",
"@better-auth/kysely-adapter": "workspace:*",
"@better-auth/memory-adapter": "workspace:*",
"@better-auth/mongo-adapter": "workspace:*",
"@better-auth/prisma-adapter": "workspace:*",
"@prisma/client": "^5.22.0",
"@types/better-sqlite3": "^7.6.13",
"@types/pg": "^8.15.5",
"better-auth": "workspace:*",
"better-sqlite3": "^12.5.0",
"drizzle-kit": "^0.30.0",
"drizzle-orm": "^0.45.1",
"mongodb": "^7.0.0",
"mysql2": "^3.14.4",
"pg": "^8.16.3",
"prisma": "^5.22.0",
"tarn": "^3.0.2",
"tedious": "^18.6.1"
},
"dependencies": {
"deepmerge": "^4.3.1",
"kysely": "^0.28.5"
}
}
@@ -1,5 +1,6 @@
import { getAuthTables } from "../../db";
import { testAdapter } from "../test-adapter";
import { memoryAdapter } from "@better-auth/memory-adapter";
import { getAuthTables } from "better-auth/db";
import { testAdapter } from "./test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -7,8 +8,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../tests";
import { memoryAdapter } from "./memory-adapter";
} from "./tests";
let db: Record<string, any[]> = {};
@@ -1,4 +1,10 @@
import type { BetterAuthOptions } from "@better-auth/core";
import type {
Account,
Session,
User,
Verification,
} from "@better-auth/core/db";
import { getAuthTables } from "@better-auth/core/db";
import type { DBAdapter } from "@better-auth/core/db/adapter";
import {
@@ -8,9 +14,8 @@ import {
} from "@better-auth/core/db/adapter";
import { TTY_COLORS } from "@better-auth/core/env";
import { generateId } from "@better-auth/core/utils/id";
import { betterAuth } from "better-auth";
import { test } from "vitest";
import { betterAuth } from "../auth/full";
import type { Account, Session, User, Verification } from "../types";
import type { Logger } from "./test-adapter";
/**
@@ -1,8 +1,9 @@
import { execSync } from "node:child_process";
import { drizzleAdapter } from "@better-auth/drizzle-adapter";
import { drizzle } from "drizzle-orm/mysql2";
import { createPool } from "mysql2/promise";
import { assert } from "vitest";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -10,8 +11,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { drizzleAdapter } from "../drizzle-adapter";
} from "../tests";
import { generateDrizzleSchema, resetGenerationCount } from "./generate-schema";
const mysqlDB = createPool({
@@ -1,7 +1,8 @@
import { execSync } from "node:child_process";
import { drizzleAdapter } from "@better-auth/drizzle-adapter";
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -9,8 +10,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { drizzleAdapter } from "../drizzle-adapter";
} from "../tests";
import { generateDrizzleSchema, resetGenerationCount } from "./generate-schema";
const pgDB = new Pool({
@@ -1,9 +1,10 @@
import { execSync } from "node:child_process";
import fs from "node:fs/promises";
import path from "node:path";
import { drizzleAdapter } from "@better-auth/drizzle-adapter";
import Database from "better-sqlite3";
import { drizzle } from "drizzle-orm/better-sqlite3";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -11,8 +12,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { drizzleAdapter } from "../drizzle-adapter";
} from "../tests";
import {
clearSchemaCache,
generateDrizzleSchema,
@@ -2,7 +2,7 @@ import fs from "node:fs/promises";
import { join } from "node:path";
import type { BetterAuthOptions } from "@better-auth/core";
import type { DBAdapter } from "@better-auth/core/db/adapter";
import { drizzleAdapter } from "../drizzle-adapter";
import { drizzleAdapter } from "@better-auth/drizzle-adapter";
let generationCount = 0;
@@ -42,7 +42,10 @@ export const generateDrizzleSchema = async (
};
const { generateSchema } = (await i(
join(import.meta.dirname, "./../../../../../cli/src/generators/index"),
join(
import.meta.dirname,
"./../../../../packages/cli/src/generators/index",
),
)) as {
generateSchema: (opts: {
adapter: DBAdapter<BetterAuthOptions>;
@@ -1,8 +1,9 @@
import type { BetterAuthOptions } from "@better-auth/core";
import { kyselyAdapter } from "@better-auth/kysely-adapter";
import { getMigrations } from "better-auth/db/migration";
import { Kysely, PostgresDialect } from "kysely";
import { Pool } from "pg";
import { getMigrations } from "../../../db/get-migration";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -10,8 +11,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { kyselyAdapter } from "../kysely-adapter";
} from "../tests";
/**
* Test suite for PostgreSQL with custom (non-default) schema
@@ -1,9 +1,10 @@
import type { BetterAuthOptions } from "@better-auth/core";
import { kyselyAdapter } from "@better-auth/kysely-adapter";
import { getMigrations } from "better-auth/db/migration";
import { Kysely, MssqlDialect } from "kysely";
import * as Tarn from "tarn";
import * as Tedious from "tedious";
import { getMigrations } from "../../../db/get-migration";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -11,8 +12,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { kyselyAdapter } from "../kysely-adapter";
} from "../tests";
// We are not allowed to handle the mssql connection
// we must let kysely handle it. This is because if kysely is already
@@ -1,8 +1,9 @@
import { kyselyAdapter } from "@better-auth/kysely-adapter";
import { getMigrations } from "better-auth/db/migration";
import { Kysely, MysqlDialect } from "kysely";
import { createPool } from "mysql2/promise";
import { assert } from "vitest";
import { getMigrations } from "../../../db/get-migration";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -10,8 +11,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { kyselyAdapter } from "../kysely-adapter";
} from "../tests";
const mysqlDB = createPool({
uri: "mysql://user:password@localhost:3307/better_auth",
@@ -1,8 +1,9 @@
import type { BetterAuthOptions } from "@better-auth/core";
import { kyselyAdapter } from "@better-auth/kysely-adapter";
import { getMigrations } from "better-auth/db/migration";
import { Kysely, PostgresDialect } from "kysely";
import { Pool } from "pg";
import { getMigrations } from "../../../db/get-migration";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -10,8 +11,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { kyselyAdapter } from "../kysely-adapter";
} from "../tests";
import {
DEFAULT_SCHEMA_REFERENCE,
schemaRefJoinTestSuite,
@@ -1,9 +1,10 @@
import fs from "node:fs/promises";
import path from "node:path";
import { kyselyAdapter } from "@better-auth/kysely-adapter";
import { getMigrations } from "better-auth/db/migration";
import Database from "better-sqlite3";
import { Kysely, SqliteDialect } from "kysely";
import { getMigrations } from "../../../db/get-migration";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -11,8 +12,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { kyselyAdapter } from "../kysely-adapter";
} from "../tests";
const dbPath = path.join(__dirname, "test.db");
let database = new Database(dbPath);
@@ -1,12 +1,12 @@
import type { DatabaseSync } from "node:sqlite";
import type { BetterAuthOptions } from "@better-auth/core";
import { kyselyAdapter } from "@better-auth/kysely-adapter";
import { NodeSqliteDialect } from "@better-auth/kysely-adapter/node-sqlite-dialect";
import { getMigrations } from "better-auth/db/migration";
import merge from "deepmerge";
import { Kysely, sql } from "kysely";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { getMigrations } from "../../../db/get-migration";
import { runAdapterTest } from "../../test";
import { kyselyAdapter } from "../kysely-adapter";
import { NodeSqliteDialect } from "../node-sqlite-dialect";
import { runAdapterTest } from "../test";
const nodeVersion = process.version;
const nodeSqliteSupported = +nodeVersion.split(".")[0]!.slice(1) >= 22;
@@ -1,6 +1,6 @@
import type { BetterAuthOptions } from "../../../types";
import { createTestSuite } from "../../create-test-suite";
import { getNormalTestSuiteTests } from "../../tests";
import type { BetterAuthOptions } from "@better-auth/core";
import { createTestSuite } from "../create-test-suite";
import { getNormalTestSuiteTests } from "../tests";
export const DEFAULT_SCHEMA_REFERENCE = "internal";
@@ -1,3 +1,4 @@
import { mongodbAdapter } from "@better-auth/mongo-adapter";
import { MongoClient, ObjectId } from "mongodb";
import { testAdapter } from "../test-adapter";
import {
@@ -6,7 +7,6 @@ import {
normalTestSuite,
transactionsTestSuite,
} from "../tests";
import { mongodbAdapter } from "./mongodb-adapter";
const dbClient = async (connectionString: string, dbName: string) => {
const client = new MongoClient(connectionString);
@@ -2,8 +2,8 @@ import fs from "node:fs/promises";
import { join } from "node:path";
import type { BetterAuthOptions } from "@better-auth/core";
import type { DBAdapter } from "@better-auth/core/db/adapter";
import { prismaAdapter } from "@better-auth/prisma-adapter";
import type { PrismaClient } from "@prisma/client";
import { prismaAdapter } from "../prisma-adapter";
export async function generatePrismaSchema(
betterAuthOptions: BetterAuthOptions,
@@ -13,7 +13,10 @@ export async function generatePrismaSchema(
) {
const i = async (x: string) => await import(x);
const { generateSchema } = (await i(
join(import.meta.dirname, "./../../../../../cli/src/generators/index"),
join(
import.meta.dirname,
"./../../../../packages/cli/src/generators/index",
),
)) as {
generateSchema: (opts: {
adapter: DBAdapter<BetterAuthOptions>;
@@ -1,6 +1,7 @@
import type { BetterAuthOptions } from "@better-auth/core";
import { prismaAdapter } from "@better-auth/prisma-adapter";
import { createPool } from "mysql2/promise";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -8,8 +9,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { prismaAdapter } from "../prisma-adapter";
} from "../tests";
import { generateAuthConfigFile } from "./generate-auth-config";
import { generatePrismaSchema } from "./generate-prisma-schema";
import {
@@ -1,6 +1,7 @@
import type { BetterAuthOptions } from "@better-auth/core";
import { prismaAdapter } from "@better-auth/prisma-adapter";
import { Pool } from "pg";
import { testAdapter } from "../../test-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -8,8 +9,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { prismaAdapter } from "../prisma-adapter";
} from "../tests";
import { generateAuthConfigFile } from "./generate-auth-config";
import { generatePrismaSchema } from "./generate-prisma-schema";
import {
@@ -1,7 +1,8 @@
import fs from "node:fs/promises";
import { join } from "node:path";
import type { BetterAuthOptions } from "@better-auth/core";
import { testAdapter } from "../../test-adapter";
import { prismaAdapter } from "@better-auth/prisma-adapter";
import { testAdapter } from "../test-adapter";
import {
authFlowTestSuite,
joinsTestSuite,
@@ -9,8 +10,7 @@ import {
numberIdTestSuite,
transactionsTestSuite,
uuidTestSuite,
} from "../../tests";
import { prismaAdapter } from "../prisma-adapter";
} from "../tests";
import { generateAuthConfigFile } from "./generate-auth-config";
import { generatePrismaSchema } from "./generate-prisma-schema";
import {
@@ -2,8 +2,8 @@ import type { Awaitable, BetterAuthOptions } from "@better-auth/core";
import type { DBAdapter } from "@better-auth/core/db/adapter";
import { deepmerge, initGetModelName } from "@better-auth/core/db/adapter";
import { TTY_COLORS } from "@better-auth/core/env";
import { getAuthTables } from "better-auth/db";
import { afterAll, beforeAll, describe } from "vitest";
import { getAuthTables } from "../db";
import type { createTestSuite, TestSuiteStats } from "./create-test-suite";
export type Logger = {
@@ -1,8 +1,8 @@
import type { Awaitable, BetterAuthOptions } from "@better-auth/core";
import type { User } from "@better-auth/core/db";
import type { DBAdapter } from "@better-auth/core/db/adapter";
import { generateId } from "@better-auth/core/utils/id";
import { beforeAll, describe, expect, test } from "vitest";
import type { User } from "../types";
interface AdapterTestOptions {
getAdapter: (
@@ -1,4 +1,5 @@
import type { BetterAuthOptions } from "@better-auth/core";
import type { User } from "@better-auth/core/db";
import type {
AdapterFactoryConfig,
AdapterFactoryCustomizeAdapterCreator,
@@ -6,9 +7,8 @@ import type {
Where,
} from "@better-auth/core/db/adapter";
import { createAdapterFactory } from "@better-auth/core/db/adapter";
import { betterAuth } from "better-auth";
import { describe, expect, test } from "vitest";
import { betterAuth } from "../../auth/full";
import type { User } from "../../types";
/*
@@ -1,6 +1,6 @@
import type { Session, User } from "@better-auth/core/db";
import { setCookieToHeader } from "better-auth/cookies";
import { expect } from "vitest";
import { setCookieToHeader } from "../../cookies";
import type { Session, User } from "../../types";
import { createTestSuite } from "../create-test-suite";
/**
@@ -1,8 +1,13 @@
import type { BetterAuthPlugin } from "@better-auth/core";
import type { Account, Session, User } from "@better-auth/core/db";
import type {
Invitation,
Member,
Organization,
Team,
} from "better-auth/plugins/organization";
import { organization } from "better-auth/plugins/organization";
import { expect } from "vitest";
import type { Invitation, Member, Organization, Team } from "../../plugins";
import { organization } from "../../plugins";
import type { Account, Session, User } from "../../types";
import { createTestSuite } from "../create-test-suite";
/**
+30
View File
@@ -0,0 +1,30 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"lib": ["esnext", "dom", "dom.iterable"],
"types": ["node", "bun"]
},
"references": [
{
"path": "../../packages/better-auth/tsconfig.json"
},
{
"path": "../../packages/core/tsconfig.json"
},
{
"path": "../../packages/drizzle-adapter/tsconfig.json"
},
{
"path": "../../packages/kysely-adapter/tsconfig.json"
},
{
"path": "../../packages/memory-adapter/tsconfig.json"
},
{
"path": "../../packages/mongo-adapter/tsconfig.json"
},
{
"path": "../../packages/prisma-adapter/tsconfig.json"
}
]
}
+3
View File
@@ -0,0 +1,3 @@
import { defineProject } from "vitest/config";
export default defineProject({});
+3
View File
@@ -11,6 +11,9 @@
"project": ["src/**/*.ts!"],
"ignoreDependencies": ["@better-auth/core"]
},
"packages/prisma-adapter": {
"ignoreDependencies": ["@prisma/client", "prisma"]
},
"packages/better-auth": {
"project": [
"src/**/*.ts!",
+1
View File
@@ -41,6 +41,7 @@
"@types/bun": "^1.3.6",
"@types/node": "^25.0.9",
"@vitest/coverage-istanbul": "catalog:vitest",
"@vitest/ui": "catalog:vitest",
"bumpp": "^10.4.0",
"cspell": "^9.6.0",
"knip": "^5.82.1",
+5 -13
View File
@@ -30,7 +30,6 @@
"lint:package": "publint run --strict",
"lint:types": "attw --profile esm-only --pack .",
"test:adapters": "vitest run --config vitest.config.adapters.ts",
"prepare": "prisma generate --schema ./src/adapters/prisma-adapter/test/base.prisma",
"typecheck": "tsc --project tsconfig.json"
},
"files": [
@@ -195,11 +194,6 @@
"types": "./dist/adapters/memory-adapter/index.d.mts",
"default": "./dist/adapters/memory-adapter/index.mjs"
},
"./adapters/test": {
"dev-source": "./src/adapters/test.ts",
"types": "./dist/adapters/test.d.mts",
"default": "./dist/adapters/test.mjs"
},
"./adapters": {
"dev-source": "./src/adapters/index.ts",
"types": "./dist/adapters/index.d.mts",
@@ -478,6 +472,11 @@
},
"dependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/drizzle-adapter": "workspace:*",
"@better-auth/kysely-adapter": "workspace:*",
"@better-auth/memory-adapter": "workspace:*",
"@better-auth/mongo-adapter": "workspace:*",
"@better-auth/prisma-adapter": "workspace:*",
"@better-auth/telemetry": "workspace:*",
"@better-auth/utils": "catalog:",
"@better-fetch/fetch": "catalog:",
@@ -492,7 +491,6 @@
},
"devDependencies": {
"@lynx-js/react": "^0.115.4",
"@prisma/client": "^5.22.0",
"@sveltejs/kit": "^2.49.5",
"@tanstack/react-start": "^1.151.2",
"@tanstack/solid-start": "^1.151.2",
@@ -502,17 +500,11 @@
"@types/react": "catalog:react19",
"better-sqlite3": "^12.4.1",
"deepmerge": "^4.3.1",
"drizzle-kit": "^0.31.4",
"drizzle-orm": "^0.41.0",
"happy-dom": "^20.0.10",
"listhen": "^1.9.0",
"mongodb": "^6.18.0",
"msw": "^2.12.4",
"mysql2": "^3.14.4",
"next": "^16.1.1",
"oauth2-mock-server": "^7.2.1",
"pg": "^8.16.3",
"prisma": "^5.22.0",
"react": "catalog:react19",
"react-dom": "catalog:react19",
"solid-js": "^1.9.8",
@@ -1 +1 @@
export * from "./drizzle-adapter";
export * from "@better-auth/drizzle-adapter";
@@ -1,5 +1 @@
export * from "./dialect";
export * from "./kysely-adapter";
export * from "./types";
// Don't export node:sqlite by default, as it is not production ready.
// export * from "./node-sqlite";
export * from "@better-auth/kysely-adapter";
@@ -1 +1 @@
export * from "./memory-adapter";
export * from "@better-auth/memory-adapter";
@@ -1 +1 @@
export * from "./mongodb-adapter";
export * from "@better-auth/mongo-adapter";
@@ -1 +1 @@
export * from "./prisma-adapter";
export * from "@better-auth/prisma-adapter";
@@ -1,8 +1,8 @@
import type { GenericEndpointContext } from "@better-auth/core";
import { runWithEndpointContext } from "@better-auth/core/context";
import type { MemoryDB } from "@better-auth/memory-adapter";
import { memoryAdapter } from "@better-auth/memory-adapter";
import { beforeEach, describe, expect, expectTypeOf, it, vi } from "vitest";
import type { MemoryDB } from "../../adapters/memory-adapter";
import { memoryAdapter } from "../../adapters/memory-adapter";
import { parseCookies, parseSetCookieHeader } from "../../cookies";
import { signJWT, verifyJWT } from "../../crypto";
import { getTestInstance } from "../../test-utils/test-instance";
@@ -1,6 +1,6 @@
import { memoryAdapter } from "@better-auth/memory-adapter";
import Database from "better-sqlite3";
import { describe, expect, expectTypeOf, it } from "vitest";
import { memoryAdapter } from "../adapters/memory-adapter/memory-adapter";
import type { Auth } from "../types";
import { betterAuth } from "./minimal";
@@ -1,5 +1,5 @@
import { memoryAdapter } from "@better-auth/memory-adapter";
import { describe, expect, it } from "vitest";
import { memoryAdapter } from "../adapters/memory-adapter";
import { initMinimal } from "./init-minimal";
describe("init-minimal (without Kysely)", () => {
+1 -1
View File
@@ -1,5 +1,5 @@
import { BetterAuthError } from "@better-auth/core/error";
import { getKyselyDatabaseType } from "../adapters/kysely-adapter/dialect";
import { getKyselyDatabaseType } from "@better-auth/kysely-adapter";
import { getAdapter } from "../db/adapter-kysely";
import { getMigrations } from "../db/get-migration";
import type { BetterAuthOptions } from "../types";
+2 -2
View File
@@ -2,7 +2,7 @@ import type { BetterAuthOptions } from "@better-auth/core";
import { getAuthTables } from "@better-auth/core/db";
import type { DBAdapter } from "@better-auth/core/db/adapter";
import { logger } from "@better-auth/core/env";
import type { MemoryDB } from "../adapters/memory-adapter";
import type { MemoryDB } from "@better-auth/memory-adapter";
export async function getBaseAdapter(
options: BetterAuthOptions,
@@ -18,7 +18,7 @@ export async function getBaseAdapter(
acc[key] = [];
return acc;
}, {});
const { memoryAdapter } = await import("../adapters/memory-adapter");
const { memoryAdapter } = await import("@better-auth/memory-adapter");
adapter = memoryAdapter(memoryDB)(options);
} else if (typeof options.database === "function") {
adapter = options.database(options);
+2 -2
View File
@@ -6,6 +6,8 @@ import {
initGetModelName,
} from "@better-auth/core/db/adapter";
import { createLogger } from "@better-auth/core/env";
import type { KyselyDatabaseType } from "@better-auth/kysely-adapter";
import { createKyselyAdapter } from "@better-auth/kysely-adapter";
import type {
AlterTableBuilder,
AlterTableColumnAlteringBuilder,
@@ -16,8 +18,6 @@ import type {
RawBuilder,
} from "kysely";
import { sql } from "kysely";
import { createKyselyAdapter } from "../adapters/kysely-adapter/dialect";
import type { KyselyDatabaseType } from "../adapters/kysely-adapter/types";
import { getSchema } from "./get-schema";
const postgresMap = {
@@ -1,7 +1,7 @@
import type { APIError } from "@better-auth/core/error";
import { memoryAdapter } from "@better-auth/memory-adapter";
import type { Prettify } from "better-call";
import { describe, expect, expectTypeOf, it } from "vitest";
import { memoryAdapter } from "../../adapters/memory-adapter";
import type {
BetterFetchError,
PreinitializedWritableAtom,
+15
View File
@@ -10,6 +10,21 @@
},
{
"path": "../telemetry/tsconfig.json"
},
{
"path": "../drizzle-adapter/tsconfig.json"
},
{
"path": "../kysely-adapter/tsconfig.json"
},
{
"path": "../memory-adapter/tsconfig.json"
},
{
"path": "../mongo-adapter/tsconfig.json"
},
{
"path": "../prisma-adapter/tsconfig.json"
}
]
}
-1
View File
@@ -17,7 +17,6 @@ export default defineConfig({
"./src/adapters/mongodb-adapter/index.ts",
"./src/adapters/kysely-adapter/index.ts",
"./src/adapters/memory-adapter/index.ts",
"./src/adapters/test.ts",
"./src/adapters/index.ts",
"./src/db/index.ts",
"./src/db/adapter-kysely.ts",
+34
View File
@@ -0,0 +1,34 @@
{
"name": "@better-auth/drizzle-adapter",
"version": "1.5.0-beta.8",
"description": "Drizzle adapter for Better Auth",
"type": "module",
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.mts",
"exports": {
".": {
"dev-source": "./src/index.ts",
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "tsdown",
"dev": "tsdown --watch",
"test": "vitest",
"typecheck": "tsc --noEmit"
},
"peerDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"drizzle-orm": "^0.30.0"
},
"devDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"drizzle-orm": "^0.30.0",
"tsdown": "catalog:",
"typescript": "catalog:"
}
}
@@ -0,0 +1,17 @@
import { describe, expect, it } from "vitest";
import { drizzleAdapter } from "./drizzle-adapter";
describe("drizzle-adapter", () => {
it("should create drizzle adapter", () => {
const db = {
_: {
fullSchema: {},
},
} as any;
const config = {
provider: "sqlite" as const,
};
const adapter = drizzleAdapter(db, config);
expect(adapter).toBeDefined();
});
});
+1
View File
@@ -0,0 +1 @@
export * from "./drizzle-adapter";
+9
View File
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.base.json",
"include": ["./src"],
"references": [
{
"path": "../core/tsconfig.json"
}
]
}
@@ -0,0 +1,7 @@
import { defineConfig } from "tsdown";
export default defineConfig({
dts: { build: true, incremental: true },
format: ["esm"],
entry: ["./src/index.ts"],
});
@@ -0,0 +1,3 @@
import { defineProject } from "vitest/config";
export default defineProject({});
+39
View File
@@ -0,0 +1,39 @@
{
"name": "@better-auth/kysely-adapter",
"version": "1.5.0-beta.8",
"description": "Kysely adapter for Better Auth",
"type": "module",
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.mts",
"exports": {
".": {
"dev-source": "./src/index.ts",
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
},
"./node-sqlite-dialect": {
"dev-source": "./src/node-sqlite-dialect.ts",
"types": "./dist/node-sqlite-dialect.d.mts",
"default": "./dist/node-sqlite-dialect.mjs"
}
},
"scripts": {
"build": "tsdown",
"dev": "tsdown --watch",
"test": "vitest",
"typecheck": "tsc --noEmit"
},
"peerDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"kysely": "^0.27.0 || ^0.28.0"
},
"devDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"kysely": "^0.28.5",
"tsdown": "catalog:",
"typescript": "catalog:"
}
}
+5
View File
@@ -0,0 +1,5 @@
export * from "./dialect";
export * from "./kysely-adapter";
export * from "./types";
// Don't export node:sqlite by default, as it is not production ready.
// export * from "./node-sqlite";
@@ -0,0 +1,24 @@
import { Kysely, SqliteDialect } from "kysely";
import { describe, expect, it } from "vitest";
import { kyselyAdapter } from "./kysely-adapter";
describe("kysely-adapter", () => {
it("should create kysely adapter", () => {
const db = new Kysely({
dialect: new SqliteDialect({
database: {
close: () => {},
prepare: () =>
({
all: () => [],
run: () => {},
get: () => {},
iterate: () => [],
}) as any,
} as any,
}),
});
const adapter = kyselyAdapter(db);
expect(adapter).toBeDefined();
});
});
+9
View File
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.base.json",
"include": ["./src"],
"references": [
{
"path": "../core/tsconfig.json"
}
]
}
+7
View File
@@ -0,0 +1,7 @@
import { defineConfig } from "tsdown";
export default defineConfig({
dts: { build: true, incremental: true },
format: ["esm"],
entry: ["./src/index.ts", "./src/node-sqlite-dialect.ts"],
});
+3
View File
@@ -0,0 +1,3 @@
import { defineProject } from "vitest/config";
export default defineProject({});
+32
View File
@@ -0,0 +1,32 @@
{
"name": "@better-auth/memory-adapter",
"version": "1.5.0-beta.8",
"description": "Memory adapter for Better Auth",
"type": "module",
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.mts",
"exports": {
".": {
"dev-source": "./src/index.ts",
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "tsdown",
"dev": "tsdown --watch",
"test": "vitest",
"typecheck": "tsc --noEmit"
},
"peerDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0"
},
"devDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"tsdown": "catalog:",
"typescript": "catalog:"
}
}
+5
View File
@@ -0,0 +1,5 @@
export {
type MemoryAdapterConfig,
type MemoryDB,
memoryAdapter,
} from "./memory-adapter";
+9
View File
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.base.json",
"include": ["./src"],
"references": [
{
"path": "../core/tsconfig.json"
}
]
}
+7
View File
@@ -0,0 +1,7 @@
import { defineConfig } from "tsdown";
export default defineConfig({
dts: { build: true, incremental: true },
format: ["esm"],
entry: ["./src/index.ts"],
});
+3
View File
@@ -0,0 +1,3 @@
import { defineProject } from "vitest/config";
export default defineProject({});
+34
View File
@@ -0,0 +1,34 @@
{
"name": "@better-auth/mongo-adapter",
"version": "1.5.0-beta.8",
"description": "Mongo adapter for Better Auth",
"type": "module",
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.mts",
"exports": {
".": {
"dev-source": "./src/index.ts",
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "tsdown",
"dev": "tsdown --watch",
"test": "vitest",
"typecheck": "tsc --noEmit"
},
"peerDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"mongodb": "^6.0.0 || ^7.0.0"
},
"devDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"mongodb": "^7.0.0",
"tsdown": "catalog:",
"typescript": "catalog:"
}
}
+1
View File
@@ -0,0 +1 @@
export * from "./mongodb-adapter";
@@ -0,0 +1,12 @@
import { describe, expect, it, vi } from "vitest";
import { mongodbAdapter } from "./mongodb-adapter";
describe("mongodb-adapter", () => {
it("should create mongodb adapter", () => {
const db = {
collection: vi.fn(),
} as any;
const adapter = mongodbAdapter(db);
expect(adapter).toBeDefined();
});
});
+9
View File
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.base.json",
"include": ["./src"],
"references": [
{
"path": "../core/tsconfig.json"
}
]
}
+7
View File
@@ -0,0 +1,7 @@
import { defineConfig } from "tsdown";
export default defineConfig({
dts: { build: true, incremental: true },
format: ["esm"],
entry: ["./src/index.ts"],
});
+3
View File
@@ -0,0 +1,3 @@
import { defineProject } from "vitest/config";
export default defineProject({});
+38
View File
@@ -0,0 +1,38 @@
{
"name": "@better-auth/prisma-adapter",
"version": "1.5.0-beta.8",
"description": "Prisma adapter for Better Auth",
"type": "module",
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.mts",
"exports": {
".": {
"dev-source": "./src/index.ts",
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "tsdown",
"dev": "tsdown --watch",
"test": "vitest",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@prisma/client": "^5.0.0"
},
"peerDependencies": {
"@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"prisma": "^5.0.0 || ^6.0.0 || ^7.0.0"
},
"devDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.0",
"prisma": "^5.0.0",
"tsdown": "catalog:",
"typescript": "catalog:"
}
}
+1
View File
@@ -0,0 +1 @@
export * from "./prisma-adapter";
@@ -0,0 +1,14 @@
import { describe, expect, it, vi } from "vitest";
import { prismaAdapter } from "./prisma-adapter";
describe("prisma-adapter", () => {
it("should create prisma adapter", () => {
const prisma = {
$transaction: vi.fn(),
} as any;
const adapter = prismaAdapter(prisma, {
provider: "sqlite",
});
expect(adapter).toBeDefined();
});
});
+9
View File
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.base.json",
"include": ["./src"],
"references": [
{
"path": "../core/tsconfig.json"
}
]
}
+7
View File
@@ -0,0 +1,7 @@
import { defineConfig } from "tsdown";
export default defineConfig({
dts: { build: true, incremental: true },
format: ["esm"],
entry: ["./src/index.ts"],
});
+3
View File
@@ -0,0 +1,3 @@
import { defineProject } from "vitest/config";
export default defineProject({});
+683 -113
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -25,6 +25,7 @@ catalogs:
tailwindcss-animate: ^1.0.7
vitest:
'@vitest/coverage-istanbul': ^4.0.17
'@vitest/ui': ^4.0.17
vitest: ^4.0.17
neverBuiltDependencies: []
+15
View File
@@ -30,6 +30,21 @@
{
"path": "./packages/telemetry/tsconfig.json"
},
{
"path": "./packages/prisma-adapter/tsconfig.json"
},
{
"path": "./packages/mongo-adapter/tsconfig.json"
},
{
"path": "./packages/memory-adapter/tsconfig.json"
},
{
"path": "./packages/drizzle-adapter/tsconfig.json"
},
{
"path": "./packages/kysely-adapter/tsconfig.json"
},
{
"path": "./test/tsconfig.json"
}