@better-auth/kysely-adapter 1.5.0-beta.13 → 1.5.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,24 +1,21 @@
1
1
 
2
- > @better-auth/kysely-adapter@1.5.0-beta.13 build /home/runner/work/better-auth/better-auth/packages/kysely-adapter
2
+ > @better-auth/kysely-adapter@1.5.0-beta.16 build /home/runner/work/better-auth/better-auth/packages/kysely-adapter
3
3
  > tsdown
4
4
 
5
- ℹ tsdown v0.20.1 powered by rolldown v1.0.0-rc.1
5
+ ℹ tsdown v0.20.3 powered by rolldown v1.0.0-rc.3
6
6
  ℹ config file: /home/runner/work/better-auth/better-auth/packages/kysely-adapter/tsdown.config.ts
7
7
  ℹ entry: src/index.ts, src/node-sqlite-dialect.ts
8
8
  ℹ tsconfig: tsconfig.json
9
9
  ℹ Build start
10
10
  ℹ dist/index.mjs 15.47 kB │ gzip: 3.60 kB
11
- ℹ dist/node-sqlite-dialect.mjs  4.17 kB │ gzip: 1.43 kB
11
+ ℹ dist/node-sqlite-dialect.mjs  4.16 kB │ gzip: 1.43 kB
12
12
  ℹ dist/index.mjs.map 36.76 kB │ gzip: 8.45 kB
13
13
  ℹ dist/node-sqlite-dialect.mjs.map 10.78 kB │ gzip: 3.44 kB
14
- ℹ dist/bun-sqlite-dialect-C5Kb-7gz.mjs.map 10.77 kB │ gzip: 3.46 kB
15
- ℹ dist/bun-sqlite-dialect-C5Kb-7gz.mjs  4.17 kB │ gzip: 1.45 kB
14
+ ℹ dist/bun-sqlite-dialect-C8OaCWSL.mjs.map 10.77 kB │ gzip: 3.46 kB
15
+ ℹ dist/bun-sqlite-dialect-C8OaCWSL.mjs  4.16 kB │ gzip: 1.44 kB
16
16
  ℹ dist/index.d.mts  1.65 kB │ gzip: 0.62 kB
17
17
  ℹ dist/node-sqlite-dialect.d.mts  0.94 kB │ gzip: 0.46 kB
