better-auth
Version:
The most comprehensive authentication framework for TypeScript.
73 lines (71 loc) • 2.46 kB
JavaScript
import { Kysely, MssqlDialect, MysqlDialect, PostgresDialect, SqliteDialect } from "kysely";
//#region src/adapters/kysely-adapter/dialect.ts
function getKyselyDatabaseType(db) {
if (!db) return null;
if ("dialect" in db) return getKyselyDatabaseType(db.dialect);
if ("createDriver" in db) {
if (db instanceof SqliteDialect) return "sqlite";
if (db instanceof MysqlDialect) return "mysql";
if (db instanceof PostgresDialect) return "postgres";
if (db instanceof MssqlDialect) return "mssql";
}
if ("aggregate" in db) return "sqlite";
if ("getConnection" in db) return "mysql";
if ("connect" in db) return "postgres";
if ("fileControl" in db) return "sqlite";
if ("open" in db && "close" in db && "prepare" in db) return "sqlite";
return null;
}
const createKyselyAdapter = async (config) => {
const db = config.database;
if (!db) return {
kysely: null,
databaseType: null,
transaction: void 0
};
if ("db" in db) return {
kysely: db.db,
databaseType: db.type,
transaction: db.transaction
};
if ("dialect" in db) return {
kysely: new Kysely({ dialect: db.dialect }),
databaseType: db.type,
transaction: db.transaction
};
let dialect = void 0;
const databaseType = getKyselyDatabaseType(db);
if ("createDriver" in db) dialect = db;
if ("aggregate" in db && !("createSession" in db)) dialect = new SqliteDialect({ database: db });
if ("getConnection" in db) dialect = new MysqlDialect(db);
if ("connect" in db) dialect = new PostgresDialect({ pool: db });
if ("fileControl" in db) {
const { BunSqliteDialect } = await import("./bun-sqlite-dialect.mjs");
dialect = new BunSqliteDialect({ database: db });
}
if ("createSession" in db && typeof window === "undefined") {
let DatabaseSync = void 0;
try {
let nodeSqlite = "node:sqlite";
({DatabaseSync} = await import(
/* @vite-ignore */
/* webpackIgnore: true */
nodeSqlite
));
} catch (error) {
if (error !== null && typeof error === "object" && "code" in error && error.code !== "ERR_UNKNOWN_BUILTIN_MODULE") throw error;
}
if (DatabaseSync && db instanceof DatabaseSync) {
const { NodeSqliteDialect } = await import("./node-sqlite-dialect.mjs");
dialect = new NodeSqliteDialect({ database: db });
}
}
return {
kysely: dialect ? new Kysely({ dialect }) : null,
databaseType,
transaction: void 0
};
};
//#endregion
export { createKyselyAdapter, getKyselyDatabaseType };
//# sourceMappingURL=dialect.mjs.map