drizzle-orm 0.33.0-87d7704 → 0.33.0-8944ef1

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.
Files changed (262) hide show
  1. package/better-sqlite3/driver.cjs +7 -1
  2. package/better-sqlite3/driver.cjs.map +1 -1
  3. package/better-sqlite3/driver.d.cts +4 -1
  4. package/better-sqlite3/driver.d.ts +4 -1
  5. package/better-sqlite3/driver.js +6 -1
  6. package/better-sqlite3/driver.js.map +1 -1
  7. package/bun-sqlite/driver.cjs +7 -1
  8. package/bun-sqlite/driver.cjs.map +1 -1
  9. package/bun-sqlite/driver.d.cts +4 -1
  10. package/bun-sqlite/driver.d.ts +4 -1
  11. package/bun-sqlite/driver.js +6 -1
  12. package/bun-sqlite/driver.js.map +1 -1
  13. package/expo-sqlite/driver.cjs +7 -1
  14. package/expo-sqlite/driver.cjs.map +1 -1
  15. package/expo-sqlite/driver.d.cts +4 -1
  16. package/expo-sqlite/driver.d.ts +4 -1
  17. package/expo-sqlite/driver.js +6 -1
  18. package/expo-sqlite/driver.js.map +1 -1
  19. package/index.cjs +2 -0
  20. package/index.cjs.map +1 -1
  21. package/index.d.cts +1 -0
  22. package/index.d.ts +1 -0
  23. package/index.js +1 -0
  24. package/index.js.map +1 -1
  25. package/libsql/migrator.cjs +1 -1
  26. package/libsql/migrator.cjs.map +1 -1
  27. package/libsql/migrator.d.cts +1 -1
  28. package/libsql/migrator.d.ts +1 -1
  29. package/libsql/migrator.js +1 -1
  30. package/libsql/migrator.js.map +1 -1
  31. package/libsql/session.cjs +12 -0
  32. package/libsql/session.cjs.map +1 -1
  33. package/libsql/session.d.cts +1 -0
  34. package/libsql/session.d.ts +1 -0
  35. package/libsql/session.js +12 -0
  36. package/libsql/session.js.map +1 -1
  37. package/monodriver.cjs +123 -29
  38. package/monodriver.cjs.map +1 -1
  39. package/monodriver.d.cts +89 -47
  40. package/monodriver.d.ts +89 -47
  41. package/monodriver.js +123 -29
  42. package/monodriver.js.map +1 -1
  43. package/monomigrator.cjs +95 -0
  44. package/monomigrator.cjs.map +1 -0
  45. package/monomigrator.d.cts +15 -0
  46. package/monomigrator.d.ts +15 -0
  47. package/monomigrator.js +61 -0
  48. package/monomigrator.js.map +1 -0
  49. package/mysql-core/db.cjs +4 -0
  50. package/mysql-core/db.cjs.map +1 -1
  51. package/mysql-core/db.d.cts +4 -1
  52. package/mysql-core/db.d.ts +4 -1
  53. package/mysql-core/db.js +4 -0
  54. package/mysql-core/db.js.map +1 -1
  55. package/mysql-core/query-builders/count.cjs +73 -0
  56. package/mysql-core/query-builders/count.cjs.map +1 -0
  57. package/mysql-core/query-builders/count.d.cts +27 -0
  58. package/mysql-core/query-builders/count.d.ts +27 -0
  59. package/mysql-core/query-builders/count.js +49 -0
  60. package/mysql-core/query-builders/count.js.map +1 -0
  61. package/mysql-core/session.cjs +6 -0
  62. package/mysql-core/session.cjs.map +1 -1
  63. package/mysql-core/session.d.cts +1 -0
  64. package/mysql-core/session.d.ts +1 -0
  65. package/mysql-core/session.js +6 -0
  66. package/mysql-core/session.js.map +1 -1
  67. package/mysql-proxy/driver.cjs +7 -1
  68. package/mysql-proxy/driver.cjs.map +1 -1
  69. package/mysql-proxy/driver.d.cts +4 -1
  70. package/mysql-proxy/driver.d.ts +4 -1
  71. package/mysql-proxy/driver.js +6 -1
  72. package/mysql-proxy/driver.js.map +1 -1
  73. package/mysql2/driver.cjs +6 -1
  74. package/mysql2/driver.cjs.map +1 -1
  75. package/mysql2/driver.d.cts +3 -1
  76. package/mysql2/driver.d.ts +3 -1
  77. package/mysql2/driver.js +5 -1
  78. package/mysql2/driver.js.map +1 -1
  79. package/mysql2/migrator.cjs +4 -1
  80. package/mysql2/migrator.cjs.map +1 -1
  81. package/mysql2/migrator.d.cts +1 -1
  82. package/mysql2/migrator.d.ts +1 -1
  83. package/mysql2/migrator.js +4 -1
  84. package/mysql2/migrator.js.map +1 -1
  85. package/neon/index.cjs +23 -0
  86. package/neon/index.cjs.map +1 -0
  87. package/neon/index.d.cts +1 -0
  88. package/neon/index.d.ts +1 -0
  89. package/neon/index.js +2 -0
  90. package/neon/index.js.map +1 -0
  91. package/neon/rls.cjs +81 -0
  92. package/neon/rls.cjs.map +1 -0
  93. package/neon/rls.d.cts +13 -0
  94. package/neon/rls.d.ts +13 -0
  95. package/neon/rls.js +54 -0
  96. package/neon/rls.js.map +1 -0
  97. package/neon-http/session.cjs +6 -0
  98. package/neon-http/session.cjs.map +1 -1
  99. package/neon-http/session.d.cts +2 -1
  100. package/neon-http/session.d.ts +2 -1
  101. package/neon-http/session.js +6 -0
  102. package/neon-http/session.js.map +1 -1
  103. package/neon-serverless/driver.cjs +6 -1
  104. package/neon-serverless/driver.cjs.map +1 -1
  105. package/neon-serverless/driver.d.cts +3 -1
  106. package/neon-serverless/driver.d.ts +3 -1
  107. package/neon-serverless/driver.js +5 -1
  108. package/neon-serverless/driver.js.map +1 -1
  109. package/node-postgres/driver.cjs +6 -1
  110. package/node-postgres/driver.cjs.map +1 -1
  111. package/node-postgres/driver.d.cts +3 -1
  112. package/node-postgres/driver.d.ts +3 -1
  113. package/node-postgres/driver.js +5 -1
  114. package/node-postgres/driver.js.map +1 -1
  115. package/node-postgres/session.cjs +6 -0
  116. package/node-postgres/session.cjs.map +1 -1
  117. package/node-postgres/session.d.cts +2 -1
  118. package/node-postgres/session.d.ts +2 -1
  119. package/node-postgres/session.js +6 -0
  120. package/node-postgres/session.js.map +1 -1
  121. package/op-sqlite/driver.cjs +7 -1
  122. package/op-sqlite/driver.cjs.map +1 -1
  123. package/op-sqlite/driver.d.cts +4 -1
  124. package/op-sqlite/driver.d.ts +4 -1
  125. package/op-sqlite/driver.js +6 -1
  126. package/op-sqlite/driver.js.map +1 -1
  127. package/operations.cjs.map +1 -1
  128. package/package.json +101 -5
  129. package/pg-core/db.cjs +4 -0
  130. package/pg-core/db.cjs.map +1 -1
  131. package/pg-core/db.d.cts +5 -2
  132. package/pg-core/db.d.ts +5 -2
  133. package/pg-core/db.js +4 -0
  134. package/pg-core/db.js.map +1 -1
  135. package/pg-core/index.cjs +4 -0
  136. package/pg-core/index.cjs.map +1 -1
  137. package/pg-core/index.d.cts +2 -0
  138. package/pg-core/index.d.ts +2 -0
  139. package/pg-core/index.js +2 -0
  140. package/pg-core/index.js.map +1 -1
  141. package/pg-core/policies.cjs +52 -0
  142. package/pg-core/policies.cjs.map +1 -0
  143. package/pg-core/policies.d.cts +22 -0
  144. package/pg-core/policies.d.ts +22 -0
  145. package/pg-core/policies.js +27 -0
  146. package/pg-core/policies.js.map +1 -0
  147. package/pg-core/query-builders/count.cjs +73 -0
  148. package/pg-core/query-builders/count.cjs.map +1 -0
  149. package/pg-core/query-builders/count.d.cts +26 -0
  150. package/pg-core/query-builders/count.d.ts +26 -0
  151. package/pg-core/query-builders/count.js +49 -0
  152. package/pg-core/query-builders/count.js.map +1 -0
  153. package/pg-core/roles.cjs +57 -0
  154. package/pg-core/roles.cjs.map +1 -0
  155. package/pg-core/roles.d.cts +13 -0
  156. package/pg-core/roles.d.ts +13 -0
  157. package/pg-core/roles.js +32 -0
  158. package/pg-core/roles.js.map +1 -0
  159. package/pg-core/session.cjs +6 -0
  160. package/pg-core/session.cjs.map +1 -1
  161. package/pg-core/session.d.cts +1 -0
  162. package/pg-core/session.d.ts +1 -0
  163. package/pg-core/session.js +6 -0
  164. package/pg-core/session.js.map +1 -1
  165. package/pg-core/table.cjs.map +1 -1
  166. package/pg-core/table.d.cts +2 -1
  167. package/pg-core/table.d.ts +2 -1
  168. package/pg-core/table.js.map +1 -1
  169. package/pg-core/utils.cjs +23 -2
  170. package/pg-core/utils.cjs.map +1 -1
  171. package/pg-core/utils.d.cts +2 -0
  172. package/pg-core/utils.d.ts +2 -0
  173. package/pg-core/utils.js +23 -2
  174. package/pg-core/utils.js.map +1 -1
  175. package/pg-proxy/driver.cjs +7 -1
  176. package/pg-proxy/driver.cjs.map +1 -1
  177. package/pg-proxy/driver.d.cts +4 -1
  178. package/pg-proxy/driver.d.ts +4 -1
  179. package/pg-proxy/driver.js +6 -1
  180. package/pg-proxy/driver.js.map +1 -1
  181. package/pg-proxy/session.cjs.map +1 -1
  182. package/pg-proxy/session.js.map +1 -1
  183. package/pglite/driver.cjs +6 -1
  184. package/pglite/driver.cjs.map +1 -1
  185. package/pglite/driver.d.cts +3 -1
  186. package/pglite/driver.d.ts +3 -1
  187. package/pglite/driver.js +5 -1
  188. package/pglite/driver.js.map +1 -1
  189. package/pglite/session.cjs +6 -0
  190. package/pglite/session.cjs.map +1 -1
  191. package/pglite/session.d.cts +2 -1
  192. package/pglite/session.d.ts +2 -1
  193. package/pglite/session.js +6 -0
  194. package/pglite/session.js.map +1 -1
  195. package/planetscale-serverless/driver.cjs +7 -1
  196. package/planetscale-serverless/driver.cjs.map +1 -1
  197. package/planetscale-serverless/driver.d.cts +4 -1
  198. package/planetscale-serverless/driver.d.ts +4 -1
  199. package/planetscale-serverless/driver.js +6 -1
  200. package/planetscale-serverless/driver.js.map +1 -1
  201. package/planetscale-serverless/migrator.cjs +4 -1
  202. package/planetscale-serverless/migrator.cjs.map +1 -1
  203. package/planetscale-serverless/migrator.d.cts +1 -1
  204. package/planetscale-serverless/migrator.d.ts +1 -1
  205. package/planetscale-serverless/migrator.js +4 -1
  206. package/planetscale-serverless/migrator.js.map +1 -1
  207. package/planetscale-serverless/session.cjs +6 -0
  208. package/planetscale-serverless/session.cjs.map +1 -1
  209. package/planetscale-serverless/session.d.cts +1 -0
  210. package/planetscale-serverless/session.d.ts +1 -0
  211. package/planetscale-serverless/session.js +6 -0
  212. package/planetscale-serverless/session.js.map +1 -1
  213. package/postgres-js/driver.cjs +7 -1
  214. package/postgres-js/driver.cjs.map +1 -1
  215. package/postgres-js/driver.d.cts +4 -1
  216. package/postgres-js/driver.d.ts +4 -1
  217. package/postgres-js/driver.js +6 -1
  218. package/postgres-js/driver.js.map +1 -1
  219. package/sqlite-core/columns/blob.d.cts +1 -1
  220. package/sqlite-core/columns/blob.d.ts +1 -1
  221. package/sqlite-core/db.cjs +4 -0
  222. package/sqlite-core/db.cjs.map +1 -1
  223. package/sqlite-core/db.d.cts +4 -1
  224. package/sqlite-core/db.d.ts +4 -1
  225. package/sqlite-core/db.js +4 -0
  226. package/sqlite-core/db.js.map +1 -1
  227. package/sqlite-core/query-builders/count.cjs +72 -0
  228. package/sqlite-core/query-builders/count.cjs.map +1 -0
  229. package/sqlite-core/query-builders/count.d.cts +27 -0
  230. package/sqlite-core/query-builders/count.d.ts +27 -0
  231. package/sqlite-core/query-builders/count.js +48 -0
  232. package/sqlite-core/query-builders/count.js.map +1 -0
  233. package/sqlite-core/session.cjs +4 -0
  234. package/sqlite-core/session.cjs.map +1 -1
  235. package/sqlite-core/session.d.cts +1 -0
  236. package/sqlite-core/session.d.ts +1 -0
  237. package/sqlite-core/session.js +4 -0
  238. package/sqlite-core/session.js.map +1 -1
  239. package/tidb-serverless/driver.cjs +7 -1
  240. package/tidb-serverless/driver.cjs.map +1 -1
  241. package/tidb-serverless/driver.d.cts +4 -1
  242. package/tidb-serverless/driver.d.ts +4 -1
  243. package/tidb-serverless/driver.js +6 -1
  244. package/tidb-serverless/driver.js.map +1 -1
  245. package/tidb-serverless/session.cjs +6 -0
  246. package/tidb-serverless/session.cjs.map +1 -1
  247. package/tidb-serverless/session.d.cts +1 -0
  248. package/tidb-serverless/session.d.ts +1 -0
  249. package/tidb-serverless/session.js +6 -0
  250. package/tidb-serverless/session.js.map +1 -1
  251. package/vercel-postgres/driver.cjs +6 -1
  252. package/vercel-postgres/driver.cjs.map +1 -1
  253. package/vercel-postgres/driver.d.cts +3 -1
  254. package/vercel-postgres/driver.d.ts +3 -1
  255. package/vercel-postgres/driver.js +5 -1
  256. package/vercel-postgres/driver.js.map +1 -1
  257. package/version.cjs +2 -2
  258. package/version.cjs.map +1 -1
  259. package/version.d.cts +2 -2
  260. package/version.d.ts +2 -2
  261. package/version.js +2 -2
  262. package/version.js.map +1 -1