18
- ℹ 8 files, total: 84.71 kB
19
- [PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:
20
- - rolldown-plugin-dts:generate (67%)
21
- - tsdown:external (33%)
22
- See https://rolldown.rs/options/checks#plugintimings for more details.
18
+ ℹ 8 files, total: 84.68 kB
19
+ [PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `rolldown-plugin-dts:generate`. See https://rolldown.rs/options/checks#plugintimings for more details.
23
20
 
24
- ✔ Build complete in 10214ms
21
+ ✔ Build complete in 10333ms
@@ -1,4 +1,4 @@
1
- import { CompiledQuery, DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, DefaultQueryCompiler, sql as sql$1 } from "kysely";
1
+ import { CompiledQuery, DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, DefaultQueryCompiler, sql } from "kysely";
2
2
 
3
3
  //#region src/bun-sqlite-dialect.ts
4
4
  var BunSqliteAdapter = class {
@@ -102,7 +102,7 @@ var BunSqliteIntrospector = class {
102
102
  const autoIncrementCol = (await db.selectFrom("sqlite_master").where("name", "=", table).select("sql").$castTo().execute())[0]?.sql?.split(/[\(\),]/)?.find((it) => it.toLowerCase().includes("autoincrement"))?.split(/\s+/)?.[0]?.replace(/["`]/g, "");
103
103
  return {
104
104
  name: table,
105
- columns: (await db.selectFrom(sql$1`pragma_table_info(${table})`.as("table_info")).select([
105
+ columns: (await db.selectFrom(sql`pragma_table_info(${table})`.as("table_info")).select([
106
106
  "name",
107
107
  "type",
108
108
  "notnull",
@@ -153,4 +153,4 @@ var BunSqliteDialect = class {
153
153
 
154
154
  //#endregion
155
155
  export { BunSqliteDialect };
156
- //# sourceMappingURL=bun-sqlite-dialect-C5Kb-7gz.mjs.map
156
+ //# sourceMappingURL=bun-sqlite-dialect-C8OaCWSL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bun-sqlite-dialect-C5Kb-7gz.mjs","names":["#config","#connectionMutex","#db","#connection","#promise","#resolve","#getTableMetadata"],"sources":["../src/bun-sqlite-dialect.ts"],"sourcesContent":["/**\n * @see {@link https://github.com/dylanblokhuis/kysely-bun-sqlite} - Fork of the original kysely-bun-sqlite package by @dylanblokhuis\n */\n\nimport type { Database } from \"bun:sqlite\";\nimport type {\n\tDatabaseConnection,\n\tDatabaseIntrospector,\n\tDatabaseMetadata,\n\tDatabaseMetadataOptions,\n\tDialect,\n\tDialectAdapter,\n\tDialectAdapterBase,\n\tDriver,\n\tKysely,\n\tQueryCompiler,\n\tQueryResult,\n\tSchemaMetadata,\n\tTableMetadata,\n} from \"kysely\";\nimport {\n\tCompiledQuery,\n\tDEFAULT_MIGRATION_LOCK_TABLE,\n\tDEFAULT_MIGRATION_TABLE,\n\tDefaultQueryCompiler,\n\tsql,\n} from \"kysely\";\n\nclass BunSqliteAdapter implements DialectAdapterBase {\n\tget supportsCreateIfNotExists(): boolean {\n\t\treturn true;\n\t}\n\n\tget supportsTransactionalDdl(): boolean {\n\t\treturn false;\n\t}\n\n\tget supportsReturning(): boolean {\n\t\treturn true;\n\t}\n\n\tasync acquireMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\n\tasync releaseMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\tget supportsOutput(): boolean {\n\t\treturn true;\n\t}\n}\n\n/**\n * Config for the SQLite dialect.\n */\nexport interface BunSqliteDialectConfig {\n\t/**\n\t * An sqlite Database instance or a function that returns one.\n\t */\n\tdatabase: Database;\n\n\t/**\n\t * Called once when the first query is executed.\n\t */\n\tonCreateConnection?:\n\t\t| ((connection: DatabaseConnection) => Promise<void>)\n\t\t| undefined;\n}\n\nclass BunSqliteDriver implements Driver {\n\treadonly #config: BunSqliteDialectConfig;\n\treadonly #connectionMutex = new ConnectionMutex();\n\n\t#db?: Database;\n\t#connection?: DatabaseConnection;\n\n\tconstructor(config: BunSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tasync init(): Promise<void> {\n\t\tthis.#db = this.#config.database;\n\n\t\tthis.#connection = new BunSqliteConnection(this.#db);\n\n\t\tif (this.#config.onCreateConnection) {\n\t\t\tawait this.#config.onCreateConnection(this.#connection);\n\t\t}\n\t}\n\n\tasync acquireConnection(): Promise<DatabaseConnection> {\n\t\t// SQLite only has one single connection. We use a mutex here to wait\n\t\t// until the single connection has been released.\n\t\tawait this.#connectionMutex.lock();\n\t\treturn this.#connection!;\n\t}\n\n\tasync beginTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"begin\"));\n\t}\n\n\tasync commitTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"commit\"));\n\t}\n\n\tasync rollbackTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n\t}\n\n\tasync releaseConnection(): Promise<void> {\n\t\tthis.#connectionMutex.unlock();\n\t}\n\n\tasync destroy(): Promise<void> {\n\t\tthis.#db?.close();\n\t}\n}\n\nclass BunSqliteConnection implements DatabaseConnection {\n\treadonly #db: Database;\n\n\tconstructor(db: Database) {\n\t\tthis.#db = db;\n\t}\n\n\texecuteQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>> {\n\t\tconst { sql, parameters } = compiledQuery;\n\t\tconst stmt = this.#db.prepare(sql);\n\n\t\treturn Promise.resolve({\n\t\t\trows: stmt.all(parameters as any) as O[],\n\t\t});\n\t}\n\n\tasync *streamQuery() {\n\t\tthrow new Error(\"Streaming query is not supported by SQLite driver.\");\n\t}\n}\n\nclass ConnectionMutex {\n\t#promise?: Promise<void>;\n\t#resolve?: () => void;\n\n\tasync lock(): Promise<void> {\n\t\twhile (this.#promise !== undefined) {\n\t\t\tawait this.#promise;\n\t\t}\n\n\t\tthis.#promise = new Promise((resolve) => {\n\t\t\tthis.#resolve = resolve;\n\t\t});\n\t}\n\n\tunlock(): void {\n\t\tconst resolve = this.#resolve;\n\n\t\tthis.#promise = undefined;\n\t\tthis.#resolve = undefined;\n\n\t\tresolve?.();\n\t}\n}\n\nclass BunSqliteIntrospector implements DatabaseIntrospector {\n\treadonly #db: Kysely<unknown>;\n\n\tconstructor(db: Kysely<unknown>) {\n\t\tthis.#db = db;\n\t}\n\n\tasync getSchemas(): Promise<SchemaMetadata[]> {\n\t\t// Sqlite doesn't support schemas.\n\t\treturn [];\n\t}\n\n\tasync getTables(\n\t\toptions: DatabaseMetadataOptions = { withInternalKyselyTables: false },\n\t): Promise<TableMetadata[]> {\n\t\tlet query = this.#db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_schema\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"type\", \"=\", \"table\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"not like\", \"sqlite_%\")\n\t\t\t.select(\"name\")\n\t\t\t.$castTo<{ name: string }>();\n\n\t\tif (!options.withInternalKyselyTables) {\n\t\t\tquery = query\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_TABLE)\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE);\n\t\t}\n\n\t\tconst tables = await query.execute();\n\t\treturn Promise.all(tables.map(({ name }) => this.#getTableMetadata(name)));\n\t}\n\n\tasync getMetadata(\n\t\toptions?: DatabaseMetadataOptions | undefined,\n\t): Promise<DatabaseMetadata> {\n\t\treturn {\n\t\t\ttables: await this.getTables(options),\n\t\t};\n\t}\n\n\tasync #getTableMetadata(table: string): Promise<TableMetadata> {\n\t\tconst db = this.#db;\n\n\t\t// Get the SQL that was used to create the table.\n\t\tconst createSql = await db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_master\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"=\", table)\n\t\t\t.select(\"sql\")\n\t\t\t.$castTo<{ sql: string | undefined }>()\n\t\t\t.execute();\n\n\t\t// Try to find the name of the column that has `autoincrement` 🤦\n\t\tconst autoIncrementCol = createSql[0]?.sql\n\t\t\t?.split(/[\\(\\),]/)\n\t\t\t?.find((it) => it.toLowerCase().includes(\"autoincrement\"))\n\t\t\t?.split(/\\s+/)?.[0]\n\t\t\t?.replace(/[\"`]/g, \"\");\n\n\t\tconst columns = await db\n\t\t\t.selectFrom(\n\t\t\t\tsql<{\n\t\t\t\t\tname: string;\n\t\t\t\t\ttype: string;\n\t\t\t\t\tnotnull: 0 | 1;\n\t\t\t\t\tdflt_value: any;\n\t\t\t\t}>`pragma_table_info(${table})`.as(\"table_info\"),\n\t\t\t)\n\t\t\t.select([\"name\", \"type\", \"notnull\", \"dflt_value\"])\n\t\t\t.execute();\n\n\t\treturn {\n\t\t\tname: table,\n\t\t\tcolumns: columns.map((col) => ({\n\t\t\t\tname: col.name,\n\t\t\t\tdataType: col.type,\n\t\t\t\tisNullable: !col.notnull,\n\t\t\t\tisAutoIncrementing: col.name === autoIncrementCol,\n\t\t\t\thasDefaultValue: col.dflt_value != null,\n\t\t\t})),\n\t\t\tisView: true,\n\t\t};\n\t}\n}\n\nclass BunSqliteQueryCompiler extends DefaultQueryCompiler {\n\tprotected override getCurrentParameterPlaceholder() {\n\t\treturn \"?\";\n\t}\n\n\tprotected override getLeftIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getRightIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getAutoIncrement() {\n\t\treturn \"autoincrement\";\n\t}\n}\n\nexport class BunSqliteDialect implements Dialect {\n\treadonly #config: BunSqliteDialectConfig;\n\n\tconstructor(config: BunSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tcreateDriver(): Driver {\n\t\treturn new BunSqliteDriver(this.#config);\n\t}\n\n\tcreateQueryCompiler(): QueryCompiler {\n\t\treturn new BunSqliteQueryCompiler();\n\t}\n\n\tcreateAdapter(): DialectAdapter {\n\t\treturn new BunSqliteAdapter();\n\t}\n\n\tcreateIntrospector(db: Kysely<any>): DatabaseIntrospector {\n\t\treturn new BunSqliteIntrospector(db);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"bun-sqlite-dialect-C8OaCWSL.mjs","names":["#config","#connectionMutex","#db","#connection","#promise","#resolve","#getTableMetadata"],"sources":["../src/bun-sqlite-dialect.ts"],"sourcesContent":["/**\n * @see {@link https://github.com/dylanblokhuis/kysely-bun-sqlite} - Fork of the original kysely-bun-sqlite package by @dylanblokhuis\n */\n\nimport type { Database } from \"bun:sqlite\";\nimport type {\n\tDatabaseConnection,\n\tDatabaseIntrospector,\n\tDatabaseMetadata,\n\tDatabaseMetadataOptions,\n\tDialect,\n\tDialectAdapter,\n\tDialectAdapterBase,\n\tDriver,\n\tKysely,\n\tQueryCompiler,\n\tQueryResult,\n\tSchemaMetadata,\n\tTableMetadata,\n} from \"kysely\";\nimport {\n\tCompiledQuery,\n\tDEFAULT_MIGRATION_LOCK_TABLE,\n\tDEFAULT_MIGRATION_TABLE,\n\tDefaultQueryCompiler,\n\tsql,\n} from \"kysely\";\n\nclass BunSqliteAdapter implements DialectAdapterBase {\n\tget supportsCreateIfNotExists(): boolean {\n\t\treturn true;\n\t}\n\n\tget supportsTransactionalDdl(): boolean {\n\t\treturn false;\n\t}\n\n\tget supportsReturning(): boolean {\n\t\treturn true;\n\t}\n\n\tasync acquireMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\n\tasync releaseMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\tget supportsOutput(): boolean {\n\t\treturn true;\n\t}\n}\n\n/**\n * Config for the SQLite dialect.\n */\nexport interface BunSqliteDialectConfig {\n\t/**\n\t * An sqlite Database instance or a function that returns one.\n\t */\n\tdatabase: Database;\n\n\t/**\n\t * Called once when the first query is executed.\n\t */\n\tonCreateConnection?:\n\t\t| ((connection: DatabaseConnection) => Promise<void>)\n\t\t| undefined;\n}\n\nclass BunSqliteDriver implements Driver {\n\treadonly #config: BunSqliteDialectConfig;\n\treadonly #connectionMutex = new ConnectionMutex();\n\n\t#db?: Database;\n\t#connection?: DatabaseConnection;\n\n\tconstructor(config: BunSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tasync init(): Promise<void> {\n\t\tthis.#db = this.#config.database;\n\n\t\tthis.#connection = new BunSqliteConnection(this.#db);\n\n\t\tif (this.#config.onCreateConnection) {\n\t\t\tawait this.#config.onCreateConnection(this.#connection);\n\t\t}\n\t}\n\n\tasync acquireConnection(): Promise<DatabaseConnection> {\n\t\t// SQLite only has one single connection. We use a mutex here to wait\n\t\t// until the single connection has been released.\n\t\tawait this.#connectionMutex.lock();\n\t\treturn this.#connection!;\n\t}\n\n\tasync beginTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"begin\"));\n\t}\n\n\tasync commitTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"commit\"));\n\t}\n\n\tasync rollbackTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n\t}\n\n\tasync releaseConnection(): Promise<void> {\n\t\tthis.#connectionMutex.unlock();\n\t}\n\n\tasync destroy(): Promise<void> {\n\t\tthis.#db?.close();\n\t}\n}\n\nclass BunSqliteConnection implements DatabaseConnection {\n\treadonly #db: Database;\n\n\tconstructor(db: Database) {\n\t\tthis.#db = db;\n\t}\n\n\texecuteQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>> {\n\t\tconst { sql, parameters } = compiledQuery;\n\t\tconst stmt = this.#db.prepare(sql);\n\n\t\treturn Promise.resolve({\n\t\t\trows: stmt.all(parameters as any) as O[],\n\t\t});\n\t}\n\n\tasync *streamQuery() {\n\t\tthrow new Error(\"Streaming query is not supported by SQLite driver.\");\n\t}\n}\n\nclass ConnectionMutex {\n\t#promise?: Promise<void>;\n\t#resolve?: () => void;\n\n\tasync lock(): Promise<void> {\n\t\twhile (this.#promise !== undefined) {\n\t\t\tawait this.#promise;\n\t\t}\n\n\t\tthis.#promise = new Promise((resolve) => {\n\t\t\tthis.#resolve = resolve;\n\t\t});\n\t}\n\n\tunlock(): void {\n\t\tconst resolve = this.#resolve;\n\n\t\tthis.#promise = undefined;\n\t\tthis.#resolve = undefined;\n\n\t\tresolve?.();\n\t}\n}\n\nclass BunSqliteIntrospector implements DatabaseIntrospector {\n\treadonly #db: Kysely<unknown>;\n\n\tconstructor(db: Kysely<unknown>) {\n\t\tthis.#db = db;\n\t}\n\n\tasync getSchemas(): Promise<SchemaMetadata[]> {\n\t\t// Sqlite doesn't support schemas.\n\t\treturn [];\n\t}\n\n\tasync getTables(\n\t\toptions: DatabaseMetadataOptions = { withInternalKyselyTables: false },\n\t): Promise<TableMetadata[]> {\n\t\tlet query = this.#db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_schema\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"type\", \"=\", \"table\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"not like\", \"sqlite_%\")\n\t\t\t.select(\"name\")\n\t\t\t.$castTo<{ name: string }>();\n\n\t\tif (!options.withInternalKyselyTables) {\n\t\t\tquery = query\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_TABLE)\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE);\n\t\t}\n\n\t\tconst tables = await query.execute();\n\t\treturn Promise.all(tables.map(({ name }) => this.#getTableMetadata(name)));\n\t}\n\n\tasync getMetadata(\n\t\toptions?: DatabaseMetadataOptions | undefined,\n\t): Promise<DatabaseMetadata> {\n\t\treturn {\n\t\t\ttables: await this.getTables(options),\n\t\t};\n\t}\n\n\tasync #getTableMetadata(table: string): Promise<TableMetadata> {\n\t\tconst db = this.#db;\n\n\t\t// Get the SQL that was used to create the table.\n\t\tconst createSql = await db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_master\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"=\", table)\n\t\t\t.select(\"sql\")\n\t\t\t.$castTo<{ sql: string | undefined }>()\n\t\t\t.execute();\n\n\t\t// Try to find the name of the column that has `autoincrement` 🤦\n\t\tconst autoIncrementCol = createSql[0]?.sql\n\t\t\t?.split(/[\\(\\),]/)\n\t\t\t?.find((it) => it.toLowerCase().includes(\"autoincrement\"))\n\t\t\t?.split(/\\s+/)?.[0]\n\t\t\t?.replace(/[\"`]/g, \"\");\n\n\t\tconst columns = await db\n\t\t\t.selectFrom(\n\t\t\t\tsql<{\n\t\t\t\t\tname: string;\n\t\t\t\t\ttype: string;\n\t\t\t\t\tnotnull: 0 | 1;\n\t\t\t\t\tdflt_value: any;\n\t\t\t\t}>`pragma_table_info(${table})`.as(\"table_info\"),\n\t\t\t)\n\t\t\t.select([\"name\", \"type\", \"notnull\", \"dflt_value\"])\n\t\t\t.execute();\n\n\t\treturn {\n\t\t\tname: table,\n\t\t\tcolumns: columns.map((col) => ({\n\t\t\t\tname: col.name,\n\t\t\t\tdataType: col.type,\n\t\t\t\tisNullable: !col.notnull,\n\t\t\t\tisAutoIncrementing: col.name === autoIncrementCol,\n\t\t\t\thasDefaultValue: col.dflt_value != null,\n\t\t\t})),\n\t\t\tisView: true,\n\t\t};\n\t}\n}\n\nclass BunSqliteQueryCompiler extends DefaultQueryCompiler {\n\tprotected override getCurrentParameterPlaceholder() {\n\t\treturn \"?\";\n\t}\n\n\tprotected override getLeftIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getRightIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getAutoIncrement() {\n\t\treturn \"autoincrement\";\n\t}\n}\n\nexport class BunSqliteDialect implements Dialect {\n\treadonly #config: BunSqliteDialectConfig;\n\n\tconstructor(config: BunSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tcreateDriver(): Driver {\n\t\treturn new BunSqliteDriver(this.#config);\n\t}\n\n\tcreateQueryCompiler(): QueryCompiler {\n\t\treturn new BunSqliteQueryCompiler();\n\t}\n\n\tcreateAdapter(): DialectAdapter {\n\t\treturn new BunSqliteAdapter();\n\t}\n\n\tcreateIntrospector(db: Kysely<any>): DatabaseIntrospector {\n\t\treturn new BunSqliteIntrospector(db);\n\t}\n}\n"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -42,7 +42,7 @@ const createKyselyAdapter = async (config) => {
42
42
  if ("getConnection" in db) dialect = new MysqlDialect(db);
43
43
  if ("connect" in db) dialect = new PostgresDialect({ pool: db });
44
44
  if ("fileControl" in db) {
45
- const { BunSqliteDialect } = await import("./bun-sqlite-dialect-C5Kb-7gz.mjs");
45
+ const { BunSqliteDialect } = await import("./bun-sqlite-dialect-C8OaCWSL.mjs");
46
46
  dialect = new BunSqliteDialect({ database: db });
47
47
  }
48
48
  if ("createSession" in db) {
@@ -1,4 +1,4 @@
1
- import { CompiledQuery, DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, DefaultQueryCompiler, sql as sql$1 } from "kysely";
1
+ import { CompiledQuery, DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, DefaultQueryCompiler, sql } from "kysely";
2
2
 
3
3
  //#region src/node-sqlite-dialect.ts
4
4
  var NodeSqliteAdapter = class {
@@ -102,7 +102,7 @@ var NodeSqliteIntrospector = class {
102
102
  const autoIncrementCol = (await db.selectFrom("sqlite_master").where("name", "=", table).select("sql").$castTo().execute())[0]?.sql?.split(/[\(\),]/)?.find((it) => it.toLowerCase().includes("autoincrement"))?.split(/\s+/)?.[0]?.replace(/["`]/g, "");
103
103
  return {
104
104
  name: table,
105
- columns: (await db.selectFrom(sql$1`pragma_table_info(${table})`.as("table_info")).select([
105
+ columns: (await db.selectFrom(sql`pragma_table_info(${table})`.as("table_info")).select([
106
106
  "name",
107
107
  "type",
108
108
  "notnull",
@@ -1 +1 @@
1
- {"version":3,"file":"node-sqlite-dialect.mjs","names":["#config","#connectionMutex","#db","#connection","#promise","#resolve","#getTableMetadata"],"sources":["../src/node-sqlite-dialect.ts"],"sourcesContent":["/**\n * @see {@link https://nodejs.org/api/sqlite.html} - Node.js SQLite API documentation\n */\n\nimport type { DatabaseSync } from \"node:sqlite\";\nimport type {\n\tDatabaseConnection,\n\tDatabaseIntrospector,\n\tDatabaseMetadata,\n\tDatabaseMetadataOptions,\n\tDialect,\n\tDialectAdapter,\n\tDialectAdapterBase,\n\tDriver,\n\tKysely,\n\tQueryCompiler,\n\tQueryResult,\n\tSchemaMetadata,\n\tTableMetadata,\n} from \"kysely\";\nimport {\n\tCompiledQuery,\n\tDEFAULT_MIGRATION_LOCK_TABLE,\n\tDEFAULT_MIGRATION_TABLE,\n\tDefaultQueryCompiler,\n\tsql,\n} from \"kysely\";\n\nclass NodeSqliteAdapter implements DialectAdapterBase {\n\tget supportsCreateIfNotExists(): boolean {\n\t\treturn true;\n\t}\n\n\tget supportsTransactionalDdl(): boolean {\n\t\treturn false;\n\t}\n\n\tget supportsReturning(): boolean {\n\t\treturn true;\n\t}\n\n\tasync acquireMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\n\tasync releaseMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\tget supportsOutput(): boolean {\n\t\treturn true;\n\t}\n}\n\n/**\n * Config for the SQLite dialect.\n */\nexport interface NodeSqliteDialectConfig {\n\t/**\n\t * A sqlite DatabaseSync instance or a function that returns one.\n\t */\n\tdatabase: DatabaseSync;\n\n\t/**\n\t * Called once when the first query is executed.\n\t */\n\tonCreateConnection?:\n\t\t| ((connection: DatabaseConnection) => Promise<void>)\n\t\t| undefined;\n}\n\nclass NodeSqliteDriver implements Driver {\n\treadonly #config: NodeSqliteDialectConfig;\n\treadonly #connectionMutex = new ConnectionMutex();\n\n\t#db?: DatabaseSync;\n\t#connection?: DatabaseConnection;\n\n\tconstructor(config: NodeSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tasync init(): Promise<void> {\n\t\tthis.#db = this.#config.database;\n\n\t\tthis.#connection = new NodeSqliteConnection(this.#db);\n\n\t\tif (this.#config.onCreateConnection) {\n\t\t\tawait this.#config.onCreateConnection(this.#connection);\n\t\t}\n\t}\n\n\tasync acquireConnection(): Promise<DatabaseConnection> {\n\t\t// SQLite only has one single connection. We use a mutex here to wait\n\t\t// until the single connection has been released.\n\t\tawait this.#connectionMutex.lock();\n\t\treturn this.#connection!;\n\t}\n\n\tasync beginTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"begin\"));\n\t}\n\n\tasync commitTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"commit\"));\n\t}\n\n\tasync rollbackTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n\t}\n\n\tasync releaseConnection(): Promise<void> {\n\t\tthis.#connectionMutex.unlock();\n\t}\n\n\tasync destroy(): Promise<void> {\n\t\tthis.#db?.close();\n\t}\n}\n\nclass NodeSqliteConnection implements DatabaseConnection {\n\treadonly #db: DatabaseSync;\n\n\tconstructor(db: DatabaseSync) {\n\t\tthis.#db = db;\n\t}\n\n\texecuteQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>> {\n\t\tconst { sql, parameters } = compiledQuery;\n\t\tconst stmt = this.#db.prepare(sql);\n\n\t\tconst rows = stmt.all(...(parameters as any[])) as O[];\n\n\t\treturn Promise.resolve({\n\t\t\trows,\n\t\t});\n\t}\n\n\tasync *streamQuery() {\n\t\tthrow new Error(\"Streaming query is not supported by SQLite driver.\");\n\t}\n}\n\nclass ConnectionMutex {\n\t#promise?: Promise<void>;\n\t#resolve?: () => void;\n\n\tasync lock(): Promise<void> {\n\t\twhile (this.#promise !== undefined) {\n\t\t\tawait this.#promise;\n\t\t}\n\n\t\tthis.#promise = new Promise((resolve) => {\n\t\t\tthis.#resolve = resolve;\n\t\t});\n\t}\n\n\tunlock(): void {\n\t\tconst resolve = this.#resolve;\n\n\t\tthis.#promise = undefined;\n\t\tthis.#resolve = undefined;\n\n\t\tresolve?.();\n\t}\n}\n\nclass NodeSqliteIntrospector implements DatabaseIntrospector {\n\treadonly #db: Kysely<unknown>;\n\n\tconstructor(db: Kysely<unknown>) {\n\t\tthis.#db = db;\n\t}\n\n\tasync getSchemas(): Promise<SchemaMetadata[]> {\n\t\t// Sqlite doesn't support schemas.\n\t\treturn [];\n\t}\n\n\tasync getTables(\n\t\toptions: DatabaseMetadataOptions = { withInternalKyselyTables: false },\n\t): Promise<TableMetadata[]> {\n\t\tlet query = this.#db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_schema\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"type\", \"=\", \"table\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"not like\", \"sqlite_%\")\n\t\t\t.select(\"name\")\n\t\t\t.$castTo<{ name: string }>();\n\n\t\tif (!options.withInternalKyselyTables) {\n\t\t\tquery = query\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_TABLE)\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE);\n\t\t}\n\n\t\tconst tables = await query.execute();\n\t\treturn Promise.all(tables.map(({ name }) => this.#getTableMetadata(name)));\n\t}\n\n\tasync getMetadata(\n\t\toptions?: DatabaseMetadataOptions | undefined,\n\t): Promise<DatabaseMetadata> {\n\t\treturn {\n\t\t\ttables: await this.getTables(options),\n\t\t};\n\t}\n\n\tasync #getTableMetadata(table: string): Promise<TableMetadata> {\n\t\tconst db = this.#db;\n\n\t\t// Get the SQL that was used to create the table.\n\t\tconst createSql = await db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_master\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"=\", table)\n\t\t\t.select(\"sql\")\n\t\t\t.$castTo<{ sql: string | undefined }>()\n\t\t\t.execute();\n\n\t\t// Try to find the name of the column that has `autoincrement` >&\n\t\tconst autoIncrementCol = createSql[0]?.sql\n\t\t\t?.split(/[\\(\\),]/)\n\t\t\t?.find((it) => it.toLowerCase().includes(\"autoincrement\"))\n\t\t\t?.split(/\\s+/)?.[0]\n\t\t\t?.replace(/[\"`]/g, \"\");\n\n\t\tconst columns = await db\n\t\t\t.selectFrom(\n\t\t\t\tsql<{\n\t\t\t\t\tname: string;\n\t\t\t\t\ttype: string;\n\t\t\t\t\tnotnull: 0 | 1;\n\t\t\t\t\tdflt_value: any;\n\t\t\t\t}>`pragma_table_info(${table})`.as(\"table_info\"),\n\t\t\t)\n\t\t\t.select([\"name\", \"type\", \"notnull\", \"dflt_value\"])\n\t\t\t.execute();\n\n\t\treturn {\n\t\t\tname: table,\n\t\t\tcolumns: columns.map((col) => ({\n\t\t\t\tname: col.name,\n\t\t\t\tdataType: col.type,\n\t\t\t\tisNullable: !col.notnull,\n\t\t\t\tisAutoIncrementing: col.name === autoIncrementCol,\n\t\t\t\thasDefaultValue: col.dflt_value != null,\n\t\t\t})),\n\t\t\tisView: true,\n\t\t};\n\t}\n}\n\nclass NodeSqliteQueryCompiler extends DefaultQueryCompiler {\n\tprotected override getCurrentParameterPlaceholder() {\n\t\treturn \"?\";\n\t}\n\n\tprotected override getLeftIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getRightIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getAutoIncrement() {\n\t\treturn \"autoincrement\";\n\t}\n}\n\nexport class NodeSqliteDialect implements Dialect {\n\treadonly #config: NodeSqliteDialectConfig;\n\n\tconstructor(config: NodeSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tcreateDriver(): Driver {\n\t\treturn new NodeSqliteDriver(this.#config);\n\t}\n\n\tcreateQueryCompiler(): QueryCompiler {\n\t\treturn new NodeSqliteQueryCompiler();\n\t}\n\n\tcreateAdapter(): DialectAdapter {\n\t\treturn new NodeSqliteAdapter();\n\t}\n\n\tcreateIntrospector(db: Kysely<any>): DatabaseIntrospector {\n\t\treturn new NodeSqliteIntrospector(db);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"node-sqlite-dialect.mjs","names":["#config","#connectionMutex","#db","#connection","#promise","#resolve","#getTableMetadata"],"sources":["../src/node-sqlite-dialect.ts"],"sourcesContent":["/**\n * @see {@link https://nodejs.org/api/sqlite.html} - Node.js SQLite API documentation\n */\n\nimport type { DatabaseSync } from \"node:sqlite\";\nimport type {\n\tDatabaseConnection,\n\tDatabaseIntrospector,\n\tDatabaseMetadata,\n\tDatabaseMetadataOptions,\n\tDialect,\n\tDialectAdapter,\n\tDialectAdapterBase,\n\tDriver,\n\tKysely,\n\tQueryCompiler,\n\tQueryResult,\n\tSchemaMetadata,\n\tTableMetadata,\n} from \"kysely\";\nimport {\n\tCompiledQuery,\n\tDEFAULT_MIGRATION_LOCK_TABLE,\n\tDEFAULT_MIGRATION_TABLE,\n\tDefaultQueryCompiler,\n\tsql,\n} from \"kysely\";\n\nclass NodeSqliteAdapter implements DialectAdapterBase {\n\tget supportsCreateIfNotExists(): boolean {\n\t\treturn true;\n\t}\n\n\tget supportsTransactionalDdl(): boolean {\n\t\treturn false;\n\t}\n\n\tget supportsReturning(): boolean {\n\t\treturn true;\n\t}\n\n\tasync acquireMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\n\tasync releaseMigrationLock(): Promise<void> {\n\t\t// SQLite only has one connection that's reserved by the migration system\n\t\t// for the whole time between acquireMigrationLock and releaseMigrationLock.\n\t\t// We don't need to do anything here.\n\t}\n\tget supportsOutput(): boolean {\n\t\treturn true;\n\t}\n}\n\n/**\n * Config for the SQLite dialect.\n */\nexport interface NodeSqliteDialectConfig {\n\t/**\n\t * A sqlite DatabaseSync instance or a function that returns one.\n\t */\n\tdatabase: DatabaseSync;\n\n\t/**\n\t * Called once when the first query is executed.\n\t */\n\tonCreateConnection?:\n\t\t| ((connection: DatabaseConnection) => Promise<void>)\n\t\t| undefined;\n}\n\nclass NodeSqliteDriver implements Driver {\n\treadonly #config: NodeSqliteDialectConfig;\n\treadonly #connectionMutex = new ConnectionMutex();\n\n\t#db?: DatabaseSync;\n\t#connection?: DatabaseConnection;\n\n\tconstructor(config: NodeSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tasync init(): Promise<void> {\n\t\tthis.#db = this.#config.database;\n\n\t\tthis.#connection = new NodeSqliteConnection(this.#db);\n\n\t\tif (this.#config.onCreateConnection) {\n\t\t\tawait this.#config.onCreateConnection(this.#connection);\n\t\t}\n\t}\n\n\tasync acquireConnection(): Promise<DatabaseConnection> {\n\t\t// SQLite only has one single connection. We use a mutex here to wait\n\t\t// until the single connection has been released.\n\t\tawait this.#connectionMutex.lock();\n\t\treturn this.#connection!;\n\t}\n\n\tasync beginTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"begin\"));\n\t}\n\n\tasync commitTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"commit\"));\n\t}\n\n\tasync rollbackTransaction(connection: DatabaseConnection): Promise<void> {\n\t\tawait connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n\t}\n\n\tasync releaseConnection(): Promise<void> {\n\t\tthis.#connectionMutex.unlock();\n\t}\n\n\tasync destroy(): Promise<void> {\n\t\tthis.#db?.close();\n\t}\n}\n\nclass NodeSqliteConnection implements DatabaseConnection {\n\treadonly #db: DatabaseSync;\n\n\tconstructor(db: DatabaseSync) {\n\t\tthis.#db = db;\n\t}\n\n\texecuteQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>> {\n\t\tconst { sql, parameters } = compiledQuery;\n\t\tconst stmt = this.#db.prepare(sql);\n\n\t\tconst rows = stmt.all(...(parameters as any[])) as O[];\n\n\t\treturn Promise.resolve({\n\t\t\trows,\n\t\t});\n\t}\n\n\tasync *streamQuery() {\n\t\tthrow new Error(\"Streaming query is not supported by SQLite driver.\");\n\t}\n}\n\nclass ConnectionMutex {\n\t#promise?: Promise<void>;\n\t#resolve?: () => void;\n\n\tasync lock(): Promise<void> {\n\t\twhile (this.#promise !== undefined) {\n\t\t\tawait this.#promise;\n\t\t}\n\n\t\tthis.#promise = new Promise((resolve) => {\n\t\t\tthis.#resolve = resolve;\n\t\t});\n\t}\n\n\tunlock(): void {\n\t\tconst resolve = this.#resolve;\n\n\t\tthis.#promise = undefined;\n\t\tthis.#resolve = undefined;\n\n\t\tresolve?.();\n\t}\n}\n\nclass NodeSqliteIntrospector implements DatabaseIntrospector {\n\treadonly #db: Kysely<unknown>;\n\n\tconstructor(db: Kysely<unknown>) {\n\t\tthis.#db = db;\n\t}\n\n\tasync getSchemas(): Promise<SchemaMetadata[]> {\n\t\t// Sqlite doesn't support schemas.\n\t\treturn [];\n\t}\n\n\tasync getTables(\n\t\toptions: DatabaseMetadataOptions = { withInternalKyselyTables: false },\n\t): Promise<TableMetadata[]> {\n\t\tlet query = this.#db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_schema\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"type\", \"=\", \"table\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"not like\", \"sqlite_%\")\n\t\t\t.select(\"name\")\n\t\t\t.$castTo<{ name: string }>();\n\n\t\tif (!options.withInternalKyselyTables) {\n\t\t\tquery = query\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_TABLE)\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(\"name\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE);\n\t\t}\n\n\t\tconst tables = await query.execute();\n\t\treturn Promise.all(tables.map(({ name }) => this.#getTableMetadata(name)));\n\t}\n\n\tasync getMetadata(\n\t\toptions?: DatabaseMetadataOptions | undefined,\n\t): Promise<DatabaseMetadata> {\n\t\treturn {\n\t\t\ttables: await this.getTables(options),\n\t\t};\n\t}\n\n\tasync #getTableMetadata(table: string): Promise<TableMetadata> {\n\t\tconst db = this.#db;\n\n\t\t// Get the SQL that was used to create the table.\n\t\tconst createSql = await db\n\t\t\t// @ts-expect-error\n\t\t\t.selectFrom(\"sqlite_master\")\n\t\t\t// @ts-expect-error\n\t\t\t.where(\"name\", \"=\", table)\n\t\t\t.select(\"sql\")\n\t\t\t.$castTo<{ sql: string | undefined }>()\n\t\t\t.execute();\n\n\t\t// Try to find the name of the column that has `autoincrement` >&\n\t\tconst autoIncrementCol = createSql[0]?.sql\n\t\t\t?.split(/[\\(\\),]/)\n\t\t\t?.find((it) => it.toLowerCase().includes(\"autoincrement\"))\n\t\t\t?.split(/\\s+/)?.[0]\n\t\t\t?.replace(/[\"`]/g, \"\");\n\n\t\tconst columns = await db\n\t\t\t.selectFrom(\n\t\t\t\tsql<{\n\t\t\t\t\tname: string;\n\t\t\t\t\ttype: string;\n\t\t\t\t\tnotnull: 0 | 1;\n\t\t\t\t\tdflt_value: any;\n\t\t\t\t}>`pragma_table_info(${table})`.as(\"table_info\"),\n\t\t\t)\n\t\t\t.select([\"name\", \"type\", \"notnull\", \"dflt_value\"])\n\t\t\t.execute();\n\n\t\treturn {\n\t\t\tname: table,\n\t\t\tcolumns: columns.map((col) => ({\n\t\t\t\tname: col.name,\n\t\t\t\tdataType: col.type,\n\t\t\t\tisNullable: !col.notnull,\n\t\t\t\tisAutoIncrementing: col.name === autoIncrementCol,\n\t\t\t\thasDefaultValue: col.dflt_value != null,\n\t\t\t})),\n\t\t\tisView: true,\n\t\t};\n\t}\n}\n\nclass NodeSqliteQueryCompiler extends DefaultQueryCompiler {\n\tprotected override getCurrentParameterPlaceholder() {\n\t\treturn \"?\";\n\t}\n\n\tprotected override getLeftIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getRightIdentifierWrapper(): string {\n\t\treturn '\"';\n\t}\n\n\tprotected override getAutoIncrement() {\n\t\treturn \"autoincrement\";\n\t}\n}\n\nexport class NodeSqliteDialect implements Dialect {\n\treadonly #config: NodeSqliteDialectConfig;\n\n\tconstructor(config: NodeSqliteDialectConfig) {\n\t\tthis.#config = { ...config };\n\t}\n\n\tcreateDriver(): Driver {\n\t\treturn new NodeSqliteDriver(this.#config);\n\t}\n\n\tcreateQueryCompiler(): QueryCompiler {\n\t\treturn new NodeSqliteQueryCompiler();\n\t}\n\n\tcreateAdapter(): DialectAdapter {\n\t\treturn new NodeSqliteAdapter();\n\t}\n\n\tcreateIntrospector(db: Kysely<any>): DatabaseIntrospector {\n\t\treturn new NodeSqliteIntrospector(db);\n\t}\n}\n"],"mappings":";;;AA4BA,IAAM,oBAAN,MAAsD;CACrD,IAAI,4BAAqC;AACxC,SAAO;;CAGR,IAAI,2BAAoC;AACvC,SAAO;;CAGR,IAAI,oBAA6B;AAChC,SAAO;;CAGR,MAAM,uBAAsC;CAM5C,MAAM,uBAAsC;CAK5C,IAAI,iBAA0B;AAC7B,SAAO;;;AAqBT,IAAM,mBAAN,MAAyC;CACxC,CAASA;CACT,CAASC,kBAAmB,IAAI,iBAAiB;CAEjD;CACA;CAEA,YAAY,QAAiC;AAC5C,QAAKD,SAAU,EAAE,GAAG,QAAQ;;CAG7B,MAAM,OAAsB;AAC3B,QAAKE,KAAM,MAAKF,OAAQ;AAExB,QAAKG,aAAc,IAAI,qBAAqB,MAAKD,GAAI;AAErD,MAAI,MAAKF,OAAQ,mBAChB,OAAM,MAAKA,OAAQ,mBAAmB,MAAKG,WAAY;;CAIzD,MAAM,oBAAiD;AAGtD,QAAM,MAAKF,gBAAiB,MAAM;AAClC,SAAO,MAAKE;;CAGb,MAAM,iBAAiB,YAA+C;AACrE,QAAM,WAAW,aAAa,cAAc,IAAI,QAAQ,CAAC;;CAG1D,MAAM,kBAAkB,YAA+C;AACtE,QAAM,WAAW,aAAa,cAAc,IAAI,SAAS,CAAC;;CAG3D,MAAM,oBAAoB,YAA+C;AACxE,QAAM,WAAW,aAAa,cAAc,IAAI,WAAW,CAAC;;CAG7D,MAAM,oBAAmC;AACxC,QAAKF,gBAAiB,QAAQ;;CAG/B,MAAM,UAAyB;AAC9B,QAAKC,IAAK,OAAO;;;AAInB,IAAM,uBAAN,MAAyD;CACxD,CAASA;CAET,YAAY,IAAkB;AAC7B,QAAKA,KAAM;;CAGZ,aAAgB,eAAuD;EACtE,MAAM,EAAE,KAAK,eAAe;EAG5B,MAAM,OAFO,MAAKA,GAAI,QAAQ,IAAI,CAEhB,IAAI,GAAI,WAAqB;AAE/C,SAAO,QAAQ,QAAQ,EACtB,MACA,CAAC;;CAGH,OAAO,cAAc;AACpB,QAAM,IAAI,MAAM,qDAAqD;;;AAIvE,IAAM,kBAAN,MAAsB;CACrB;CACA;CAEA,MAAM,OAAsB;AAC3B,SAAO,MAAKE,YAAa,OACxB,OAAM,MAAKA;AAGZ,QAAKA,UAAW,IAAI,SAAS,YAAY;AACxC,SAAKC,UAAW;IACf;;CAGH,SAAe;EACd,MAAM,UAAU,MAAKA;AAErB,QAAKD,UAAW;AAChB,QAAKC,UAAW;AAEhB,aAAW;;;AAIb,IAAM,yBAAN,MAA6D;CAC5D,CAASH;CAET,YAAY,IAAqB;AAChC,QAAKA,KAAM;;CAGZ,MAAM,aAAwC;AAE7C,SAAO,EAAE;;CAGV,MAAM,UACL,UAAmC,EAAE,0BAA0B,OAAO,EAC3C;EAC3B,IAAI,QAAQ,MAAKA,GAEf,WAAW,gBAAgB,CAE3B,MAAM,QAAQ,KAAK,QAAQ,CAE3B,MAAM,QAAQ,YAAY,WAAW,CACrC,OAAO,OAAO,CACd,SAA2B;AAE7B,MAAI,CAAC,QAAQ,yBACZ,SAAQ,MAEN,MAAM,QAAQ,MAAM,wBAAwB,CAE5C,MAAM,QAAQ,MAAM,6BAA6B;EAGpD,MAAM,SAAS,MAAM,MAAM,SAAS;AACpC,SAAO,QAAQ,IAAI,OAAO,KAAK,EAAE,WAAW,MAAKI,iBAAkB,KAAK,CAAC,CAAC;;CAG3E,MAAM,YACL,SAC4B;AAC5B,SAAO,EACN,QAAQ,MAAM,KAAK,UAAU,QAAQ,EACrC;;CAGF,OAAMA,iBAAkB,OAAuC;EAC9D,MAAM,KAAK,MAAKJ;EAahB,MAAM,oBAVY,MAAM,GAEtB,WAAW,gBAAgB,CAE3B,MAAM,QAAQ,KAAK,MAAM,CACzB,OAAO,MAAM,CACb,SAAsC,CACtC,SAAS,EAGwB,IAAI,KACpC,MAAM,UAAU,EAChB,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,gBAAgB,CAAC,EACxD,MAAM,MAAM,GAAG,IACf,QAAQ,SAAS,GAAG;AAcvB,SAAO;GACN,MAAM;GACN,UAde,MAAM,GACpB,WACA,GAKE,qBAAqB,MAAM,GAAG,GAAG,aAAa,CAChD,CACA,OAAO;IAAC;IAAQ;IAAQ;IAAW;IAAa,CAAC,CACjD,SAAS,EAIO,KAAK,SAAS;IAC9B,MAAM,IAAI;IACV,UAAU,IAAI;IACd,YAAY,CAAC,IAAI;IACjB,oBAAoB,IAAI,SAAS;IACjC,iBAAiB,IAAI,cAAc;IACnC,EAAE;GACH,QAAQ;GACR;;;AAIH,IAAM,0BAAN,cAAsC,qBAAqB;CAC1D,AAAmB,iCAAiC;AACnD,SAAO;;CAGR,AAAmB,2BAAmC;AACrD,SAAO;;CAGR,AAAmB,4BAAoC;AACtD,SAAO;;CAGR,AAAmB,mBAAmB;AACrC,SAAO;;;AAIT,IAAa,oBAAb,MAAkD;CACjD,CAASF;CAET,YAAY,QAAiC;AAC5C,QAAKA,SAAU,EAAE,GAAG,QAAQ;;CAG7B,eAAuB;AACtB,SAAO,IAAI,iBAAiB,MAAKA,OAAQ;;CAG1C,sBAAqC;AACpC,SAAO,IAAI,yBAAyB;;CAGrC,gBAAgC;AAC/B,SAAO,IAAI,mBAAmB;;CAG/B,mBAAmB,IAAuC;AACzD,SAAO,IAAI,uBAAuB,GAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-auth/kysely-adapter",
3
- "version": "1.5.0-beta.13",
3
+ "version": "1.5.0-beta.16",
4
4
  "description": "Kysely adapter for Better Auth",
5
5
  "type": "module",
6
6
  "repository": {
@@ -26,14 +26,14 @@
26
26
  "peerDependencies": {
27
27
  "@better-auth/utils": "^0.3.0",
28
28
  "kysely": "^0.27.0 || ^0.28.0",
29
- "@better-auth/core": "1.5.0-beta.13"
29
+ "@better-auth/core": "1.5.0-beta.16"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@better-auth/utils": "^0.3.1",
33
33
  "kysely": "^0.28.10",
34
- "tsdown": "^0.20.1",
34
+ "tsdown": "^0.20.3",
35
35
  "typescript": "^5.9.3",
36
- "@better-auth/core": "1.5.0-beta.13"
36
+ "@better-auth/core": "1.5.0-beta.16"
37
37
  },
38
38
  "scripts": {
39
39
  "build": "tsdown",
package/vitest.config.ts CHANGED
@@ -1,3 +1,8 @@
1
1
  import { defineProject } from "vitest/config";
2
2
 
3
- export default defineProject({});
3
+ export default defineProject({
4
+ test: {
5
+ clearMocks: true,
6
+ restoreMocks: true,
7
+ },
8
+ });