UNPKG

better-auth

Version:

The most comprehensive authentication framework for TypeScript.

73 lines (71 loc) 2.46 kB
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