package/libsql/session.js CHANGED
@@ -39,6 +39,18 @@ class LibSQLSession extends SQLiteSession {
39
39
  const batchResults = await this.client.batch(builtQueries);
40
40
  return batchResults.map((result, i) => preparedQueries[i].mapResult(result, true));
41
41
  }
42
+ async migrate(queries) {
43
+ const preparedQueries = [];
44
+ const builtQueries = [];
45
+ for (const query of queries) {
46
+ const preparedQuery = query._prepare();
47
+ const builtQuery = preparedQuery.getQuery();
48
+ preparedQueries.push(preparedQuery);
49
+ builtQueries.push({ sql: builtQuery.sql, args: builtQuery.params });
50
+ }
51
+ const batchResults = await this.client.migrate(builtQueries);
52
+ return batchResults.map((result, i) => preparedQueries[i].mapResult(result, true));
53
+ }
42
54
  async transaction(transaction, _config) {
43
55
  const libsqlTx = await this.client.transaction();
44
56
  const session = new LibSQLSession(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TSchema>('async', this.dialect, session, this.schema);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(transaction: (tx: LibSQLTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
1
+ {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\tasync migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.migrate(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TSchema>('async', this.dialect, session, this.schema);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(transaction: (tx: LibSQLTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
package/monodriver.cjs CHANGED
@@ -31,51 +31,145 @@ __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");
40
- const drizzle = async (params) => {
41
- const { client, connection } = params;
42
- const drizzleConfig = params;
43
- delete drizzleConfig.client;
44
- delete drizzleConfig.connection;
34
+ const importError = (libName) => {
35
+ throw new Error(
36
+ `Please install '${libName}' for Drizzle ORM to connect to database`
37
+ );
38
+ };
39
+ function assertUnreachable(_) {
40
+ throw new Error("Didn't expect to get here");
41
+ }
42
+ async function drizzle(client, params) {
43
+ const { connection, ws, ...drizzleConfig } = params;
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
+ const db = drizzle2(instance, drizzleConfig);
50
+ db.$client = instance;
51
+ return db;
50
52
  }
51
53
  case "aws-data-api-pg": {
52
- const { RDSDataClient } = await import("@aws-sdk/client-rds-data");
54
+ const { RDSDataClient } = await import("@aws-sdk/client-rds-data").catch(
55
+ () => importError("@aws-sdk/client-rds-data")
56
+ );
57
+ const { drizzle: drizzle2 } = await import("./aws-data-api/pg");
53
58
  const instance = new RDSDataClient(connection);
54
- return (0, import_pg.drizzle)(instance, drizzleConfig);
59
+ const db = drizzle2(instance, drizzleConfig);
60
+ db.$client = instance;
61
+ return db;
55
62
  }
56
63
  case "better-sqlite3": {
57
- const { default: Client } = await import("better-sqlite3");
58
- const { filename, options } = connection;
59
- const instance = new Client(filename, options);
60
- return (0, import_better_sqlite3.drizzle)(instance, drizzleConfig);
64
+ const { default: Client } = await import("better-sqlite3").catch(() => importError("better-sqlite3"));
65
+ const { drizzle: drizzle2 } = await import("./better-sqlite3");
66
+ if (typeof connection === "object") {
67
+ const { filename, options } = connection;
68
+ const instance2 = new Client(filename, options);
69
+ const db2 = drizzle2(instance2, drizzleConfig);
70
+ db2.$client = instance2;
71
+ return db2;
72
+ }
73
+ const instance = new Client(connection);
74
+ const db = drizzle2(instance, drizzleConfig);
75
+ db.$client = instance;
76
+ return db;
61
77
  }
62
- case "bun-sqlite": {
63
- const { Database: Client } = await import("bun:sqlite");
64
- const { filename, options } = connection;
65
- const instance = new Client(filename, options);
66
- return (0, import_bun_sqlite.drizzle)(instance, drizzleConfig);
78
+ case "bun:sqlite": {
79
+ const { Database: Client } = await import("bun:sqlite").catch(() => importError("bun:sqlite"));
80
+ const { drizzle: drizzle2 } = await import("./bun-sqlite");
81
+ if (typeof connection === "object") {
82
+ const { filename, options } = connection;
83
+ const instance2 = new Client(filename, options);
84
+ const db2 = drizzle2(instance2, drizzleConfig);
85
+ db2.$client = instance2;
86
+ return db2;
87
+ }
88
+ const instance = new Client(connection);
89
+ const db = drizzle2(instance, drizzleConfig);
90
+ db.$client = instance;
91
+ return db;
67
92
  }
68
93
  case "d1": {
69
- return (0, import_d1.drizzle)(connection, drizzleConfig);
94
+ const { drizzle: drizzle2 } = await import("./d1");
95
+ const db = drizzle2(connection, drizzleConfig);
96
+ db.$client = connection;
97
+ return db;
70
98
  }
71
99
  case "libsql": {
72
- const { createClient } = await import("@libsql/client");
100
+ const { createClient } = await import("@libsql/client").catch(() => importError("@libsql/client"));
101
+ const { drizzle: drizzle2 } = await import("./libsql");
73
102
  const instance = createClient(connection);
74
- return (0, import_libsql.drizzle)(instance, drizzleConfig);
103
+ const db = drizzle2(instance, drizzleConfig);
104
+ db.$client = instance;
105
+ return db;
106
+ }
107
+ case "mysql2": {
108
+ const { createPool } = await import("mysql2/promise").catch(() => importError("mysql2/promise"));
109
+ const instance = createPool(connection);
110
+ const { drizzle: drizzle2 } = await import("./mysql2");
111
+ const db = drizzle2(instance, drizzleConfig);
112
+ db.$client = instance;
113
+ return db;
114
+ }
115
+ case "neon-http": {
116
+ const { neon } = await import("@neondatabase/serverless").catch(() => importError("@neondatabase/serverless"));
117
+ const { connectionString, options } = connection;
118
+ const { drizzle: drizzle2 } = await import("./neon-http");
119
+ const instance = neon(connectionString, options);
120
+ const db = drizzle2(instance, drizzleConfig);
121
+ db.$client = instance;
122
+ return db;
123
+ }
124
+ case "neon-serverless": {
125
+ const { Pool, neonConfig } = await import("@neondatabase/serverless").catch(
126
+ () => importError("@neondatabase/serverless")
127
+ );
128
+ const { drizzle: drizzle2 } = await import("./neon-serverless");
129
+ const instance = new Pool(connection);
130
+ if (ws) {
131
+ neonConfig.webSocketConstructor = ws;
132
+ }
133
+ const db = drizzle2(instance, drizzleConfig);
134
+ db.$client = instance;
135
+ return db;
136
+ }
137
+ case "planetscale": {
138
+ const { Client } = await import("@planetscale/database").catch(() => importError("@planetscale/database"));
139
+ const { drizzle: drizzle2 } = await import("./planetscale-serverless");
140
+ const instance = new Client(
141
+ connection
142
+ );
143
+ const db = drizzle2(instance, drizzleConfig);
144
+ db.$client = instance;
145
+ return db;
146
+ }
147
+ case "postgres-js": {
148
+ const { default: client2 } = await import("postgres").catch(() => importError("postgres"));
149
+ const { drizzle: drizzle2 } = await import("./postgres-js");
150
+ const instance = client2(connection);
151
+ const db = drizzle2(instance, drizzleConfig);
152
+ db.$client = instance;
153
+ return db;
154
+ }
155
+ case "tidb-serverless": {
156
+ const { connect } = await import("@tidbcloud/serverless").catch(() => importError("@tidbcloud/serverless"));
157
+ const { drizzle: drizzle2 } = await import("./tidb-serverless");
158
+ const instance = connect(connection);
159
+ const db = drizzle2(instance, drizzleConfig);
160
+ db.$client = instance;
161
+ return db;
162
+ }
163
+ case "vercel-postgres": {
164
+ const { sql } = await import("@vercel/postgres").catch(() => importError("@vercel/postgres"));
165
+ const { drizzle: drizzle2 } = await import("./vercel-postgres");
166
+ const db = drizzle2(sql, drizzleConfig);
167
+ db.$client = sql;
168
+ return db;
75
169
  }
76
170
  }
77
- return {};
78
- };
171
+ assertUnreachable(client);
172
+ }
79
173
  // Annotate the CommonJS export names for ESM import in node:
80
174
  0 && (module.exports = {
81
175
  drizzle
@@ -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 { RDSDataClient, RDSDataClientConfig, RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';\nimport type { Client as LibsqlClient, Config as LibsqlConfig } from '@libsql/client';\nimport type {\n\tHTTPTransactionOptions as NeonHttpConfig,\n\tNeonQueryFunction,\n\tPool as NeonServerlessPool,\n\tPoolConfig as NeonServerlessConfig,\n} from '@neondatabase/serverless';\nimport type { Client as PlanetscaleClient, Config as PlanetscaleConfig } from '@planetscale/database';\nimport type { Config as TiDBServerlessConfig, Connection as TiDBConnection } from '@tidbcloud/serverless';\nimport type { QueryResult, QueryResultRow, VercelPool } from '@vercel/postgres';\nimport type { Database as BetterSQLite3Database, Options as BetterSQLite3Options } from 'better-sqlite3';\nimport type { Database as BunDatabase } from 'bun:sqlite';\nimport type { Pool as Mysql2Pool, PoolOptions as Mysql2Config } from 'mysql2';\nimport type { Pool as NodePgPool, PoolConfig as NodePGPoolConfig } from 'pg';\nimport type {\n\tOptions as PostgresJSOptions,\n\tPostgresType as PostgresJSPostgresType,\n\tSql as PostgresJsClient,\n} from 'postgres';\nimport type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from './aws-data-api/pg/index.ts';\nimport type { BetterSQLite3Database as DrizzleBetterSQLite3Database } 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\t| {\n\t\tfilename?: ':memory:' | (string & {});\n\t\toptions?: BunSqliteDatabaseOptions;\n\t}\n\t| ':memory:'\n\t| (string & {})\n\t| undefined;\n\ntype BetterSQLite3DatabaseConfig =\n\t| {\n\t\tfilename?:\n\t\t\t| ':memory:'\n\t\t\t| (string & {})\n\t\t\t| Buffer;\n\t\toptions?: BetterSQLite3Options;\n\t}\n\t| ':memory:'\n\t| (string & {})\n\t| undefined;\n\ntype MonodriverNeonHttpConfig = {\n\tconnectionString: string;\n\toptions?: NeonHttpConfig<boolean, boolean>;\n};\n\ntype VercelPrimitive = string | number | boolean | undefined | null;\n\ntype DatabaseClient =\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 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': DrizzleBetterSQLite3Database<TSchema>;\n};\n\ntype ClientInstanceMap = {\n\t'node-postgres': NodePgPool;\n\t'postgres-js': PostgresJsClient;\n\t'neon-serverless': NeonServerlessPool;\n\t'neon-http': NeonQueryFunction<boolean, boolean>;\n\t'vercel-postgres':\n\t\t& VercelPool\n\t\t& (<O extends QueryResultRow>(\n\t\t\tstrings: TemplateStringsArray,\n\t\t\t...values: VercelPrimitive[]\n\t\t) => Promise<QueryResult<O>>);\n\t'aws-data-api-pg': RDSDataClient;\n\tplanetscale: PlanetscaleClient;\n\tmysql2: Mysql2Pool;\n\t'tidb-serverless': TiDBConnection;\n\tlibsql: LibsqlClient;\n\td1: D1Database;\n\t'bun:sqlite': BunDatabase;\n\t'better-sqlite3': BetterSQLite3Database;\n};\n\ntype InitializerParams = {\n\t'node-postgres': {\n\t\tconnection: NodePGPoolConfig;\n\t};\n\t'postgres-js': {\n\t\tconnection: string | PostgresJSOptions<Record<string, PostgresJSPostgresType>>;\n\t};\n\t'neon-serverless': {\n\t\tconnection: NeonServerlessConfig;\n\t};\n\t'neon-http': {\n\t\tconnection: MonodriverNeonHttpConfig;\n\t};\n\t'vercel-postgres': {\n\t\tconnection: VercelPool;\n\t};\n\t'aws-data-api-pg': {\n\t\tconnection?: RDSConfig;\n\t};\n\tplanetscale: {\n\t\tconnection: PlanetscaleConfig;\n\t};\n\tmysql2: {\n\t\tconnection: Mysql2Config | string;\n\t};\n\t'tidb-serverless': {\n\t\tconnection: TiDBServerlessConfig;\n\t};\n\tlibsql: {\n\t\tconnection: LibsqlConfig;\n\t};\n\td1: {\n\t\tconnection: D1Database;\n\t};\n\t'bun:sqlite': {\n\t\tconnection?: BunSqliteDatabaseConfig;\n\t};\n\t'better-sqlite3': {\n\t\tconnection?: BetterSQLite3DatabaseConfig;\n\t};\n};\n\ntype DetermineClient<\n\tTClient extends DatabaseClient,\n\tTSchema extends Record<string, unknown>,\n> =\n\t& ClientDrizzleInstanceMap<\n\t\tTSchema\n\t>[TClient]\n\t& {\n\t\t$client: ClientInstanceMap[TClient];\n\t};\n\nconst importError = (libName: string) => {\n\tthrow new Error(\n\t\t`Please install '${libName}' for Drizzle ORM to connect to database`,\n\t);\n};\n\nfunction assertUnreachable(_: never | undefined): never {\n\tthrow new Error(\"Didn't expect to get here\");\n}\n\nexport async function drizzle<\n\tTClient extends DatabaseClient,\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(\n\tclient: TClient,\n\tparams:\n\t\t& InitializerParams[TClient]\n\t\t& (TClient extends 'mysql2' ? MySql2DrizzleConfig<TSchema>\n\t\t\t: TClient extends 'aws-data-api-pg' ? DrizzleAwsDataApiPgConfig<TSchema>\n\t\t\t: TClient extends 'neon-serverless' ? DrizzleConfig<TSchema> & {\n\t\t\t\t\tws?: any;\n\t\t\t\t}\n\t\t\t: DrizzleConfig<TSchema>),\n): Promise<DetermineClient<TClient, TSchema>> {\n\tconst { connection, ws, ...drizzleConfig } = params as typeof params & {\n\t\tws?: any;\n\t};\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\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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 as RDSDataClientConfig);\n\n\t\t\tconst db = drizzle(instance, drizzleConfig as any as DrizzleAwsDataApiPgConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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 { drizzle } = await import('./better-sqlite3');\n\n\t\t\tif (typeof connection === 'object') {\n\t\t\t\tconst { filename, options } = connection as Exclude<BetterSQLite3DatabaseConfig, string | undefined>;\n\n\t\t\t\tconst instance = new Client(filename, options);\n\n\t\t\t\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\t\tdb.$client = instance;\n\n\t\t\t\treturn db;\n\t\t\t}\n\n\t\t\tconst instance = new Client(connection);\n\n\t\t\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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 { drizzle } = await import('./bun-sqlite');\n\n\t\t\tif (typeof connection === 'object') {\n\t\t\t\tconst { filename, options } = connection as Exclude<BunSqliteDatabaseConfig, string | undefined>;\n\n\t\t\t\tconst instance = new Client(filename, options);\n\n\t\t\t\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\t\tdb.$client = instance;\n\n\t\t\t\treturn db;\n\t\t\t}\n\n\t\t\tconst instance = new Client(connection);\n\n\t\t\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\n\t\t}\n\t\tcase 'd1': {\n\t\t\tconst { drizzle } = await import('./d1');\n\n\t\t\tconst db = drizzle(connection as D1Database, drizzleConfig) as any;\n\t\t\tdb.$client = connection;\n\n\t\t\treturn db;\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\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\n\t\t}\n\t\tcase 'mysql2': {\n\t\t\tconst { createPool } = await import('mysql2/promise').catch(() => importError('mysql2/promise'));\n\t\t\tconst instance = createPool(connection as Mysql2Config);\n\t\t\tconst { drizzle } = await import('./mysql2');\n\n\t\t\tconst db = drizzle(instance, drizzleConfig as MySql2DrizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\n\t\t}\n\t\tcase 'neon-serverless': {\n\t\t\tconst { Pool, neonConfig } = await import('@neondatabase/serverless').catch(() =>\n\t\t\t\timportError('@neondatabase/serverless')\n\t\t\t);\n\t\t\tconst { drizzle } = await import('./neon-serverless');\n\t\t\tconst instance = new Pool(connection as NeonServerlessConfig);\n\n\t\t\tif (ws) {\n\t\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t\t}\n\n\t\t\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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\tconst db = drizzle(instance, drizzleConfig) as any;\n\t\t\tdb.$client = instance;\n\n\t\t\treturn db;\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\tconst db = drizzle(sql, drizzleConfig) as any;\n\t\t\tdb.$client = sql;\n\n\t\t\treturn db;\n\t\t}\n\t}\n\n\tassertUnreachable(client);\n}\n"],"mappings":"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","names":["drizzle","instance","db","client"]}
package/monodriver.d.cts CHANGED
@@ -1,22 +1,23 @@
1
1
  /// <reference types="@cloudflare/workers-types" />
2
- /// <reference types="bun-types" />
3
2
  /// <reference types="node" />
4
- import type { RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';
5
- import type { Config as LibsqlConfig } from '@libsql/client';
6
- import type { ClientConfig as NeonHttpConfig, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';
7
- import type { Config as PlanetscaleConfig } from '@planetscale/database';
8
- import type { Config as TiDBServerlessConfig } from '@tidbcloud/serverless';
9
- import type { VercelPostgresPoolConfig as VercelPostgresConfig } from '@vercel/postgres';
10
- import type { Options as BetterSQLite3Options } from 'better-sqlite3';
11
- import type { ConnectionConfig as Mysql2Config } from 'mysql2';
12
- import type { PoolConfig as NodePGPoolConfig } from 'pg';
13
- import type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType } from 'postgres';
14
- import type { AwsDataApiPgDatabase } from "./aws-data-api/pg/index.cjs";
15
- import type { BetterSQLite3Database } from "./better-sqlite3/index.cjs";
3
+ /// <reference types="bun-types" />
4
+ import type { RDSDataClient, RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';
5
+ import type { Client as LibsqlClient, Config as LibsqlConfig } from '@libsql/client';
6
+ import type { HTTPTransactionOptions as NeonHttpConfig, NeonQueryFunction, Pool as NeonServerlessPool, PoolConfig as NeonServerlessConfig } from '@neondatabase/serverless';
7
+ import type { Client as PlanetscaleClient, Config as PlanetscaleConfig } from '@planetscale/database';
8
+ import type { Config as TiDBServerlessConfig, Connection as TiDBConnection } from '@tidbcloud/serverless';
9
+ import type { QueryResult, QueryResultRow, VercelPool } from '@vercel/postgres';
10
+ import type { Database as BetterSQLite3Database, Options as BetterSQLite3Options } from 'better-sqlite3';
11
+ import type { Database as BunDatabase } from 'bun:sqlite';
12
+ import type { Pool as Mysql2Pool, PoolOptions as Mysql2Config } from 'mysql2';
13
+ import type { Pool as NodePgPool, PoolConfig as NodePGPoolConfig } from 'pg';
14
+ import type { Options as PostgresJSOptions, PostgresType as PostgresJSPostgresType, Sql as PostgresJsClient } from 'postgres';
15
+ import type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from "./aws-data-api/pg/index.cjs";
16
+ import type { BetterSQLite3Database as DrizzleBetterSQLite3Database } from "./better-sqlite3/index.cjs";
16
17
  import type { BunSQLiteDatabase } from "./bun-sqlite/index.cjs";
17
18
  import type { DrizzleD1Database } from "./d1/index.cjs";
18
19
  import type { LibSQLDatabase } from "./libsql/index.cjs";
19
- import type { MySql2Database } from "./mysql2/index.cjs";
20
+ import type { MySql2Database, MySql2DrizzleConfig } from "./mysql2/index.cjs";
20
21
  import type { NeonHttpDatabase } from "./neon-http/index.cjs";
21
22
  import type { NeonDatabase } from "./neon-serverless/index.cjs";
22
23
  import type { NodePgDatabase } from "./node-postgres/index.cjs";
@@ -46,32 +47,22 @@ type BunSqliteDatabaseOptions = number | {
46
47
  readwrite?: boolean;
47
48
  };
48
49
  type BunSqliteDatabaseConfig = {
49
- filename?: string;
50
+ filename?: ':memory:' | (string & {});
50
51
  options?: BunSqliteDatabaseOptions;
51
- };
52
+ } | ':memory:' | (string & {}) | undefined;
52
53
  type BetterSQLite3DatabaseConfig = {
53
- filename?: string | Buffer;
54
+ filename?: ':memory:' | (string & {}) | Buffer;
54
55
  options?: BetterSQLite3Options;
56
+ } | ':memory:' | (string & {}) | undefined;
57
+ type MonodriverNeonHttpConfig = {
58
+ connectionString: string;
59
+ options?: NeonHttpConfig<boolean, boolean>;
55
60
  };
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;
71
- };
61
+ type VercelPrimitive = string | number | boolean | undefined | null;
62
+ type DatabaseClient = 'node-postgres' | 'postgres-js' | 'neon-serverless' | 'neon-http' | 'vercel-postgres' | 'aws-data-api-pg' | 'planetscale' | 'mysql2' | 'tidb-serverless' | 'libsql' | 'd1' | 'bun:sqlite' | 'better-sqlite3';
72
63
  type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
73
64
  'node-postgres': NodePgDatabase<TSchema>;
74
- 'postgres.js': PostgresJsDatabase<TSchema>;
65
+ 'postgres-js': PostgresJsDatabase<TSchema>;
75
66
  'neon-serverless': NeonDatabase<TSchema>;
76
67
  'neon-http': NeonHttpDatabase<TSchema>;
77
68
  'vercel-postgres': VercelPgDatabase<TSchema>;
@@ -81,18 +72,69 @@ type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
81
72
  'tidb-serverless': TiDBServerlessDatabase<TSchema>;
82
73
  libsql: LibSQLDatabase<TSchema>;
83
74
  d1: DrizzleD1Database<TSchema>;
84
- 'bun-sqlite': BunSQLiteDatabase<TSchema>;
85
- 'better-sqlite3': BetterSQLite3Database<TSchema>;
75
+ 'bun:sqlite': BunSQLiteDatabase<TSchema>;
76
+ 'better-sqlite3': DrizzleBetterSQLite3Database<TSchema>;
77
+ };
78
+ type ClientInstanceMap = {
79
+ 'node-postgres': NodePgPool;
80
+ 'postgres-js': PostgresJsClient;
81
+ 'neon-serverless': NeonServerlessPool;
82
+ 'neon-http': NeonQueryFunction<boolean, boolean>;
83
+ 'vercel-postgres': VercelPool & (<O extends QueryResultRow>(strings: TemplateStringsArray, ...values: VercelPrimitive[]) => Promise<QueryResult<O>>);
84
+ 'aws-data-api-pg': RDSDataClient;
85
+ planetscale: PlanetscaleClient;
86
+ mysql2: Mysql2Pool;
87
+ 'tidb-serverless': TiDBConnection;
88
+ libsql: LibsqlClient;
89
+ d1: D1Database;
90
+ 'bun:sqlite': BunDatabase;
91
+ 'better-sqlite3': BetterSQLite3Database;
92
+ };
93
+ type InitializerParams = {
94
+ 'node-postgres': {
95
+ connection: NodePGPoolConfig;
96
+ };
97
+ 'postgres-js': {
98
+ connection: string | PostgresJSOptions<Record<string, PostgresJSPostgresType>>;
99
+ };
100
+ 'neon-serverless': {
101
+ connection: NeonServerlessConfig;
102
+ };
103
+ 'neon-http': {
104
+ connection: MonodriverNeonHttpConfig;
105
+ };
106
+ 'vercel-postgres': {
107
+ connection: VercelPool;
108
+ };
109
+ 'aws-data-api-pg': {
110
+ connection?: RDSConfig;
111
+ };
112
+ planetscale: {
113
+ connection: PlanetscaleConfig;
114
+ };
115
+ mysql2: {
116
+ connection: Mysql2Config | string;
117
+ };
118
+ 'tidb-serverless': {
119
+ connection: TiDBServerlessConfig;
120
+ };
121
+ libsql: {
122
+ connection: LibsqlConfig;
123
+ };
124
+ d1: {
125
+ connection: D1Database;
126
+ };
127
+ 'bun:sqlite': {
128
+ connection?: BunSqliteDatabaseConfig;
129
+ };
130
+ 'better-sqlite3': {
131
+ connection?: BetterSQLite3DatabaseConfig;
132
+ };
133
+ };
134
+ type DetermineClient<TClient extends DatabaseClient, TSchema extends Record<string, unknown>> = ClientDrizzleInstanceMap<TSchema>[TClient] & {
135
+ $client: ClientInstanceMap[TClient];
86
136
  };
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>>;
137
+ export declare function drizzle<TClient extends DatabaseClient, TSchema extends Record<string, unknown> = Record<string, never>>(client: TClient, params: InitializerParams[TClient] & (TClient extends 'mysql2' ? MySql2DrizzleConfig<TSchema> : TClient extends 'aws-data-api-pg' ? DrizzleAwsDataApiPgConfig<TSchema> : TClient extends 'neon-serverless' ? DrizzleConfig<TSchema> & {
138
+ ws?: any;
139
+ } : DrizzleConfig<TSchema>)): Promise<DetermineClient<TClient, TSchema>>;
98
140
  export {};