drizzle-orm 0.33.0-87d7704 → 0.33.0-8db0aa4

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.
package/monodriver.cjs CHANGED
@@ -31,12 +31,11 @@ __export(monodriver_exports, {
31
31
  drizzle: () => drizzle
32
32
  });
33
33
  module.exports = __toCommonJS(monodriver_exports);
34
- var import_pg = require("./aws-data-api/pg/index.cjs");
35
- var import_better_sqlite3 = require("./better-sqlite3/index.cjs");
36
- var import_bun_sqlite = require("./bun-sqlite/index.cjs");
37
- var import_d1 = require("./d1/index.cjs");
38
- var import_libsql = require("./libsql/index.cjs");
39
- var import_node_postgres = require("./node-postgres/index.cjs");
34
+ const importError = (libName) => {
35
+ throw new Error(
36
+ `Drizzle init error: unable to import selected database driver library '${libName}' - make sure it is installed.`
37
+ );
38
+ };
40
39
  const drizzle = async (params) => {
41
40
  const { client, connection } = params;
42
41
  const drizzleConfig = params;
@@ -44,37 +43,88 @@ const drizzle = async (params) => {
44
43
  delete drizzleConfig.connection;
45
44
  switch (client) {
46
45
  case "node-postgres": {
47
- const { Pool } = await import("pg");
46
+ const { Pool } = await import("pg").catch(() => importError("pg"));
47
+ const { drizzle: drizzle2 } = await import("./node-postgres");
48
48
  const instance = new Pool(connection);
49
- return (0, import_node_postgres.drizzle)(instance, drizzleConfig);
49
+ return drizzle2(instance, drizzleConfig);
50
50
  }
51
51
  case "aws-data-api-pg": {
52
- const { RDSDataClient } = await import("@aws-sdk/client-rds-data");
52
+ const { RDSDataClient } = await import("@aws-sdk/client-rds-data").catch(
53
+ () => importError("@aws-sdk/client-rds-data")
54
+ );
55
+ const { drizzle: drizzle2 } = await import("./aws-data-api/pg");
53
56
  const instance = new RDSDataClient(connection);
54
- return (0, import_pg.drizzle)(instance, drizzleConfig);
57
+ return drizzle2(instance, drizzleConfig);
55
58
  }
56
59
  case "better-sqlite3": {
57
- const { default: Client } = await import("better-sqlite3");
60
+ const { default: Client } = await import("better-sqlite3").catch(() => importError("better-sqlite3"));
58
61
  const { filename, options } = connection;
62
+ const { drizzle: drizzle2 } = await import("./better-sqlite3");
59
63
  const instance = new Client(filename, options);
60
- return (0, import_better_sqlite3.drizzle)(instance, drizzleConfig);
64
+ return drizzle2(instance, drizzleConfig);
61
65
  }
62
66
  case "bun-sqlite": {
63
- const { Database: Client } = await import("bun:sqlite");
67
+ const { Database: Client } = await import("bun:sqlite").catch(() => importError("bun:sqlite"));
64
68
  const { filename, options } = connection;
69
+ const { drizzle: drizzle2 } = await import("./bun-sqlite");
65
70
  const instance = new Client(filename, options);
66
- return (0, import_bun_sqlite.drizzle)(instance, drizzleConfig);
71
+ return drizzle2(instance, drizzleConfig);
67
72
  }
68
73
  case "d1": {
69
- return (0, import_d1.drizzle)(connection, drizzleConfig);
74
+ const { drizzle: drizzle2 } = await import("./d1");
75
+ return drizzle2(connection, drizzleConfig);
70
76
  }
71
77
  case "libsql": {
72
- const { createClient } = await import("@libsql/client");
78
+ const { createClient } = await import("@libsql/client").catch(() => importError("@libsql/client"));
79
+ const { drizzle: drizzle2 } = await import("./libsql");
73
80
  const instance = createClient(connection);
74
- return (0, import_libsql.drizzle)(instance, drizzleConfig);
81
+ return drizzle2(instance, drizzleConfig);
82
+ }
83
+ case "mysql2": {
84
+ const { createConnection } = await import("mysql2/promise").catch(() => importError("mysql2/promise"));
85
+ const instance = await createConnection(connection);
86
+ const { drizzle: drizzle2 } = await import("./mysql2");
87
+ return drizzle2(instance, drizzleConfig);
88
+ }
89
+ case "neon-http": {
90
+ const { neon } = await import("@neondatabase/serverless").catch(() => importError("@neondatabase/serverless"));
91
+ const { connectionString, options } = connection;
92
+ const { drizzle: drizzle2 } = await import("./neon-http");
93
+ const instance = neon(connectionString, options);
94
+ return drizzle2(instance, drizzleConfig);
95
+ }
96
+ case "neon-serverless": {
97
+ const { Pool } = await import("@neondatabase/serverless").catch(() => importError("@neondatabase/serverless"));
98
+ const { drizzle: drizzle2 } = await import("./neon-serverless");
99
+ const instance = new Pool(connection);
100
+ return drizzle2(instance, drizzleConfig);
101
+ }
102
+ case "planetscale": {
103
+ const { Client } = await import("@planetscale/database").catch(() => importError("@planetscale/database"));
104
+ const { drizzle: drizzle2 } = await import("./planetscale-serverless");
105
+ const instance = new Client(
106
+ connection
107
+ );
108
+ return drizzle2(instance, drizzleConfig);
109
+ }
110
+ case "postgres-js": {
111
+ const { default: client2 } = await import("postgres").catch(() => importError("postgres"));
112
+ const { drizzle: drizzle2 } = await import("./postgres-js");
113
+ const instance = client2(connection);
114
+ return drizzle2(instance, drizzleConfig);
115
+ }
116
+ case "tidb-serverless": {
117
+ const { connect } = await import("@tidbcloud/serverless").catch(() => importError("@tidbcloud/serverless"));
118
+ const { drizzle: drizzle2 } = await import("./tidb-serverless");
119
+ const instance = connect(connection);
120
+ return drizzle2(instance, drizzleConfig);
121
+ }
122
+ case "vercel-postgres": {
123
+ const { sql } = await import("@vercel/postgres").catch(() => importError("@vercel/postgres"));
124
+ const { drizzle: drizzle2 } = await import("./vercel-postgres");
125
+ return drizzle2(sql, drizzleConfig);
75
126
  }
76
127
  }
77
- return {};
78
128
  };
79
129
  // Annotate the CommonJS export names for ESM import in node:
80
130
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/monodriver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\nimport type { RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';\nimport type { Config as LibsqlConfig } from '@libsql/client';\nimport type { ClientConfig as NeonHttpConfig, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';\nimport type { Config as PlanetscaleConfig } from '@planetscale/database';\nimport type { Config as TiDBServerlessConfig } from '@tidbcloud/serverless';\nimport type { VercelPostgresPoolConfig as VercelPostgresConfig } from '@vercel/postgres';\nimport type { Options as BetterSQLite3Options } from 'better-sqlite3';\nimport type { ConnectionConfig as Mysql2Config } from 'mysql2';\nimport type { PoolConfig as NodePGPoolConfig } from 'pg';\nimport type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType } from 'postgres';\nimport type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from './aws-data-api/pg/index.ts';\nimport type { BetterSQLite3Database } from './better-sqlite3/index.ts';\nimport type { BunSQLiteDatabase } from './bun-sqlite/index.ts';\nimport type { DrizzleD1Database } from './d1/index.ts';\nimport type { LibSQLDatabase } from './libsql/index.ts';\nimport type { MySql2Database } from './mysql2/index.ts';\nimport type { NeonHttpDatabase } from './neon-http/index.ts';\nimport type { NeonDatabase } from './neon-serverless/index.ts';\nimport type { NodePgDatabase } from './node-postgres/index.ts';\nimport type { PlanetScaleDatabase } from './planetscale-serverless/index.ts';\nimport type { PostgresJsDatabase } from './postgres-js/index.ts';\nimport type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';\nimport type { DrizzleConfig } from './utils.ts';\nimport type { VercelPgDatabase } from './vercel-postgres/index.ts';\n\ntype BunSqliteDatabaseOptions =\n\t| number\n\t| {\n\t\t/**\n\t\t * Open the database as read-only (no write operations, no create).\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t\t */\n\t\treadonly?: boolean;\n\t\t/**\n\t\t * Allow creating a new database\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t\t */\n\t\tcreate?: boolean;\n\t\t/**\n\t\t * Open the database as read-write\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t\t */\n\t\treadwrite?: boolean;\n\t};\n\ntype BunSqliteDatabaseConfig = {\n\tfilename?: string;\n\toptions?: BunSqliteDatabaseOptions;\n};\n\ntype BetterSQLite3DatabaseConfig = {\n\tfilename?: string | Buffer;\n\toptions?: BetterSQLite3Options;\n};\n\ntype DatabaseClientType =\n\t| 'node-postgres'\n\t| 'postgres.js'\n\t| 'neon-serverless'\n\t| 'neon-http'\n\t| 'vercel-postgres'\n\t| 'aws-data-api-pg'\n\t| 'planetscale'\n\t| 'mysql2'\n\t| 'tidb-serverless'\n\t| 'libsql'\n\t| 'd1'\n\t| 'bun-sqlite'\n\t| 'better-sqlite3';\n\ntype ClientConnectionConfigMap = {\n\t'node-postgres': NodePGPoolConfig;\n\t'postgres.js': PostgresJSOptions<Record<string, PostgresJSPostgresType>>;\n\t'neon-serverless': NeonServerlessConfig;\n\t'neon-http': NeonHttpConfig;\n\t'vercel-postgres': VercelPostgresConfig;\n\t'aws-data-api-pg': RDSConfig;\n\tplanetscale: PlanetscaleConfig;\n\tmysql2: Mysql2Config;\n\t'tidb-serverless': TiDBServerlessConfig;\n\tlibsql: LibsqlConfig;\n\td1: D1Database;\n\t'bun-sqlite': BunSqliteDatabaseConfig;\n\t'better-sqlite3': BetterSQLite3DatabaseConfig;\n};\n\ntype ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {\n\t'node-postgres': NodePgDatabase<TSchema>;\n\t'postgres.js': PostgresJsDatabase<TSchema>;\n\t'neon-serverless': NeonDatabase<TSchema>;\n\t'neon-http': NeonHttpDatabase<TSchema>;\n\t'vercel-postgres': VercelPgDatabase<TSchema>;\n\t'aws-data-api-pg': AwsDataApiPgDatabase<TSchema>;\n\tplanetscale: PlanetScaleDatabase<TSchema>;\n\tmysql2: MySql2Database<TSchema>;\n\t'tidb-serverless': TiDBServerlessDatabase<TSchema>;\n\tlibsql: LibSQLDatabase<TSchema>;\n\td1: DrizzleD1Database<TSchema>;\n\t'bun-sqlite': BunSQLiteDatabase<TSchema>;\n\t'better-sqlite3': BetterSQLite3Database<TSchema>;\n};\n\ntype ClientParams<TClientType extends DatabaseClientType> = ClientConnectionConfigMap[TClientType];\n\ntype InitializerParams<\n\tTClientType extends DatabaseClientType,\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = {\n\tclient: TClientType;\n\tconnection: ClientParams<TClientType>;\n} & DrizzleConfig<TSchema>;\n\ntype DetermineClient<\n\tTParams extends InitializerParams<any, any>,\n\tTSchema extends Record<string, unknown> = TParams extends { schema: Record<string, unknown> } ? TParams['schema']\n\t\t: Record<string, never>,\n> = TParams extends { client: DatabaseClientType } ? ClientDrizzleInstanceMap<TSchema>[TParams['client']]\n\t: never;\n\nimport { drizzle as rdsPgDrizzle } from './aws-data-api/pg/index.ts';\nimport { drizzle as betterSqliteDrizzle } from './better-sqlite3/index.ts';\nimport { drizzle as bunSqliteDrizzle } from './bun-sqlite/index.ts';\nimport { drizzle as d1Drizzle } from './d1/index.ts';\nimport { drizzle as libsqlDrizzle } from './libsql/index.ts';\n// import { drizzle as mysql2Drizzle } from './mysql2/index.ts';\n// import { drizzle as neonHttpDrizzle } from './neon-http/index.ts';\n// import { drizzle as neonDrizzle } from './neon-serverless/index.ts';\nimport { drizzle as pgDrizzle } from './node-postgres/index.ts';\n// import { drizzle as planetscaleDrizzle } from './planetscale-serverless/index.ts';\n// import { drizzle as postgresJSDrizzle } from './postgres-js/index.ts';\n// import { drizzle as tidbDrizzle } from './tidb-serverless/index.ts';\n// import { drizzle as vercelDrizzle } from './vercel-postgres/index.ts';\n\nexport const drizzle = async <\n\tTClientType extends DatabaseClientType,\n\tTSchema extends Record<string, any>,\n\tTParams extends InitializerParams<TClientType, TSchema>,\n>(params: TParams): Promise<DetermineClient<TParams>> => {\n\tconst { client, connection } = params;\n\tconst drizzleConfig = params as Omit<typeof params, 'client' | 'connection'>;\n\t// @ts-expect-error\n\tdelete drizzleConfig.client;\n\t// @ts-expect-error\n\tdelete drizzleConfig.connection;\n\n\tswitch (client) {\n\t\tcase 'node-postgres': {\n\t\t\tconst { Pool } = await import('pg');\n\t\t\tconst instance = new Pool(connection as NodePGPoolConfig);\n\n\t\t\treturn pgDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'aws-data-api-pg': {\n\t\t\tconst { RDSDataClient } = await import('@aws-sdk/client-rds-data');\n\t\t\tconst instance = new RDSDataClient(connection);\n\n\t\t\treturn rdsPgDrizzle(instance, drizzleConfig as any as DrizzleAwsDataApiPgConfig) as any;\n\t\t}\n\t\tcase 'better-sqlite3': {\n\t\t\tconst { default: Client } = await import('better-sqlite3');\n\t\t\tconst { filename, options } = connection as BetterSQLite3DatabaseConfig;\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn betterSqliteDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'bun-sqlite': {\n\t\t\tconst { Database: Client } = await import('bun:sqlite');\n\t\t\tconst { filename, options } = connection as BunSqliteDatabaseConfig;\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn bunSqliteDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'd1': {\n\t\t\treturn d1Drizzle(connection as D1Database, drizzleConfig) as any;\n\t\t}\n\t\tcase 'libsql': {\n\t\t\tconst { createClient } = await import('@libsql/client');\n\t\t\tconst instance = createClient(connection as LibsqlConfig);\n\n\t\t\treturn libsqlDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\t\t// case 'mysql2': {\n\t\t\t// }\n\t\t\t// case 'neon-http': {\n\t\t\t// }\n\t\t\t// case 'neon-serverless': {\n\t\t\t// }\n\t\t\t// case 'planetscale': {\n\t\t\t// }\n\t\t\t// case 'postgres.js': {\n\t\t\t// }\n\t\t\t// case 'tidb-serverless': {\n\t\t\t// }\n\t\t\t// case 'vercel-postgres': {\n\t\t\t// }\n\t}\n\n\t// @ts-ignore\n\treturn {};\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2HA,gBAAwC;AACxC,4BAA+C;AAC/C,wBAA4C;AAC5C,gBAAqC;AACrC,oBAAyC;AAIzC,2BAAqC;AAM9B,MAAM,UAAU,OAIrB,WAAuD;AACxD,QAAM,EAAE,QAAQ,WAAW,IAAI;AAC/B,QAAM,gBAAgB;AAEtB,SAAO,cAAc;AAErB,SAAO,cAAc;AAErB,UAAQ,QAAQ;AAAA,IACf,KAAK,iBAAiB;AACrB,YAAM,EAAE,KAAK,IAAI,MAAM,OAAO,IAAI;AAClC,YAAM,WAAW,IAAI,KAAK,UAA8B;AAExD,iBAAO,qBAAAA,SAAU,UAAU,aAAa;AAAA,IACzC;AAAA,IACA,KAAK,mBAAmB;AACvB,YAAM,EAAE,cAAc,IAAI,MAAM,OAAO,0BAA0B;AACjE,YAAM,WAAW,IAAI,cAAc,UAAU;AAE7C,iBAAO,UAAAC,SAAa,UAAU,aAAiD;AAAA,IAChF;AAAA,IACA,KAAK,kBAAkB;AACtB,YAAM,EAAE,SAAS,OAAO,IAAI,MAAM,OAAO,gBAAgB;AACzD,YAAM,EAAE,UAAU,QAAQ,IAAI;AAC9B,YAAM,WAAW,IAAI,OAAO,UAAU,OAAO;AAE7C,iBAAO,sBAAAC,SAAoB,UAAU,aAAa;AAAA,IACnD;AAAA,IACA,KAAK,cAAc;AAClB,YAAM,EAAE,UAAU,OAAO,IAAI,MAAM,OAAO,YAAY;AACtD,YAAM,EAAE,UAAU,QAAQ,IAAI;AAC9B,YAAM,WAAW,IAAI,OAAO,UAAU,OAAO;AAE7C,iBAAO,kBAAAC,SAAiB,UAAU,aAAa;AAAA,IAChD;AAAA,IACA,KAAK,MAAM;AACV,iBAAO,UAAAC,SAAU,YAA0B,aAAa;AAAA,IACzD;AAAA,IACA,KAAK,UAAU;AACd,YAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gBAAgB;AACtD,YAAM,WAAW,aAAa,UAA0B;AAExD,iBAAO,cAAAC,SAAc,UAAU,aAAa;AAAA,IAC7C;AAAA,EAeD;AAGA,SAAO,CAAC;AACT;","names":["pgDrizzle","rdsPgDrizzle","betterSqliteDrizzle","bunSqliteDrizzle","d1Drizzle","libsqlDrizzle"]}
1
+ {"version":3,"sources":["../src/monodriver.ts"],"sourcesContent":["/* eslint-disable import/extensions */\nimport type { RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';\nimport type { Config as LibsqlConfig } from '@libsql/client';\nimport type {\n\tHTTPTransactionOptions as NeonHttpConfig,\n\tPoolConfig as NeonServerlessConfig,\n} from '@neondatabase/serverless';\nimport type { Config as PlanetscaleConfig } from '@planetscale/database';\nimport type { Config as TiDBServerlessConfig } from '@tidbcloud/serverless';\nimport type { VercelPool } from '@vercel/postgres';\nimport type { Options as BetterSQLite3Options } from 'better-sqlite3';\nimport type { PoolOptions as Mysql2Config } from 'mysql2';\nimport type { PoolConfig as NodePGPoolConfig } from 'pg';\nimport type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType } from 'postgres';\nimport type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from './aws-data-api/pg/index.ts';\nimport type { BetterSQLite3Database } from './better-sqlite3/index.ts';\nimport type { BunSQLiteDatabase } from './bun-sqlite/index.ts';\nimport type { DrizzleD1Database } from './d1/index.ts';\nimport type { LibSQLDatabase } from './libsql/index.ts';\nimport type { MySql2Database, MySql2DrizzleConfig } from './mysql2/index.ts';\nimport type { NeonHttpDatabase } from './neon-http/index.ts';\nimport type { NeonDatabase } from './neon-serverless/index.ts';\nimport type { NodePgDatabase } from './node-postgres/index.ts';\nimport type { PlanetScaleDatabase } from './planetscale-serverless/index.ts';\nimport type { PostgresJsDatabase } from './postgres-js/index.ts';\nimport type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';\nimport type { DrizzleConfig } from './utils.ts';\nimport type { VercelPgDatabase } from './vercel-postgres/index.ts';\n\ntype BunSqliteDatabaseOptions =\n\t| number\n\t| {\n\t\t/**\n\t\t * Open the database as read-only (no write operations, no create).\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t\t */\n\t\treadonly?: boolean;\n\t\t/**\n\t\t * Allow creating a new database\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t\t */\n\t\tcreate?: boolean;\n\t\t/**\n\t\t * Open the database as read-write\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t\t */\n\t\treadwrite?: boolean;\n\t};\n\ntype BunSqliteDatabaseConfig = {\n\tfilename?: string;\n\toptions?: BunSqliteDatabaseOptions;\n};\n\ntype BetterSQLite3DatabaseConfig = {\n\tfilename?: string | Buffer;\n\toptions?: BetterSQLite3Options;\n};\n\ntype MonodriverNeonHttpConfig = {\n\tconnectionString: string;\n\toptions?: NeonHttpConfig<boolean, boolean>;\n};\n\ntype ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {\n\t'node-postgres': NodePgDatabase<TSchema>;\n\t'postgres-js': PostgresJsDatabase<TSchema>;\n\t'neon-serverless': NeonDatabase<TSchema>;\n\t'neon-http': NeonHttpDatabase<TSchema>;\n\t'vercel-postgres': VercelPgDatabase<TSchema>;\n\t'aws-data-api-pg': AwsDataApiPgDatabase<TSchema>;\n\tplanetscale: PlanetScaleDatabase<TSchema>;\n\tmysql2: MySql2Database<TSchema>;\n\t'tidb-serverless': TiDBServerlessDatabase<TSchema>;\n\tlibsql: LibSQLDatabase<TSchema>;\n\td1: DrizzleD1Database<TSchema>;\n\t'bun-sqlite': BunSQLiteDatabase<TSchema>;\n\t'better-sqlite3': BetterSQLite3Database<TSchema>;\n};\n\ntype InitializerParams<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> =\n\t| ({\n\t\tclient: 'node-postgres';\n\t\tconnection: NodePGPoolConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'postgres-js';\n\t\tconnection: PostgresJSOptions<Record<string, PostgresJSPostgresType>>;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'neon-serverless';\n\t\tconnection: NeonServerlessConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'neon-http';\n\t\tconnection: MonodriverNeonHttpConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'vercel-postgres';\n\t\tconnection: VercelPool;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'aws-data-api-pg';\n\t\tconnection: RDSConfig;\n\t} & DrizzleAwsDataApiPgConfig<TSchema>)\n\t| ({\n\t\tclient: 'planetscale';\n\t\tconnection: PlanetscaleConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'mysql2';\n\t\tconnection: Mysql2Config;\n\t} & MySql2DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'tidb-serverless';\n\t\tconnection: TiDBServerlessConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'libsql';\n\t\tconnection: LibsqlConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'd1';\n\t\tconnection: D1Database;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'bun-sqlite';\n\t\tconnection: BunSqliteDatabaseConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'better-sqlite3';\n\t\tconnection: BetterSQLite3DatabaseConfig;\n\t} & DrizzleConfig<TSchema>);\n\ntype DetermineClient<\n\tTParams extends InitializerParams<any>,\n> = ClientDrizzleInstanceMap<TParams['schema']>[TParams['client']];\n\nconst importError = (libName: string) => {\n\tthrow new Error(\n\t\t`Drizzle init error: unable to import selected database driver library '${libName}' - make sure it is installed.`,\n\t);\n};\n\nexport const drizzle = async <\n\tTSchema extends Record<string, any>,\n\tTParams extends InitializerParams<TSchema>,\n>(params: TParams): Promise<DetermineClient<TParams>> => {\n\tconst { client, connection } = params;\n\tconst drizzleConfig = params as DrizzleConfig;\n\tdelete (<any> drizzleConfig).client;\n\tdelete (<any> drizzleConfig).connection;\n\n\tswitch (client) {\n\t\tcase 'node-postgres': {\n\t\t\tconst { Pool } = await import('pg').catch(() => importError('pg'));\n\t\t\tconst { drizzle } = await import('./node-postgres');\n\t\t\tconst instance = new Pool(connection as NodePGPoolConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'aws-data-api-pg': {\n\t\t\tconst { RDSDataClient } = await import('@aws-sdk/client-rds-data').catch(() =>\n\t\t\t\timportError('@aws-sdk/client-rds-data')\n\t\t\t);\n\t\t\tconst { drizzle } = await import('./aws-data-api/pg');\n\t\t\tconst instance = new RDSDataClient(connection);\n\n\t\t\treturn drizzle(instance, drizzleConfig as any as DrizzleAwsDataApiPgConfig) as any;\n\t\t}\n\t\tcase 'better-sqlite3': {\n\t\t\tconst { default: Client } = await import('better-sqlite3').catch(() => importError('better-sqlite3'));\n\t\t\tconst { filename, options } = connection as BetterSQLite3DatabaseConfig;\n\t\t\tconst { drizzle } = await import('./better-sqlite3');\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'bun-sqlite': {\n\t\t\tconst { Database: Client } = await import('bun:sqlite').catch(() => importError('bun:sqlite'));\n\t\t\tconst { filename, options } = connection as BunSqliteDatabaseConfig;\n\t\t\tconst { drizzle } = await import('./bun-sqlite');\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'd1': {\n\t\t\tconst { drizzle } = await import('./d1');\n\t\t\treturn drizzle(connection as D1Database, drizzleConfig) as any;\n\t\t}\n\t\tcase 'libsql': {\n\t\t\tconst { createClient } = await import('@libsql/client').catch(() => importError('@libsql/client'));\n\t\t\tconst { drizzle } = await import('./libsql');\n\t\t\tconst instance = createClient(connection as LibsqlConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'mysql2': {\n\t\t\tconst { createConnection } = await import('mysql2/promise').catch(() => importError('mysql2/promise'));\n\t\t\tconst instance = await createConnection(connection as Mysql2Config);\n\t\t\tconst { drizzle } = await import('./mysql2');\n\n\t\t\treturn drizzle(instance, drizzleConfig as MySql2DrizzleConfig) as any;\n\t\t}\n\t\tcase 'neon-http': {\n\t\t\tconst { neon } = await import('@neondatabase/serverless').catch(() => importError('@neondatabase/serverless'));\n\t\t\tconst { connectionString, options } = connection as MonodriverNeonHttpConfig;\n\t\t\tconst { drizzle } = await import('./neon-http');\n\t\t\tconst instance = neon(connectionString, options);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'neon-serverless': {\n\t\t\tconst { Pool } = await import('@neondatabase/serverless').catch(() => importError('@neondatabase/serverless'));\n\t\t\tconst { drizzle } = await import('./neon-serverless');\n\t\t\tconst instance = new Pool(connection as NeonServerlessConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'planetscale': {\n\t\t\tconst { Client } = await import('@planetscale/database').catch(() => importError('@planetscale/database'));\n\t\t\tconst { drizzle } = await import('./planetscale-serverless');\n\t\t\tconst instance = new Client(\n\t\t\t\tconnection as PlanetscaleConfig,\n\t\t\t);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'postgres-js': {\n\t\t\tconst { default: client } = await import('postgres').catch(() => importError('postgres'));\n\t\t\tconst { drizzle } = await import('./postgres-js');\n\t\t\tconst instance = client(connection as PostgresJSOptions<Record<string, PostgresJSPostgresType>>);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'tidb-serverless': {\n\t\t\tconst { connect } = await import('@tidbcloud/serverless').catch(() => importError('@tidbcloud/serverless'));\n\t\t\tconst { drizzle } = await import('./tidb-serverless');\n\t\t\tconst instance = connect(connection as TiDBServerlessConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'vercel-postgres': {\n\t\t\tconst { sql } = await import('@vercel/postgres').catch(() => importError('@vercel/postgres'));\n\t\t\tconst { drizzle } = await import('./vercel-postgres');\n\n\t\t\treturn drizzle(sql, drizzleConfig) as any;\n\t\t}\n\t}\n};\n"],"mappings":"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","names":["drizzle","client"]}
package/monodriver.d.cts CHANGED
@@ -1,22 +1,22 @@
1
1
  /// <reference types="@cloudflare/workers-types" />
2
- /// <reference types="bun-types" />
3
2
  /// <reference types="node" />
3
+ /// <reference types="bun-types" />
4
4
  import type { RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';
5
5
  import type { Config as LibsqlConfig } from '@libsql/client';
6
- import type { ClientConfig as NeonHttpConfig, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';
6
+ import type { HTTPTransactionOptions as NeonHttpConfig, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';
7
7
  import type { Config as PlanetscaleConfig } from '@planetscale/database';
8
8
  import type { Config as TiDBServerlessConfig } from '@tidbcloud/serverless';
9
- import type { VercelPostgresPoolConfig as VercelPostgresConfig } from '@vercel/postgres';
9
+ import type { VercelPool } from '@vercel/postgres';
10
10
  import type { Options as BetterSQLite3Options } from 'better-sqlite3';
11
- import type { ConnectionConfig as Mysql2Config } from 'mysql2';
11
+ import type { PoolOptions as Mysql2Config } from 'mysql2';
12
12
  import type { PoolConfig as NodePGPoolConfig } from 'pg';
13
13
  import type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType } from 'postgres';
14
- import type { AwsDataApiPgDatabase } from "./aws-data-api/pg/index.cjs";
14
+ import type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from "./aws-data-api/pg/index.cjs";
15
15
  import type { BetterSQLite3Database } from "./better-sqlite3/index.cjs";
16
16
  import type { BunSQLiteDatabase } from "./bun-sqlite/index.cjs";
17
17
  import type { DrizzleD1Database } from "./d1/index.cjs";
18
18
  import type { LibSQLDatabase } from "./libsql/index.cjs";
19
- import type { MySql2Database } from "./mysql2/index.cjs";
19
+ import type { MySql2Database, MySql2DrizzleConfig } from "./mysql2/index.cjs";
20
20
  import type { NeonHttpDatabase } from "./neon-http/index.cjs";
21
21
  import type { NeonDatabase } from "./neon-serverless/index.cjs";
22
22
  import type { NodePgDatabase } from "./node-postgres/index.cjs";
@@ -53,25 +53,13 @@ type BetterSQLite3DatabaseConfig = {
53
53
  filename?: string | Buffer;
54
54
  options?: BetterSQLite3Options;
55
55
  };
56
- type DatabaseClientType = 'node-postgres' | 'postgres.js' | 'neon-serverless' | 'neon-http' | 'vercel-postgres' | 'aws-data-api-pg' | 'planetscale' | 'mysql2' | 'tidb-serverless' | 'libsql' | 'd1' | 'bun-sqlite' | 'better-sqlite3';
57
- type ClientConnectionConfigMap = {
58
- 'node-postgres': NodePGPoolConfig;
59
- 'postgres.js': PostgresJSOptions<Record<string, PostgresJSPostgresType>>;
60
- 'neon-serverless': NeonServerlessConfig;
61
- 'neon-http': NeonHttpConfig;
62
- 'vercel-postgres': VercelPostgresConfig;
63
- 'aws-data-api-pg': RDSConfig;
64
- planetscale: PlanetscaleConfig;
65
- mysql2: Mysql2Config;
66
- 'tidb-serverless': TiDBServerlessConfig;
67
- libsql: LibsqlConfig;
68
- d1: D1Database;
69
- 'bun-sqlite': BunSqliteDatabaseConfig;
70
- 'better-sqlite3': BetterSQLite3DatabaseConfig;
56
+ type MonodriverNeonHttpConfig = {
57
+ connectionString: string;
58
+ options?: NeonHttpConfig<boolean, boolean>;
71
59
  };
72
60
  type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
73
61
  'node-postgres': NodePgDatabase<TSchema>;
74
- 'postgres.js': PostgresJsDatabase<TSchema>;
62
+ 'postgres-js': PostgresJsDatabase<TSchema>;
75
63
  'neon-serverless': NeonDatabase<TSchema>;
76
64
  'neon-http': NeonHttpDatabase<TSchema>;
77
65
  'vercel-postgres': VercelPgDatabase<TSchema>;
@@ -84,15 +72,46 @@ type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
84
72
  'bun-sqlite': BunSQLiteDatabase<TSchema>;
85
73
  'better-sqlite3': BetterSQLite3Database<TSchema>;
86
74
  };
87
- type ClientParams<TClientType extends DatabaseClientType> = ClientConnectionConfigMap[TClientType];
88
- type InitializerParams<TClientType extends DatabaseClientType, TSchema extends Record<string, unknown> = Record<string, never>> = {
89
- client: TClientType;
90
- connection: ClientParams<TClientType>;
91
- } & DrizzleConfig<TSchema>;
92
- type DetermineClient<TParams extends InitializerParams<any, any>, TSchema extends Record<string, unknown> = TParams extends {
93
- schema: Record<string, unknown>;
94
- } ? TParams['schema'] : Record<string, never>> = TParams extends {
95
- client: DatabaseClientType;
96
- } ? ClientDrizzleInstanceMap<TSchema>[TParams['client']] : never;
97
- export declare const drizzle: <TClientType extends DatabaseClientType, TSchema extends Record<string, any>, TParams extends InitializerParams<TClientType, TSchema>>(params: TParams) => Promise<DetermineClient<TParams>>;
75
+ type InitializerParams<TSchema extends Record<string, unknown> = Record<string, never>> = ({
76
+ client: 'node-postgres';
77
+ connection: NodePGPoolConfig;
78
+ } & DrizzleConfig<TSchema>) | ({
79
+ client: 'postgres-js';
80
+ connection: PostgresJSOptions<Record<string, PostgresJSPostgresType>>;
81
+ } & DrizzleConfig<TSchema>) | ({
82
+ client: 'neon-serverless';
83
+ connection: NeonServerlessConfig;
84
+ } & DrizzleConfig<TSchema>) | ({
85
+ client: 'neon-http';
86
+ connection: MonodriverNeonHttpConfig;
87
+ } & DrizzleConfig<TSchema>) | ({
88
+ client: 'vercel-postgres';
89
+ connection: VercelPool;
90
+ } & DrizzleConfig<TSchema>) | ({
91
+ client: 'aws-data-api-pg';
92
+ connection: RDSConfig;
93
+ } & DrizzleAwsDataApiPgConfig<TSchema>) | ({
94
+ client: 'planetscale';
95
+ connection: PlanetscaleConfig;
96
+ } & DrizzleConfig<TSchema>) | ({
97
+ client: 'mysql2';
98
+ connection: Mysql2Config;
99
+ } & MySql2DrizzleConfig<TSchema>) | ({
100
+ client: 'tidb-serverless';
101
+ connection: TiDBServerlessConfig;
102
+ } & DrizzleConfig<TSchema>) | ({
103
+ client: 'libsql';
104
+ connection: LibsqlConfig;
105
+ } & DrizzleConfig<TSchema>) | ({
106
+ client: 'd1';
107
+ connection: D1Database;
108
+ } & DrizzleConfig<TSchema>) | ({
109
+ client: 'bun-sqlite';
110
+ connection: BunSqliteDatabaseConfig;
111
+ } & DrizzleConfig<TSchema>) | ({
112
+ client: 'better-sqlite3';
113
+ connection: BetterSQLite3DatabaseConfig;
114
+ } & DrizzleConfig<TSchema>);
115
+ type DetermineClient<TParams extends InitializerParams<any>> = ClientDrizzleInstanceMap<TParams['schema']>[TParams['client']];
116
+ export declare const drizzle: <TSchema extends Record<string, any>, TParams extends InitializerParams<TSchema>>(params: TParams) => Promise<DetermineClient<TParams>>;
98
117
  export {};
package/monodriver.d.ts CHANGED
@@ -1,22 +1,22 @@
1
1
  /// <reference types="@cloudflare/workers-types" />
2
- /// <reference types="bun-types" />
3
2
  /// <reference types="node" />
3
+ /// <reference types="bun-types" />
4
4
  import type { RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';
5
5
  import type { Config as LibsqlConfig } from '@libsql/client';
6
- import type { ClientConfig as NeonHttpConfig, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';
6
+ import type { HTTPTransactionOptions as NeonHttpConfig, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';
7
7
  import type { Config as PlanetscaleConfig } from '@planetscale/database';
8
8
  import type { Config as TiDBServerlessConfig } from '@tidbcloud/serverless';
9
- import type { VercelPostgresPoolConfig as VercelPostgresConfig } from '@vercel/postgres';
9
+ import type { VercelPool } from '@vercel/postgres';
10
10
  import type { Options as BetterSQLite3Options } from 'better-sqlite3';
11
- import type { ConnectionConfig as Mysql2Config } from 'mysql2';
11
+ import type { PoolOptions as Mysql2Config } from 'mysql2';
12
12
  import type { PoolConfig as NodePGPoolConfig } from 'pg';
13
13
  import type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType } from 'postgres';
14
- import type { AwsDataApiPgDatabase } from "./aws-data-api/pg/index.js";
14
+ import type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from "./aws-data-api/pg/index.js";
15
15
  import type { BetterSQLite3Database } from "./better-sqlite3/index.js";
16
16
  import type { BunSQLiteDatabase } from "./bun-sqlite/index.js";
17
17
  import type { DrizzleD1Database } from "./d1/index.js";
18
18
  import type { LibSQLDatabase } from "./libsql/index.js";
19
- import type { MySql2Database } from "./mysql2/index.js";
19
+ import type { MySql2Database, MySql2DrizzleConfig } from "./mysql2/index.js";
20
20
  import type { NeonHttpDatabase } from "./neon-http/index.js";
21
21
  import type { NeonDatabase } from "./neon-serverless/index.js";
22
22
  import type { NodePgDatabase } from "./node-postgres/index.js";
@@ -53,25 +53,13 @@ type BetterSQLite3DatabaseConfig = {
53
53
  filename?: string | Buffer;
54
54
  options?: BetterSQLite3Options;
55
55
  };
56
- type DatabaseClientType = 'node-postgres' | 'postgres.js' | 'neon-serverless' | 'neon-http' | 'vercel-postgres' | 'aws-data-api-pg' | 'planetscale' | 'mysql2' | 'tidb-serverless' | 'libsql' | 'd1' | 'bun-sqlite' | 'better-sqlite3';
57
- type ClientConnectionConfigMap = {
58
- 'node-postgres': NodePGPoolConfig;
59
- 'postgres.js': PostgresJSOptions<Record<string, PostgresJSPostgresType>>;
60
- 'neon-serverless': NeonServerlessConfig;
61
- 'neon-http': NeonHttpConfig;
62
- 'vercel-postgres': VercelPostgresConfig;
63
- 'aws-data-api-pg': RDSConfig;
64
- planetscale: PlanetscaleConfig;
65
- mysql2: Mysql2Config;
66
- 'tidb-serverless': TiDBServerlessConfig;
67
- libsql: LibsqlConfig;
68
- d1: D1Database;
69
- 'bun-sqlite': BunSqliteDatabaseConfig;
70
- 'better-sqlite3': BetterSQLite3DatabaseConfig;
56
+ type MonodriverNeonHttpConfig = {
57
+ connectionString: string;
58
+ options?: NeonHttpConfig<boolean, boolean>;
71
59
  };
72
60
  type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
73
61
  'node-postgres': NodePgDatabase<TSchema>;
74
- 'postgres.js': PostgresJsDatabase<TSchema>;
62
+ 'postgres-js': PostgresJsDatabase<TSchema>;
75
63
  'neon-serverless': NeonDatabase<TSchema>;
76
64
  'neon-http': NeonHttpDatabase<TSchema>;
77
65
  'vercel-postgres': VercelPgDatabase<TSchema>;
@@ -84,15 +72,46 @@ type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
84
72
  'bun-sqlite': BunSQLiteDatabase<TSchema>;
85
73
  'better-sqlite3': BetterSQLite3Database<TSchema>;
86
74
  };
87
- type ClientParams<TClientType extends DatabaseClientType> = ClientConnectionConfigMap[TClientType];
88
- type InitializerParams<TClientType extends DatabaseClientType, TSchema extends Record<string, unknown> = Record<string, never>> = {
89
- client: TClientType;
90
- connection: ClientParams<TClientType>;
91
- } & DrizzleConfig<TSchema>;
92
- type DetermineClient<TParams extends InitializerParams<any, any>, TSchema extends Record<string, unknown> = TParams extends {
93
- schema: Record<string, unknown>;
94
- } ? TParams['schema'] : Record<string, never>> = TParams extends {
95
- client: DatabaseClientType;
96
- } ? ClientDrizzleInstanceMap<TSchema>[TParams['client']] : never;
97
- export declare const drizzle: <TClientType extends DatabaseClientType, TSchema extends Record<string, any>, TParams extends InitializerParams<TClientType, TSchema>>(params: TParams) => Promise<DetermineClient<TParams>>;
75
+ type InitializerParams<TSchema extends Record<string, unknown> = Record<string, never>> = ({
76
+ client: 'node-postgres';
77
+ connection: NodePGPoolConfig;
78
+ } & DrizzleConfig<TSchema>) | ({
79
+ client: 'postgres-js';
80
+ connection: PostgresJSOptions<Record<string, PostgresJSPostgresType>>;
81
+ } & DrizzleConfig<TSchema>) | ({
82
+ client: 'neon-serverless';
83
+ connection: NeonServerlessConfig;
84
+ } & DrizzleConfig<TSchema>) | ({
85
+ client: 'neon-http';
86
+ connection: MonodriverNeonHttpConfig;
87
+ } & DrizzleConfig<TSchema>) | ({
88
+ client: 'vercel-postgres';
89
+ connection: VercelPool;
90
+ } & DrizzleConfig<TSchema>) | ({
91
+ client: 'aws-data-api-pg';
92
+ connection: RDSConfig;
93
+ } & DrizzleAwsDataApiPgConfig<TSchema>) | ({
94
+ client: 'planetscale';
95
+ connection: PlanetscaleConfig;
96
+ } & DrizzleConfig<TSchema>) | ({
97
+ client: 'mysql2';
98
+ connection: Mysql2Config;
99
+ } & MySql2DrizzleConfig<TSchema>) | ({
100
+ client: 'tidb-serverless';
101
+ connection: TiDBServerlessConfig;
102
+ } & DrizzleConfig<TSchema>) | ({
103
+ client: 'libsql';
104
+ connection: LibsqlConfig;
105
+ } & DrizzleConfig<TSchema>) | ({
106
+ client: 'd1';
107
+ connection: D1Database;
108
+ } & DrizzleConfig<TSchema>) | ({
109
+ client: 'bun-sqlite';
110
+ connection: BunSqliteDatabaseConfig;
111
+ } & DrizzleConfig<TSchema>) | ({
112
+ client: 'better-sqlite3';
113
+ connection: BetterSQLite3DatabaseConfig;
114
+ } & DrizzleConfig<TSchema>);
115
+ type DetermineClient<TParams extends InitializerParams<any>> = ClientDrizzleInstanceMap<TParams['schema']>[TParams['client']];
116
+ export declare const drizzle: <TSchema extends Record<string, any>, TParams extends InitializerParams<TSchema>>(params: TParams) => Promise<DetermineClient<TParams>>;
98
117
  export {};
package/monodriver.js CHANGED
@@ -1,9 +1,8 @@
1
- import { drizzle as rdsPgDrizzle } from "./aws-data-api/pg/index.js";
2
- import { drizzle as betterSqliteDrizzle } from "./better-sqlite3/index.js";
3
- import { drizzle as bunSqliteDrizzle } from "./bun-sqlite/index.js";
4
- import { drizzle as d1Drizzle } from "./d1/index.js";
5
- import { drizzle as libsqlDrizzle } from "./libsql/index.js";
6
- import { drizzle as pgDrizzle } from "./node-postgres/index.js";
1
+ const importError = (libName) => {
2
+ throw new Error(
3
+ `Drizzle init error: unable to import selected database driver library '${libName}' - make sure it is installed.`
4
+ );
5
+ };
7
6
  const drizzle = async (params) => {
8
7
  const { client, connection } = params;
9
8
  const drizzleConfig = params;
@@ -11,37 +10,88 @@ const drizzle = async (params) => {
11
10
  delete drizzleConfig.connection;
12
11
  switch (client) {
13
12
  case "node-postgres": {
14
- const { Pool } = await import("pg");
13
+ const { Pool } = await import("pg").catch(() => importError("pg"));
14
+ const { drizzle: drizzle2 } = await import("./node-postgres");
15
15
  const instance = new Pool(connection);
16
- return pgDrizzle(instance, drizzleConfig);
16
+ return drizzle2(instance, drizzleConfig);
17
17
  }
18
18
  case "aws-data-api-pg": {
19
- const { RDSDataClient } = await import("@aws-sdk/client-rds-data");
19
+ const { RDSDataClient } = await import("@aws-sdk/client-rds-data").catch(
20
+ () => importError("@aws-sdk/client-rds-data")
21
+ );
22
+ const { drizzle: drizzle2 } = await import("./aws-data-api/pg");
20
23
  const instance = new RDSDataClient(connection);
21
- return rdsPgDrizzle(instance, drizzleConfig);
24
+ return drizzle2(instance, drizzleConfig);
22
25
  }
23
26
  case "better-sqlite3": {
24
- const { default: Client } = await import("better-sqlite3");
27
+ const { default: Client } = await import("better-sqlite3").catch(() => importError("better-sqlite3"));
25
28
  const { filename, options } = connection;
29
+ const { drizzle: drizzle2 } = await import("./better-sqlite3");
26
30
  const instance = new Client(filename, options);
27
- return betterSqliteDrizzle(instance, drizzleConfig);
31
+ return drizzle2(instance, drizzleConfig);
28
32
  }
29
33
  case "bun-sqlite": {
30
- const { Database: Client } = await import("bun:sqlite");
34
+ const { Database: Client } = await import("bun:sqlite").catch(() => importError("bun:sqlite"));
31
35
  const { filename, options } = connection;
36
+ const { drizzle: drizzle2 } = await import("./bun-sqlite");
32
37
  const instance = new Client(filename, options);
33
- return bunSqliteDrizzle(instance, drizzleConfig);
38
+ return drizzle2(instance, drizzleConfig);
34
39
  }
35
40
  case "d1": {
36
- return d1Drizzle(connection, drizzleConfig);
41
+ const { drizzle: drizzle2 } = await import("./d1");
42
+ return drizzle2(connection, drizzleConfig);
37
43
  }
38
44
  case "libsql": {
39
- const { createClient } = await import("@libsql/client");
45
+ const { createClient } = await import("@libsql/client").catch(() => importError("@libsql/client"));
46
+ const { drizzle: drizzle2 } = await import("./libsql");
40
47
  const instance = createClient(connection);
41
- return libsqlDrizzle(instance, drizzleConfig);
48
+ return drizzle2(instance, drizzleConfig);
49
+ }
50
+ case "mysql2": {
51
+ const { createConnection } = await import("mysql2/promise").catch(() => importError("mysql2/promise"));
52
+ const instance = await createConnection(connection);
53
+ const { drizzle: drizzle2 } = await import("./mysql2");
54
+ return drizzle2(instance, drizzleConfig);
55
+ }
56
+ case "neon-http": {
57
+ const { neon } = await import("@neondatabase/serverless").catch(() => importError("@neondatabase/serverless"));
58
+ const { connectionString, options } = connection;
59
+ const { drizzle: drizzle2 } = await import("./neon-http");
60
+ const instance = neon(connectionString, options);
61
+ return drizzle2(instance, drizzleConfig);
62
+ }
63
+ case "neon-serverless": {
64
+ const { Pool } = await import("@neondatabase/serverless").catch(() => importError("@neondatabase/serverless"));
65
+ const { drizzle: drizzle2 } = await import("./neon-serverless");
66
+ const instance = new Pool(connection);
67
+ return drizzle2(instance, drizzleConfig);
68
+ }
69
+ case "planetscale": {
70
+ const { Client } = await import("@planetscale/database").catch(() => importError("@planetscale/database"));
71
+ const { drizzle: drizzle2 } = await import("./planetscale-serverless");
72
+ const instance = new Client(
73
+ connection
74
+ );
75
+ return drizzle2(instance, drizzleConfig);
76
+ }
77
+ case "postgres-js": {
78
+ const { default: client2 } = await import("postgres").catch(() => importError("postgres"));
79
+ const { drizzle: drizzle2 } = await import("./postgres-js");
80
+ const instance = client2(connection);
81
+ return drizzle2(instance, drizzleConfig);
82
+ }
83
+ case "tidb-serverless": {
84
+ const { connect } = await import("@tidbcloud/serverless").catch(() => importError("@tidbcloud/serverless"));
85
+ const { drizzle: drizzle2 } = await import("./tidb-serverless");
86
+ const instance = connect(connection);
87
+ return drizzle2(instance, drizzleConfig);
88
+ }
89
+ case "vercel-postgres": {
90
+ const { sql } = await import("@vercel/postgres").catch(() => importError("@vercel/postgres"));
91
+ const { drizzle: drizzle2 } = await import("./vercel-postgres");
92
+ return drizzle2(sql, drizzleConfig);
42
93
  }
43
94
  }
44
- return {};
45
95
  };
46
96
  export {
47
97
  drizzle
package/monodriver.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/monodriver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\nimport type { RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';\nimport type { Config as LibsqlConfig } from '@libsql/client';\nimport type { ClientConfig as NeonHttpConfig, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';\nimport type { Config as PlanetscaleConfig } from '@planetscale/database';\nimport type { Config as TiDBServerlessConfig } from '@tidbcloud/serverless';\nimport type { VercelPostgresPoolConfig as VercelPostgresConfig } from '@vercel/postgres';\nimport type { Options as BetterSQLite3Options } from 'better-sqlite3';\nimport type { ConnectionConfig as Mysql2Config } from 'mysql2';\nimport type { PoolConfig as NodePGPoolConfig } from 'pg';\nimport type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType } from 'postgres';\nimport type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from './aws-data-api/pg/index.ts';\nimport type { BetterSQLite3Database } from './better-sqlite3/index.ts';\nimport type { BunSQLiteDatabase } from './bun-sqlite/index.ts';\nimport type { DrizzleD1Database } from './d1/index.ts';\nimport type { LibSQLDatabase } from './libsql/index.ts';\nimport type { MySql2Database } from './mysql2/index.ts';\nimport type { NeonHttpDatabase } from './neon-http/index.ts';\nimport type { NeonDatabase } from './neon-serverless/index.ts';\nimport type { NodePgDatabase } from './node-postgres/index.ts';\nimport type { PlanetScaleDatabase } from './planetscale-serverless/index.ts';\nimport type { PostgresJsDatabase } from './postgres-js/index.ts';\nimport type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';\nimport type { DrizzleConfig } from './utils.ts';\nimport type { VercelPgDatabase } from './vercel-postgres/index.ts';\n\ntype BunSqliteDatabaseOptions =\n\t| number\n\t| {\n\t\t/**\n\t\t * Open the database as read-only (no write operations, no create).\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t\t */\n\t\treadonly?: boolean;\n\t\t/**\n\t\t * Allow creating a new database\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t\t */\n\t\tcreate?: boolean;\n\t\t/**\n\t\t * Open the database as read-write\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t\t */\n\t\treadwrite?: boolean;\n\t};\n\ntype BunSqliteDatabaseConfig = {\n\tfilename?: string;\n\toptions?: BunSqliteDatabaseOptions;\n};\n\ntype BetterSQLite3DatabaseConfig = {\n\tfilename?: string | Buffer;\n\toptions?: BetterSQLite3Options;\n};\n\ntype DatabaseClientType =\n\t| 'node-postgres'\n\t| 'postgres.js'\n\t| 'neon-serverless'\n\t| 'neon-http'\n\t| 'vercel-postgres'\n\t| 'aws-data-api-pg'\n\t| 'planetscale'\n\t| 'mysql2'\n\t| 'tidb-serverless'\n\t| 'libsql'\n\t| 'd1'\n\t| 'bun-sqlite'\n\t| 'better-sqlite3';\n\ntype ClientConnectionConfigMap = {\n\t'node-postgres': NodePGPoolConfig;\n\t'postgres.js': PostgresJSOptions<Record<string, PostgresJSPostgresType>>;\n\t'neon-serverless': NeonServerlessConfig;\n\t'neon-http': NeonHttpConfig;\n\t'vercel-postgres': VercelPostgresConfig;\n\t'aws-data-api-pg': RDSConfig;\n\tplanetscale: PlanetscaleConfig;\n\tmysql2: Mysql2Config;\n\t'tidb-serverless': TiDBServerlessConfig;\n\tlibsql: LibsqlConfig;\n\td1: D1Database;\n\t'bun-sqlite': BunSqliteDatabaseConfig;\n\t'better-sqlite3': BetterSQLite3DatabaseConfig;\n};\n\ntype ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {\n\t'node-postgres': NodePgDatabase<TSchema>;\n\t'postgres.js': PostgresJsDatabase<TSchema>;\n\t'neon-serverless': NeonDatabase<TSchema>;\n\t'neon-http': NeonHttpDatabase<TSchema>;\n\t'vercel-postgres': VercelPgDatabase<TSchema>;\n\t'aws-data-api-pg': AwsDataApiPgDatabase<TSchema>;\n\tplanetscale: PlanetScaleDatabase<TSchema>;\n\tmysql2: MySql2Database<TSchema>;\n\t'tidb-serverless': TiDBServerlessDatabase<TSchema>;\n\tlibsql: LibSQLDatabase<TSchema>;\n\td1: DrizzleD1Database<TSchema>;\n\t'bun-sqlite': BunSQLiteDatabase<TSchema>;\n\t'better-sqlite3': BetterSQLite3Database<TSchema>;\n};\n\ntype ClientParams<TClientType extends DatabaseClientType> = ClientConnectionConfigMap[TClientType];\n\ntype InitializerParams<\n\tTClientType extends DatabaseClientType,\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = {\n\tclient: TClientType;\n\tconnection: ClientParams<TClientType>;\n} & DrizzleConfig<TSchema>;\n\ntype DetermineClient<\n\tTParams extends InitializerParams<any, any>,\n\tTSchema extends Record<string, unknown> = TParams extends { schema: Record<string, unknown> } ? TParams['schema']\n\t\t: Record<string, never>,\n> = TParams extends { client: DatabaseClientType } ? ClientDrizzleInstanceMap<TSchema>[TParams['client']]\n\t: never;\n\nimport { drizzle as rdsPgDrizzle } from './aws-data-api/pg/index.ts';\nimport { drizzle as betterSqliteDrizzle } from './better-sqlite3/index.ts';\nimport { drizzle as bunSqliteDrizzle } from './bun-sqlite/index.ts';\nimport { drizzle as d1Drizzle } from './d1/index.ts';\nimport { drizzle as libsqlDrizzle } from './libsql/index.ts';\n// import { drizzle as mysql2Drizzle } from './mysql2/index.ts';\n// import { drizzle as neonHttpDrizzle } from './neon-http/index.ts';\n// import { drizzle as neonDrizzle } from './neon-serverless/index.ts';\nimport { drizzle as pgDrizzle } from './node-postgres/index.ts';\n// import { drizzle as planetscaleDrizzle } from './planetscale-serverless/index.ts';\n// import { drizzle as postgresJSDrizzle } from './postgres-js/index.ts';\n// import { drizzle as tidbDrizzle } from './tidb-serverless/index.ts';\n// import { drizzle as vercelDrizzle } from './vercel-postgres/index.ts';\n\nexport const drizzle = async <\n\tTClientType extends DatabaseClientType,\n\tTSchema extends Record<string, any>,\n\tTParams extends InitializerParams<TClientType, TSchema>,\n>(params: TParams): Promise<DetermineClient<TParams>> => {\n\tconst { client, connection } = params;\n\tconst drizzleConfig = params as Omit<typeof params, 'client' | 'connection'>;\n\t// @ts-expect-error\n\tdelete drizzleConfig.client;\n\t// @ts-expect-error\n\tdelete drizzleConfig.connection;\n\n\tswitch (client) {\n\t\tcase 'node-postgres': {\n\t\t\tconst { Pool } = await import('pg');\n\t\t\tconst instance = new Pool(connection as NodePGPoolConfig);\n\n\t\t\treturn pgDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'aws-data-api-pg': {\n\t\t\tconst { RDSDataClient } = await import('@aws-sdk/client-rds-data');\n\t\t\tconst instance = new RDSDataClient(connection);\n\n\t\t\treturn rdsPgDrizzle(instance, drizzleConfig as any as DrizzleAwsDataApiPgConfig) as any;\n\t\t}\n\t\tcase 'better-sqlite3': {\n\t\t\tconst { default: Client } = await import('better-sqlite3');\n\t\t\tconst { filename, options } = connection as BetterSQLite3DatabaseConfig;\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn betterSqliteDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'bun-sqlite': {\n\t\t\tconst { Database: Client } = await import('bun:sqlite');\n\t\t\tconst { filename, options } = connection as BunSqliteDatabaseConfig;\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn bunSqliteDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'd1': {\n\t\t\treturn d1Drizzle(connection as D1Database, drizzleConfig) as any;\n\t\t}\n\t\tcase 'libsql': {\n\t\t\tconst { createClient } = await import('@libsql/client');\n\t\t\tconst instance = createClient(connection as LibsqlConfig);\n\n\t\t\treturn libsqlDrizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\t\t// case 'mysql2': {\n\t\t\t// }\n\t\t\t// case 'neon-http': {\n\t\t\t// }\n\t\t\t// case 'neon-serverless': {\n\t\t\t// }\n\t\t\t// case 'planetscale': {\n\t\t\t// }\n\t\t\t// case 'postgres.js': {\n\t\t\t// }\n\t\t\t// case 'tidb-serverless': {\n\t\t\t// }\n\t\t\t// case 'vercel-postgres': {\n\t\t\t// }\n\t}\n\n\t// @ts-ignore\n\treturn {};\n};\n"],"mappings":"AA2HA,SAAS,WAAW,oBAAoB;AACxC,SAAS,WAAW,2BAA2B;AAC/C,SAAS,WAAW,wBAAwB;AAC5C,SAAS,WAAW,iBAAiB;AACrC,SAAS,WAAW,qBAAqB;AAIzC,SAAS,WAAW,iBAAiB;AAM9B,MAAM,UAAU,OAIrB,WAAuD;AACxD,QAAM,EAAE,QAAQ,WAAW,IAAI;AAC/B,QAAM,gBAAgB;AAEtB,SAAO,cAAc;AAErB,SAAO,cAAc;AAErB,UAAQ,QAAQ;AAAA,IACf,KAAK,iBAAiB;AACrB,YAAM,EAAE,KAAK,IAAI,MAAM,OAAO,IAAI;AAClC,YAAM,WAAW,IAAI,KAAK,UAA8B;AAExD,aAAO,UAAU,UAAU,aAAa;AAAA,IACzC;AAAA,IACA,KAAK,mBAAmB;AACvB,YAAM,EAAE,cAAc,IAAI,MAAM,OAAO,0BAA0B;AACjE,YAAM,WAAW,IAAI,cAAc,UAAU;AAE7C,aAAO,aAAa,UAAU,aAAiD;AAAA,IAChF;AAAA,IACA,KAAK,kBAAkB;AACtB,YAAM,EAAE,SAAS,OAAO,IAAI,MAAM,OAAO,gBAAgB;AACzD,YAAM,EAAE,UAAU,QAAQ,IAAI;AAC9B,YAAM,WAAW,IAAI,OAAO,UAAU,OAAO;AAE7C,aAAO,oBAAoB,UAAU,aAAa;AAAA,IACnD;AAAA,IACA,KAAK,cAAc;AAClB,YAAM,EAAE,UAAU,OAAO,IAAI,MAAM,OAAO,YAAY;AACtD,YAAM,EAAE,UAAU,QAAQ,IAAI;AAC9B,YAAM,WAAW,IAAI,OAAO,UAAU,OAAO;AAE7C,aAAO,iBAAiB,UAAU,aAAa;AAAA,IAChD;AAAA,IACA,KAAK,MAAM;AACV,aAAO,UAAU,YAA0B,aAAa;AAAA,IACzD;AAAA,IACA,KAAK,UAAU;AACd,YAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gBAAgB;AACtD,YAAM,WAAW,aAAa,UAA0B;AAExD,aAAO,cAAc,UAAU,aAAa;AAAA,IAC7C;AAAA,EAeD;AAGA,SAAO,CAAC;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/monodriver.ts"],"sourcesContent":["/* eslint-disable import/extensions */\nimport type { RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';\nimport type { Config as LibsqlConfig } from '@libsql/client';\nimport type {\n\tHTTPTransactionOptions as NeonHttpConfig,\n\tPoolConfig as NeonServerlessConfig,\n} from '@neondatabase/serverless';\nimport type { Config as PlanetscaleConfig } from '@planetscale/database';\nimport type { Config as TiDBServerlessConfig } from '@tidbcloud/serverless';\nimport type { VercelPool } from '@vercel/postgres';\nimport type { Options as BetterSQLite3Options } from 'better-sqlite3';\nimport type { PoolOptions as Mysql2Config } from 'mysql2';\nimport type { PoolConfig as NodePGPoolConfig } from 'pg';\nimport type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType } from 'postgres';\nimport type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from './aws-data-api/pg/index.ts';\nimport type { BetterSQLite3Database } from './better-sqlite3/index.ts';\nimport type { BunSQLiteDatabase } from './bun-sqlite/index.ts';\nimport type { DrizzleD1Database } from './d1/index.ts';\nimport type { LibSQLDatabase } from './libsql/index.ts';\nimport type { MySql2Database, MySql2DrizzleConfig } from './mysql2/index.ts';\nimport type { NeonHttpDatabase } from './neon-http/index.ts';\nimport type { NeonDatabase } from './neon-serverless/index.ts';\nimport type { NodePgDatabase } from './node-postgres/index.ts';\nimport type { PlanetScaleDatabase } from './planetscale-serverless/index.ts';\nimport type { PostgresJsDatabase } from './postgres-js/index.ts';\nimport type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';\nimport type { DrizzleConfig } from './utils.ts';\nimport type { VercelPgDatabase } from './vercel-postgres/index.ts';\n\ntype BunSqliteDatabaseOptions =\n\t| number\n\t| {\n\t\t/**\n\t\t * Open the database as read-only (no write operations, no create).\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t\t */\n\t\treadonly?: boolean;\n\t\t/**\n\t\t * Allow creating a new database\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t\t */\n\t\tcreate?: boolean;\n\t\t/**\n\t\t * Open the database as read-write\n\t\t *\n\t\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t\t */\n\t\treadwrite?: boolean;\n\t};\n\ntype BunSqliteDatabaseConfig = {\n\tfilename?: string;\n\toptions?: BunSqliteDatabaseOptions;\n};\n\ntype BetterSQLite3DatabaseConfig = {\n\tfilename?: string | Buffer;\n\toptions?: BetterSQLite3Options;\n};\n\ntype MonodriverNeonHttpConfig = {\n\tconnectionString: string;\n\toptions?: NeonHttpConfig<boolean, boolean>;\n};\n\ntype ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {\n\t'node-postgres': NodePgDatabase<TSchema>;\n\t'postgres-js': PostgresJsDatabase<TSchema>;\n\t'neon-serverless': NeonDatabase<TSchema>;\n\t'neon-http': NeonHttpDatabase<TSchema>;\n\t'vercel-postgres': VercelPgDatabase<TSchema>;\n\t'aws-data-api-pg': AwsDataApiPgDatabase<TSchema>;\n\tplanetscale: PlanetScaleDatabase<TSchema>;\n\tmysql2: MySql2Database<TSchema>;\n\t'tidb-serverless': TiDBServerlessDatabase<TSchema>;\n\tlibsql: LibSQLDatabase<TSchema>;\n\td1: DrizzleD1Database<TSchema>;\n\t'bun-sqlite': BunSQLiteDatabase<TSchema>;\n\t'better-sqlite3': BetterSQLite3Database<TSchema>;\n};\n\ntype InitializerParams<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> =\n\t| ({\n\t\tclient: 'node-postgres';\n\t\tconnection: NodePGPoolConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'postgres-js';\n\t\tconnection: PostgresJSOptions<Record<string, PostgresJSPostgresType>>;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'neon-serverless';\n\t\tconnection: NeonServerlessConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'neon-http';\n\t\tconnection: MonodriverNeonHttpConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'vercel-postgres';\n\t\tconnection: VercelPool;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'aws-data-api-pg';\n\t\tconnection: RDSConfig;\n\t} & DrizzleAwsDataApiPgConfig<TSchema>)\n\t| ({\n\t\tclient: 'planetscale';\n\t\tconnection: PlanetscaleConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'mysql2';\n\t\tconnection: Mysql2Config;\n\t} & MySql2DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'tidb-serverless';\n\t\tconnection: TiDBServerlessConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'libsql';\n\t\tconnection: LibsqlConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'd1';\n\t\tconnection: D1Database;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'bun-sqlite';\n\t\tconnection: BunSqliteDatabaseConfig;\n\t} & DrizzleConfig<TSchema>)\n\t| ({\n\t\tclient: 'better-sqlite3';\n\t\tconnection: BetterSQLite3DatabaseConfig;\n\t} & DrizzleConfig<TSchema>);\n\ntype DetermineClient<\n\tTParams extends InitializerParams<any>,\n> = ClientDrizzleInstanceMap<TParams['schema']>[TParams['client']];\n\nconst importError = (libName: string) => {\n\tthrow new Error(\n\t\t`Drizzle init error: unable to import selected database driver library '${libName}' - make sure it is installed.`,\n\t);\n};\n\nexport const drizzle = async <\n\tTSchema extends Record<string, any>,\n\tTParams extends InitializerParams<TSchema>,\n>(params: TParams): Promise<DetermineClient<TParams>> => {\n\tconst { client, connection } = params;\n\tconst drizzleConfig = params as DrizzleConfig;\n\tdelete (<any> drizzleConfig).client;\n\tdelete (<any> drizzleConfig).connection;\n\n\tswitch (client) {\n\t\tcase 'node-postgres': {\n\t\t\tconst { Pool } = await import('pg').catch(() => importError('pg'));\n\t\t\tconst { drizzle } = await import('./node-postgres');\n\t\t\tconst instance = new Pool(connection as NodePGPoolConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'aws-data-api-pg': {\n\t\t\tconst { RDSDataClient } = await import('@aws-sdk/client-rds-data').catch(() =>\n\t\t\t\timportError('@aws-sdk/client-rds-data')\n\t\t\t);\n\t\t\tconst { drizzle } = await import('./aws-data-api/pg');\n\t\t\tconst instance = new RDSDataClient(connection);\n\n\t\t\treturn drizzle(instance, drizzleConfig as any as DrizzleAwsDataApiPgConfig) as any;\n\t\t}\n\t\tcase 'better-sqlite3': {\n\t\t\tconst { default: Client } = await import('better-sqlite3').catch(() => importError('better-sqlite3'));\n\t\t\tconst { filename, options } = connection as BetterSQLite3DatabaseConfig;\n\t\t\tconst { drizzle } = await import('./better-sqlite3');\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'bun-sqlite': {\n\t\t\tconst { Database: Client } = await import('bun:sqlite').catch(() => importError('bun:sqlite'));\n\t\t\tconst { filename, options } = connection as BunSqliteDatabaseConfig;\n\t\t\tconst { drizzle } = await import('./bun-sqlite');\n\t\t\tconst instance = new Client(filename, options);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'd1': {\n\t\t\tconst { drizzle } = await import('./d1');\n\t\t\treturn drizzle(connection as D1Database, drizzleConfig) as any;\n\t\t}\n\t\tcase 'libsql': {\n\t\t\tconst { createClient } = await import('@libsql/client').catch(() => importError('@libsql/client'));\n\t\t\tconst { drizzle } = await import('./libsql');\n\t\t\tconst instance = createClient(connection as LibsqlConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'mysql2': {\n\t\t\tconst { createConnection } = await import('mysql2/promise').catch(() => importError('mysql2/promise'));\n\t\t\tconst instance = await createConnection(connection as Mysql2Config);\n\t\t\tconst { drizzle } = await import('./mysql2');\n\n\t\t\treturn drizzle(instance, drizzleConfig as MySql2DrizzleConfig) as any;\n\t\t}\n\t\tcase 'neon-http': {\n\t\t\tconst { neon } = await import('@neondatabase/serverless').catch(() => importError('@neondatabase/serverless'));\n\t\t\tconst { connectionString, options } = connection as MonodriverNeonHttpConfig;\n\t\t\tconst { drizzle } = await import('./neon-http');\n\t\t\tconst instance = neon(connectionString, options);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'neon-serverless': {\n\t\t\tconst { Pool } = await import('@neondatabase/serverless').catch(() => importError('@neondatabase/serverless'));\n\t\t\tconst { drizzle } = await import('./neon-serverless');\n\t\t\tconst instance = new Pool(connection as NeonServerlessConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'planetscale': {\n\t\t\tconst { Client } = await import('@planetscale/database').catch(() => importError('@planetscale/database'));\n\t\t\tconst { drizzle } = await import('./planetscale-serverless');\n\t\t\tconst instance = new Client(\n\t\t\t\tconnection as PlanetscaleConfig,\n\t\t\t);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'postgres-js': {\n\t\t\tconst { default: client } = await import('postgres').catch(() => importError('postgres'));\n\t\t\tconst { drizzle } = await import('./postgres-js');\n\t\t\tconst instance = client(connection as PostgresJSOptions<Record<string, PostgresJSPostgresType>>);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'tidb-serverless': {\n\t\t\tconst { connect } = await import('@tidbcloud/serverless').catch(() => importError('@tidbcloud/serverless'));\n\t\t\tconst { drizzle } = await import('./tidb-serverless');\n\t\t\tconst instance = connect(connection as TiDBServerlessConfig);\n\n\t\t\treturn drizzle(instance, drizzleConfig) as any;\n\t\t}\n\t\tcase 'vercel-postgres': {\n\t\t\tconst { sql } = await import('@vercel/postgres').catch(() => importError('@vercel/postgres'));\n\t\t\tconst { drizzle } = await import('./vercel-postgres');\n\n\t\t\treturn drizzle(sql, drizzleConfig) as any;\n\t\t}\n\t}\n};\n"],"mappings":"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","names":["drizzle","client"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.33.0-87d7704",
3
+ "version": "0.33.0-8db0aa4",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,5 +1,5 @@
1
- /// <reference types="bun-types" />
2
1
  /// <reference types="node" />
2
+ /// <reference types="bun-types" />
3
3
  import type { ColumnBuilderBaseConfig } from "../../column-builder.cjs";
4
4
  import type { ColumnBaseConfig } from "../../column.cjs";
5
5
  import { entityKind } from "../../entity.cjs";
@@ -1,5 +1,5 @@
1
- /// <reference types="bun-types" />
2
1
  /// <reference types="node" />
2
+ /// <reference types="bun-types" />
3
3
  import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
4
4
  import type { ColumnBaseConfig } from "../../column.js";
5
5
  import { entityKind } from "../../entity.js";
package/version.cjs CHANGED
@@ -26,7 +26,7 @@ __export(version_exports, {
26
26
  module.exports = __toCommonJS(version_exports);
27
27
 
28
28
  // package.json
29
- var version = "0.33.0-87d7704";
29
+ var version = "0.33.0-8db0aa4";
30
30
 
31
31
  // src/version.ts
32
32
  var compatibilityVersion = 7;
package/version.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- var version = "0.33.0-87d7704";
1
+ var version = "0.33.0-8db0aa4";
2
2
 
3
3
  declare const compatibilityVersion = 7;
4
4
 
package/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- var version = "0.33.0-87d7704";
1
+ var version = "0.33.0-8db0aa4";
2
2
 
3
3
  declare const compatibilityVersion = 7;
4
4
 
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "0.33.0-87d7704";
2
+ var version = "0.33.0-8db0aa4";
3
3
 
4
4
  // src/version.ts
5
5
  var compatibilityVersion = 7;