drizzle-orm 0.34.0-178591 → 0.34.0-5a1c5d3

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 (225) hide show
  1. package/aws-data-api/pg/driver.cjs +3 -1
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +4 -2
  4. package/aws-data-api/pg/driver.d.ts +4 -2
  5. package/aws-data-api/pg/driver.js +3 -1
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/migrator.cjs.map +1 -1
  8. package/aws-data-api/pg/migrator.d.cts +1 -1
  9. package/aws-data-api/pg/migrator.d.ts +1 -1
  10. package/aws-data-api/pg/migrator.js.map +1 -1
  11. package/better-sqlite3/driver.cjs +3 -1
  12. package/better-sqlite3/driver.cjs.map +1 -1
  13. package/better-sqlite3/driver.d.cts +3 -1
  14. package/better-sqlite3/driver.d.ts +3 -1
  15. package/better-sqlite3/driver.js +3 -1
  16. package/better-sqlite3/driver.js.map +1 -1
  17. package/better-sqlite3/migrator.cjs.map +1 -1
  18. package/better-sqlite3/migrator.d.cts +1 -1
  19. package/better-sqlite3/migrator.d.ts +1 -1
  20. package/better-sqlite3/migrator.js.map +1 -1
  21. package/bun-sqlite/driver.cjs +3 -1
  22. package/bun-sqlite/driver.cjs.map +1 -1
  23. package/bun-sqlite/driver.d.cts +3 -1
  24. package/bun-sqlite/driver.d.ts +3 -1
  25. package/bun-sqlite/driver.js +3 -1
  26. package/bun-sqlite/driver.js.map +1 -1
  27. package/bun-sqlite/migrator.cjs.map +1 -1
  28. package/bun-sqlite/migrator.d.cts +1 -1
  29. package/bun-sqlite/migrator.d.ts +1 -1
  30. package/bun-sqlite/migrator.js.map +1 -1
  31. package/d1/driver.cjs +3 -1
  32. package/d1/driver.cjs.map +1 -1
  33. package/d1/driver.d.cts +6 -2
  34. package/d1/driver.d.ts +6 -2
  35. package/d1/driver.js +3 -1
  36. package/d1/driver.js.map +1 -1
  37. package/d1/migrator.cjs +1 -1
  38. package/d1/migrator.cjs.map +1 -1
  39. package/d1/migrator.d.cts +1 -1
  40. package/d1/migrator.d.ts +1 -1
  41. package/d1/migrator.js +1 -1
  42. package/d1/migrator.js.map +1 -1
  43. package/expo-sqlite/driver.cjs +3 -1
  44. package/expo-sqlite/driver.cjs.map +1 -1
  45. package/expo-sqlite/driver.d.cts +3 -1
  46. package/expo-sqlite/driver.d.ts +3 -1
  47. package/expo-sqlite/driver.js +3 -1
  48. package/expo-sqlite/driver.js.map +1 -1
  49. package/libsql/driver.cjs +3 -1
  50. package/libsql/driver.cjs.map +1 -1
  51. package/libsql/driver.d.cts +3 -1
  52. package/libsql/driver.d.ts +3 -1
  53. package/libsql/driver.js +3 -1
  54. package/libsql/driver.js.map +1 -1
  55. package/libsql/migrator.cjs +1 -1
  56. package/libsql/migrator.cjs.map +1 -1
  57. package/libsql/migrator.d.cts +1 -1
  58. package/libsql/migrator.d.ts +1 -1
  59. package/libsql/migrator.js +1 -1
  60. package/libsql/migrator.js.map +1 -1
  61. package/migrator.cjs +1 -12
  62. package/migrator.cjs.map +1 -1
  63. package/migrator.d.cts +1 -1
  64. package/migrator.d.ts +1 -1
  65. package/migrator.js +1 -12
  66. package/migrator.js.map +1 -1
  67. package/monodriver.cjs +140 -53
  68. package/monodriver.cjs.map +1 -1
  69. package/monodriver.d.cts +85 -41
  70. package/monodriver.d.ts +85 -41
  71. package/monodriver.js +140 -53
  72. package/monodriver.js.map +1 -1
  73. package/monomigrator.cjs.map +1 -1
  74. package/monomigrator.d.cts +1 -1
  75. package/monomigrator.d.ts +1 -1
  76. package/monomigrator.js.map +1 -1
  77. package/mysql-core/db.cjs +2 -1
  78. package/mysql-core/db.cjs.map +1 -1
  79. package/mysql-core/db.d.cts +2 -2
  80. package/mysql-core/db.d.ts +2 -2
  81. package/mysql-core/db.js +2 -1
  82. package/mysql-core/db.js.map +1 -1
  83. package/mysql2/driver.cjs +5 -5
  84. package/mysql2/driver.cjs.map +1 -1
  85. package/mysql2/driver.d.cts +3 -1
  86. package/mysql2/driver.d.ts +3 -1
  87. package/mysql2/driver.js +5 -5
  88. package/mysql2/driver.js.map +1 -1
  89. package/mysql2/migrator.cjs +1 -4
  90. package/mysql2/migrator.cjs.map +1 -1
  91. package/mysql2/migrator.d.cts +1 -1
  92. package/mysql2/migrator.d.ts +1 -1
  93. package/mysql2/migrator.js +1 -4
  94. package/mysql2/migrator.js.map +1 -1
  95. package/neon-http/driver.cjs +3 -1
  96. package/neon-http/driver.cjs.map +1 -1
  97. package/neon-http/driver.d.cts +3 -1
  98. package/neon-http/driver.d.ts +3 -1
  99. package/neon-http/driver.js +3 -1
  100. package/neon-http/driver.js.map +1 -1
  101. package/neon-http/migrator.cjs +2 -2
  102. package/neon-http/migrator.cjs.map +1 -1
  103. package/neon-http/migrator.d.cts +1 -1
  104. package/neon-http/migrator.d.ts +1 -1
  105. package/neon-http/migrator.js +2 -2
  106. package/neon-http/migrator.js.map +1 -1
  107. package/neon-serverless/driver.cjs +3 -1
  108. package/neon-serverless/driver.cjs.map +1 -1
  109. package/neon-serverless/driver.d.cts +3 -1
  110. package/neon-serverless/driver.d.ts +3 -1
  111. package/neon-serverless/driver.js +3 -1
  112. package/neon-serverless/driver.js.map +1 -1
  113. package/neon-serverless/migrator.cjs.map +1 -1
  114. package/neon-serverless/migrator.d.cts +1 -1
  115. package/neon-serverless/migrator.d.ts +1 -1
  116. package/neon-serverless/migrator.js.map +1 -1
  117. package/node-postgres/driver.cjs +3 -1
  118. package/node-postgres/driver.cjs.map +1 -1
  119. package/node-postgres/driver.d.cts +3 -1
  120. package/node-postgres/driver.d.ts +3 -1
  121. package/node-postgres/driver.js +3 -1
  122. package/node-postgres/driver.js.map +1 -1
  123. package/node-postgres/migrator.cjs.map +1 -1
  124. package/node-postgres/migrator.d.cts +1 -1
  125. package/node-postgres/migrator.d.ts +1 -1
  126. package/node-postgres/migrator.js.map +1 -1
  127. package/op-sqlite/driver.cjs +3 -1
  128. package/op-sqlite/driver.cjs.map +1 -1
  129. package/op-sqlite/driver.d.cts +3 -1
  130. package/op-sqlite/driver.d.ts +3 -1
  131. package/op-sqlite/driver.js +3 -1
  132. package/op-sqlite/driver.js.map +1 -1
  133. package/package.json +50 -49
  134. package/pg-core/db.cjs +4 -3
  135. package/pg-core/db.cjs.map +1 -1
  136. package/pg-core/db.d.cts +2 -2
  137. package/pg-core/db.d.ts +2 -2
  138. package/pg-core/db.js +4 -3
  139. package/pg-core/db.js.map +1 -1
  140. package/pg-proxy/migrator.cjs.map +1 -1
  141. package/pg-proxy/migrator.d.cts +1 -1
  142. package/pg-proxy/migrator.d.ts +1 -1
  143. package/pg-proxy/migrator.js.map +1 -1
  144. package/pglite/driver.cjs +3 -1
  145. package/pglite/driver.cjs.map +1 -1
  146. package/pglite/driver.d.cts +3 -1
  147. package/pglite/driver.d.ts +3 -1
  148. package/pglite/driver.js +3 -1
  149. package/pglite/driver.js.map +1 -1
  150. package/pglite/migrator.cjs.map +1 -1
  151. package/pglite/migrator.d.cts +1 -1
  152. package/pglite/migrator.d.ts +1 -1
  153. package/pglite/migrator.js.map +1 -1
  154. package/planetscale-serverless/driver.cjs +3 -1
  155. package/planetscale-serverless/driver.cjs.map +1 -1
  156. package/planetscale-serverless/driver.d.cts +3 -1
  157. package/planetscale-serverless/driver.d.ts +3 -1
  158. package/planetscale-serverless/driver.js +3 -1
  159. package/planetscale-serverless/driver.js.map +1 -1
  160. package/planetscale-serverless/migrator.cjs +1 -4
  161. package/planetscale-serverless/migrator.cjs.map +1 -1
  162. package/planetscale-serverless/migrator.d.cts +1 -1
  163. package/planetscale-serverless/migrator.d.ts +1 -1
  164. package/planetscale-serverless/migrator.js +1 -4
  165. package/planetscale-serverless/migrator.js.map +1 -1
  166. package/postgres-js/driver.cjs +3 -1
  167. package/postgres-js/driver.cjs.map +1 -1
  168. package/postgres-js/driver.d.cts +3 -1
  169. package/postgres-js/driver.d.ts +3 -1
  170. package/postgres-js/driver.js +3 -1
  171. package/postgres-js/driver.js.map +1 -1
  172. package/postgres-js/migrator.cjs.map +1 -1
  173. package/postgres-js/migrator.d.cts +1 -1
  174. package/postgres-js/migrator.d.ts +1 -1
  175. package/postgres-js/migrator.js.map +1 -1
  176. package/sql-js/migrator.cjs.map +1 -1
  177. package/sql-js/migrator.d.cts +1 -1
  178. package/sql-js/migrator.d.ts +1 -1
  179. package/sql-js/migrator.js.map +1 -1
  180. package/sqlite-core/db.cjs +17 -16
  181. package/sqlite-core/db.cjs.map +1 -1
  182. package/sqlite-core/db.d.cts +5 -5
  183. package/sqlite-core/db.d.ts +5 -5
  184. package/sqlite-core/db.js +17 -16
  185. package/sqlite-core/db.js.map +1 -1
  186. package/sqlite-proxy/migrator.cjs.map +1 -1
  187. package/sqlite-proxy/migrator.d.cts +1 -1
  188. package/sqlite-proxy/migrator.d.ts +1 -1
  189. package/sqlite-proxy/migrator.js.map +1 -1
  190. package/tidb-serverless/driver.cjs +3 -1
  191. package/tidb-serverless/driver.cjs.map +1 -1
  192. package/tidb-serverless/driver.d.cts +3 -1
  193. package/tidb-serverless/driver.d.ts +3 -1
  194. package/tidb-serverless/driver.js +3 -1
  195. package/tidb-serverless/driver.js.map +1 -1
  196. package/utils.cjs.map +1 -1
  197. package/utils.d.cts +1 -0
  198. package/utils.d.ts +1 -0
  199. package/utils.js.map +1 -1
  200. package/vercel-postgres/driver.cjs +3 -1
  201. package/vercel-postgres/driver.cjs.map +1 -1
  202. package/vercel-postgres/driver.d.cts +3 -1
  203. package/vercel-postgres/driver.d.ts +3 -1
  204. package/vercel-postgres/driver.js +3 -1
  205. package/vercel-postgres/driver.js.map +1 -1
  206. package/vercel-postgres/migrator.cjs.map +1 -1
  207. package/vercel-postgres/migrator.d.cts +1 -1
  208. package/vercel-postgres/migrator.d.ts +1 -1
  209. package/vercel-postgres/migrator.js.map +1 -1
  210. package/version.cjs +1 -1
  211. package/version.d.cts +1 -1
  212. package/version.d.ts +1 -1
  213. package/version.js +1 -1
  214. package/xata-http/driver.cjs +3 -1
  215. package/xata-http/driver.cjs.map +1 -1
  216. package/xata-http/driver.d.cts +3 -1
  217. package/xata-http/driver.d.ts +3 -1
  218. package/xata-http/driver.js +3 -1
  219. package/xata-http/driver.js.map +1 -1
  220. package/xata-http/migrator.cjs +1 -1
  221. package/xata-http/migrator.cjs.map +1 -1
  222. package/xata-http/migrator.d.cts +1 -1
  223. package/xata-http/migrator.d.ts +1 -1
  224. package/xata-http/migrator.js +1 -1
  225. package/xata-http/migrator.js.map +1 -1
@@ -31,7 +31,9 @@ function drizzle(client, config = {}) {
31
31
  };
32
32
  }
33
33
  const session = new ExpoSQLiteSession(client, dialect, schema, { logger });
34
- return new ExpoSQLiteDatabase("sync", dialect, session, schema);
34
+ const db = new ExpoSQLiteDatabase("sync", dialect, session, schema);
35
+ db.$client = client;
36
+ return db;
35
37
  }
36
38
  export {
37
39
  ExpoSQLiteDatabase,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expo-sqlite/driver.ts"],"sourcesContent":["import type { SQLiteDatabase, SQLiteRunResult } from 'expo-sqlite/next';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { ExpoSQLiteSession } from './session.ts';\n\nexport class ExpoSQLiteDatabase<TSchema extends Record<string, unknown> = Record<string, never>>\n\textends BaseSQLiteDatabase<'sync', SQLiteRunResult, TSchema>\n{\n\tstatic readonly [entityKind]: string = 'ExpoSQLiteDatabase';\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: SQLiteDatabase,\n\tconfig: DrizzleConfig<TSchema> = {},\n): ExpoSQLiteDatabase<TSchema> {\n\tconst dialect = new SQLiteSyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new ExpoSQLiteSession(client, dialect, schema, { logger });\n\treturn new ExpoSQLiteDatabase('sync', dialect, session, schema) as ExpoSQLiteDatabase<TSchema>;\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAE3B,MAAM,2BACJ,mBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AACxC;AAEO,SAAS,QACf,QACA,SAAiC,CAAC,GACJ;AAC9B,QAAM,UAAU,IAAI,kBAAkB;AACtC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACzE,SAAO,IAAI,mBAAmB,QAAQ,SAAS,SAAS,MAAM;AAC/D;","names":[]}
1
+ {"version":3,"sources":["../../src/expo-sqlite/driver.ts"],"sourcesContent":["import type { SQLiteDatabase, SQLiteRunResult } from 'expo-sqlite/next';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { ExpoSQLiteSession } from './session.ts';\n\nexport class ExpoSQLiteDatabase<TSchema extends Record<string, unknown> = Record<string, never>>\n\textends BaseSQLiteDatabase<'sync', SQLiteRunResult, TSchema>\n{\n\tstatic readonly [entityKind]: string = 'ExpoSQLiteDatabase';\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: SQLiteDatabase,\n\tconfig: DrizzleConfig<TSchema> = {},\n): ExpoSQLiteDatabase<TSchema> & {\n\t$client: SQLiteDatabase;\n} {\n\tconst dialect = new SQLiteSyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new ExpoSQLiteSession(client, dialect, schema, { logger });\n\tconst db = new ExpoSQLiteDatabase('sync', dialect, session, schema) as ExpoSQLiteDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAE3B,MAAM,2BACJ,mBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AACxC;AAEO,SAAS,QACf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,kBAAkB;AACtC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACzE,QAAM,KAAK,IAAI,mBAAmB,QAAQ,SAAS,SAAS,MAAM;AAClE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
package/libsql/driver.cjs CHANGED
@@ -55,7 +55,9 @@ function drizzle(client, config = {}) {
55
55
  };
56
56
  }
57
57
  const session = new import_session.LibSQLSession(client, dialect, schema, { logger }, void 0);
58
- return new LibSQLDatabase("async", dialect, session, schema);
58
+ const db = new LibSQLDatabase("async", dialect, session, schema);
59
+ db.$client = client;
60
+ return db;
59
61
  }
60
62
  // Annotate the CommonJS export names for ESM import in node:
61
63
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new LibSQLSession(client, dialect, schema, { logger }, undefined);\n\treturn new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<TSchema>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAC3B,oBAA8B;AAC9B,uBAMO;AACP,gBAAmC;AACnC,qBAAmC;AAEnC,qBAA8B;AAEvB,MAAM,uBAEH,6BAAgD;AAAA,EACzD,QAAiB,wBAAU,IAAY;AAAA,EAKvC,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAEd,QAAgB,SAAiC,CAAC,GAA4B;AAC/E,QAAM,UAAU,IAAI,kCAAmB;AACvC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,6BAAc,QAAQ,SAAS,QAAQ,EAAE,OAAO,GAAG,MAAS;AAChF,SAAO,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC5D;","names":[]}
1
+ {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new LibSQLSession(client, dialect, schema, { logger }, undefined);\n\tconst db = new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAC3B,oBAA8B;AAC9B,uBAMO;AACP,gBAAmC;AACnC,qBAAmC;AAEnC,qBAA8B;AAEvB,MAAM,uBAEH,6BAAgD;AAAA,EACzD,QAAiB,wBAAU,IAAY;AAAA,EAKvC,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAEd,QAAgB,SAAiC,CAAC,GAElD;AACD,QAAM,UAAU,IAAI,kCAAmB;AACvC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,6BAAc,QAAQ,SAAS,QAAQ,EAAE,OAAO,GAAG,MAAS;AAChF,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC/D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
@@ -7,4 +7,6 @@ export declare class LibSQLDatabase<TSchema extends Record<string, unknown> = Re
7
7
  static readonly [entityKind]: string;
8
8
  batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(batch: T): Promise<BatchResponse<T>>;
9
9
  }
10
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: Client, config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema>;
10
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: Client, config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema> & {
11
+ $client: Client;
12
+ };
@@ -7,4 +7,6 @@ export declare class LibSQLDatabase<TSchema extends Record<string, unknown> = Re
7
7
  static readonly [entityKind]: string;
8
8
  batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(batch: T): Promise<BatchResponse<T>>;
9
9
  }
10
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: Client, config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema>;
10
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: Client, config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema> & {
11
+ $client: Client;
12
+ };
package/libsql/driver.js CHANGED
@@ -34,7 +34,9 @@ function drizzle(client, config = {}) {
34
34
  };
35
35
  }
36
36
  const session = new LibSQLSession(client, dialect, schema, { logger }, void 0);
37
- return new LibSQLDatabase("async", dialect, session, schema);
37
+ const db = new LibSQLDatabase("async", dialect, session, schema);
38
+ db.$client = client;
39
+ return db;
38
40
  }
39
41
  export {
40
42
  LibSQLDatabase,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new LibSQLSession(client, dialect, schema, { logger }, undefined);\n\treturn new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<TSchema>;\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAIM;AACP,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AAEnC,SAAS,qBAAqB;AAEvB,MAAM,uBAEH,mBAAgD;AAAA,EACzD,QAAiB,UAAU,IAAY;AAAA,EAKvC,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAEd,QAAgB,SAAiC,CAAC,GAA4B;AAC/E,QAAM,UAAU,IAAI,mBAAmB;AACvC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,cAAc,QAAQ,SAAS,QAAQ,EAAE,OAAO,GAAG,MAAS;AAChF,SAAO,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC5D;","names":[]}
1
+ {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new LibSQLSession(client, dialect, schema, { logger }, undefined);\n\tconst db = new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAIM;AACP,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AAEnC,SAAS,qBAAqB;AAEvB,MAAM,uBAEH,mBAAgD;AAAA,EACzD,QAAiB,UAAU,IAAY;AAAA,EAKvC,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAEd,QAAgB,SAAiC,CAAC,GAElD;AACD,QAAM,UAAU,IAAI,mBAAmB;AACvC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,cAAc,QAAQ,SAAS,QAAQ,EAAE,OAAO,GAAG,MAAS;AAChF,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC/D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
@@ -25,7 +25,7 @@ var import_migrator = require("../migrator.cjs");
25
25
  var import_sql = require("../sql/sql.cjs");
26
26
  async function migrate(db, config) {
27
27
  const migrations = (0, import_migrator.readMigrationFiles)(config);
28
- const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
28
+ const migrationsTable = config.migrationsTable ?? "__drizzle_migrations";
29
29
  const migrationTableCreate = import_sql.sql`
30
30
  CREATE TABLE IF NOT EXISTS ${import_sql.sql.identifier(migrationsTable)} (
31
31
  id SERIAL PRIMARY KEY,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { LibSQLDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: LibSQLDatabase<TSchema>,\n\tconfig: MigrationConfig | string,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tconst migrationsTable = config === undefined\n\t\t? '__drizzle_migrations'\n\t\t: typeof config === 'string'\n\t\t? '__drizzle_migrations'\n\t\t: config.migrationsTable ?? '__drizzle_migrations';\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\tid SERIAL PRIMARY KEY,\n\t\t\thash text NOT NULL,\n\t\t\tcreated_at numeric\n\t\t)\n\t`;\n\tawait db.session.run(migrationTableCreate);\n\n\tconst dbMigrations = await db.values<[number, string, string]>(\n\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t);\n\n\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\tconst statementToBatch = [];\n\n\tfor (const migration of migrations) {\n\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\tstatementToBatch.push(db.run(sql.raw(stmt)));\n\t\t\t}\n\n\t\t\tstatementToBatch.push(\n\t\t\t\tdb.run(\n\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tawait db.session.migrate(statementToBatch);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AACnC,iBAAoB;AAGpB,eAAsB,QACrB,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,QAAM,kBAAkB,WAAW,SAChC,yBACA,OAAO,WAAW,WAClB,yBACA,OAAO,mBAAmB;AAE7B,QAAM,uBAAuB;AAAA,+BACC,eAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,QAAM,GAAG,QAAQ,IAAI,oBAAoB;AAEzC,QAAM,eAAe,MAAM,GAAG;AAAA,IAC7B,kDAAuC,eAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAEA,QAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,QAAM,mBAAmB,CAAC;AAE1B,aAAW,aAAa,YAAY;AACnC,QAAI,CAAC,mBAAmB,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAAc;AAC7E,iBAAW,QAAQ,UAAU,KAAK;AACjC,yBAAiB,KAAK,GAAG,IAAI,eAAI,IAAI,IAAI,CAAC,CAAC;AAAA,MAC5C;AAEA,uBAAiB;AAAA,QAChB,GAAG;AAAA,UACF,6BACC,eAAI,WAAW,eAAe,CAC/B,kCAAkC,UAAU,IAAI,KAAK,UAAU,YAAY;AAAA,QAC5E;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,QAAM,GAAG,QAAQ,QAAQ,gBAAgB;AAC1C;","names":[]}
1
+ {"version":3,"sources":["../../src/libsql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { LibSQLDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: LibSQLDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tconst migrationsTable = config.migrationsTable ?? '__drizzle_migrations';\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\tid SERIAL PRIMARY KEY,\n\t\t\thash text NOT NULL,\n\t\t\tcreated_at numeric\n\t\t)\n\t`;\n\tawait db.session.run(migrationTableCreate);\n\n\tconst dbMigrations = await db.values<[number, string, string]>(\n\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t);\n\n\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\tconst statementToBatch = [];\n\n\tfor (const migration of migrations) {\n\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\tstatementToBatch.push(db.run(sql.raw(stmt)));\n\t\t\t}\n\n\t\t\tstatementToBatch.push(\n\t\t\t\tdb.run(\n\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tawait db.session.migrate(statementToBatch);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AACnC,iBAAoB;AAGpB,eAAsB,QACrB,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,QAAM,kBAAkB,OAAO,mBAAmB;AAElD,QAAM,uBAAuB;AAAA,+BACC,eAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,QAAM,GAAG,QAAQ,IAAI,oBAAoB;AAEzC,QAAM,eAAe,MAAM,GAAG;AAAA,IAC7B,kDAAuC,eAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAEA,QAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,QAAM,mBAAmB,CAAC;AAE1B,aAAW,aAAa,YAAY;AACnC,QAAI,CAAC,mBAAmB,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAAc;AAC7E,iBAAW,QAAQ,UAAU,KAAK;AACjC,yBAAiB,KAAK,GAAG,IAAI,eAAI,IAAI,IAAI,CAAC,CAAC;AAAA,MAC5C;AAEA,uBAAiB;AAAA,QAChB,GAAG;AAAA,UACF,6BACC,eAAI,WAAW,eAAe,CAC/B,kCAAkC,UAAU,IAAI,KAAK,UAAU,YAAY;AAAA,QAC5E;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,QAAM,GAAG,QAAQ,QAAQ,gBAAgB;AAC1C;","names":[]}
@@ -1,3 +1,3 @@
1
1
  import type { MigrationConfig } from "../migrator.cjs";
2
2
  import type { LibSQLDatabase } from "./driver.cjs";
3
- export declare function migrate<TSchema extends Record<string, unknown>>(db: LibSQLDatabase<TSchema>, config: MigrationConfig | string): Promise<void>;
3
+ export declare function migrate<TSchema extends Record<string, unknown>>(db: LibSQLDatabase<TSchema>, config: MigrationConfig): Promise<void>;
@@ -1,3 +1,3 @@
1
1
  import type { MigrationConfig } from "../migrator.js";
2
2
  import type { LibSQLDatabase } from "./driver.js";
3
- export declare function migrate<TSchema extends Record<string, unknown>>(db: LibSQLDatabase<TSchema>, config: MigrationConfig | string): Promise<void>;
3
+ export declare function migrate<TSchema extends Record<string, unknown>>(db: LibSQLDatabase<TSchema>, config: MigrationConfig): Promise<void>;
@@ -2,7 +2,7 @@ import { readMigrationFiles } from "../migrator.js";
2
2
  import { sql } from "../sql/sql.js";
3
3
  async function migrate(db, config) {
4
4
  const migrations = readMigrationFiles(config);
5
- const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
5
+ const migrationsTable = config.migrationsTable ?? "__drizzle_migrations";
6
6
  const migrationTableCreate = sql`
7
7
  CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
8
8
  id SERIAL PRIMARY KEY,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { LibSQLDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: LibSQLDatabase<TSchema>,\n\tconfig: MigrationConfig | string,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tconst migrationsTable = config === undefined\n\t\t? '__drizzle_migrations'\n\t\t: typeof config === 'string'\n\t\t? '__drizzle_migrations'\n\t\t: config.migrationsTable ?? '__drizzle_migrations';\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\tid SERIAL PRIMARY KEY,\n\t\t\thash text NOT NULL,\n\t\t\tcreated_at numeric\n\t\t)\n\t`;\n\tawait db.session.run(migrationTableCreate);\n\n\tconst dbMigrations = await db.values<[number, string, string]>(\n\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t);\n\n\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\tconst statementToBatch = [];\n\n\tfor (const migration of migrations) {\n\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\tstatementToBatch.push(db.run(sql.raw(stmt)));\n\t\t\t}\n\n\t\t\tstatementToBatch.push(\n\t\t\t\tdb.run(\n\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tawait db.session.migrate(statementToBatch);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AACnC,SAAS,WAAW;AAGpB,eAAsB,QACrB,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,QAAM,kBAAkB,WAAW,SAChC,yBACA,OAAO,WAAW,WAClB,yBACA,OAAO,mBAAmB;AAE7B,QAAM,uBAAuB;AAAA,+BACC,IAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,QAAM,GAAG,QAAQ,IAAI,oBAAoB;AAEzC,QAAM,eAAe,MAAM,GAAG;AAAA,IAC7B,uCAAuC,IAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAEA,QAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,QAAM,mBAAmB,CAAC;AAE1B,aAAW,aAAa,YAAY;AACnC,QAAI,CAAC,mBAAmB,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAAc;AAC7E,iBAAW,QAAQ,UAAU,KAAK;AACjC,yBAAiB,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AAAA,MAC5C;AAEA,uBAAiB;AAAA,QAChB,GAAG;AAAA,UACF,kBACC,IAAI,WAAW,eAAe,CAC/B,kCAAkC,UAAU,IAAI,KAAK,UAAU,YAAY;AAAA,QAC5E;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,QAAM,GAAG,QAAQ,QAAQ,gBAAgB;AAC1C;","names":[]}
1
+ {"version":3,"sources":["../../src/libsql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { LibSQLDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: LibSQLDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tconst migrationsTable = config.migrationsTable ?? '__drizzle_migrations';\n\n\tconst migrationTableCreate = sql`\n\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\tid SERIAL PRIMARY KEY,\n\t\t\thash text NOT NULL,\n\t\t\tcreated_at numeric\n\t\t)\n\t`;\n\tawait db.session.run(migrationTableCreate);\n\n\tconst dbMigrations = await db.values<[number, string, string]>(\n\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t);\n\n\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\tconst statementToBatch = [];\n\n\tfor (const migration of migrations) {\n\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\tstatementToBatch.push(db.run(sql.raw(stmt)));\n\t\t\t}\n\n\t\t\tstatementToBatch.push(\n\t\t\t\tdb.run(\n\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tawait db.session.migrate(statementToBatch);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AACnC,SAAS,WAAW;AAGpB,eAAsB,QACrB,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,QAAM,kBAAkB,OAAO,mBAAmB;AAElD,QAAM,uBAAuB;AAAA,+BACC,IAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,QAAM,GAAG,QAAQ,IAAI,oBAAoB;AAEzC,QAAM,eAAe,MAAM,GAAG;AAAA,IAC7B,uCAAuC,IAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAEA,QAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,QAAM,mBAAmB,CAAC;AAE1B,aAAW,aAAa,YAAY;AACnC,QAAI,CAAC,mBAAmB,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAAc;AAC7E,iBAAW,QAAQ,UAAU,KAAK;AACjC,yBAAiB,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AAAA,MAC5C;AAEA,uBAAiB;AAAA,QAChB,GAAG;AAAA,UACF,kBACC,IAAI,WAAW,eAAe,CAC/B,kCAAkC,UAAU,IAAI,KAAK,UAAU,YAAY;AAAA,QAC5E;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,QAAM,GAAG,QAAQ,QAAQ,gBAAgB;AAC1C;","names":[]}
package/migrator.cjs CHANGED
@@ -33,19 +33,8 @@ __export(migrator_exports, {
33
33
  module.exports = __toCommonJS(migrator_exports);
34
34
  var import_node_crypto = __toESM(require("node:crypto"), 1);
35
35
  var import_node_fs = __toESM(require("node:fs"), 1);
36
- var import_node_path = __toESM(require("node:path"), 1);
37
36
  function readMigrationFiles(config) {
38
- let migrationFolderTo;
39
- if (typeof config === "string") {
40
- const configAsString = import_node_fs.default.readFileSync(import_node_path.default.resolve(".", config), "utf8");
41
- const jsonConfig = JSON.parse(configAsString);
42
- migrationFolderTo = jsonConfig.out;
43
- } else {
44
- migrationFolderTo = config.migrationsFolder;
45
- }
46
- if (!migrationFolderTo) {
47
- throw new Error("no migration folder defined");
48
- }
37
+ const migrationFolderTo = config.migrationsFolder;
49
38
  const migrationQueries = [];
50
39
  const journalPath = `${migrationFolderTo}/meta/_journal.json`;
51
40
  if (!import_node_fs.default.existsSync(journalPath)) {
package/migrator.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[] {\n\tlet migrationFolderTo: string | undefined;\n\tif (typeof config === 'string') {\n\t\tconst configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');\n\t\tconst jsonConfig = JSON.parse(configAsString) as KitConfig;\n\t\tmigrationFolderTo = jsonConfig.out;\n\t} else {\n\t\tmigrationFolderTo = config.migrationsFolder;\n\t}\n\n\tif (!migrationFolderTo) {\n\t\tthrow new Error('no migration folder defined');\n\t}\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAmB;AACnB,qBAAe;AACf,uBAAiB;AAoBV,SAAS,mBAAmB,QAAmD;AACrF,MAAI;AACJ,MAAI,OAAO,WAAW,UAAU;AAC/B,UAAM,iBAAiB,eAAAA,QAAG,aAAa,iBAAAC,QAAK,QAAQ,KAAK,MAAM,GAAG,MAAM;AACxE,UAAM,aAAa,KAAK,MAAM,cAAc;AAC5C,wBAAoB,WAAW;AAAA,EAChC,OAAO;AACN,wBAAoB,OAAO;AAAA,EAC5B;AAEA,MAAI,CAAC,mBAAmB;AACvB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC9C;AAEA,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,eAAAD,QAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,eAAAA,QAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,eAAAA,QAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,mBAAAE,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":["fs","path","crypto"]}
1
+ {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAmB;AACnB,qBAAe;AAoBR,SAAS,mBAAmB,QAA0C;AAC5E,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,eAAAA,QAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,eAAAA,QAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,eAAAA,QAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,mBAAAC,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":["fs","crypto"]}
package/migrator.d.cts CHANGED
@@ -13,4 +13,4 @@ export interface MigrationMeta {
13
13
  hash: string;
14
14
  bps: boolean;
15
15
  }
16
- export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
16
+ export declare function readMigrationFiles(config: MigrationConfig): MigrationMeta[];
package/migrator.d.ts CHANGED
@@ -13,4 +13,4 @@ export interface MigrationMeta {
13
13
  hash: string;
14
14
  bps: boolean;
15
15
  }
16
- export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
16
+ export declare function readMigrationFiles(config: MigrationConfig): MigrationMeta[];
package/migrator.js CHANGED
@@ -1,18 +1,7 @@
1
1
  import crypto from "node:crypto";
2
2
  import fs from "node:fs";
3
- import path from "node:path";
4
3
  function readMigrationFiles(config) {
5
- let migrationFolderTo;
6
- if (typeof config === "string") {
7
- const configAsString = fs.readFileSync(path.resolve(".", config), "utf8");
8
- const jsonConfig = JSON.parse(configAsString);
9
- migrationFolderTo = jsonConfig.out;
10
- } else {
11
- migrationFolderTo = config.migrationsFolder;
12
- }
13
- if (!migrationFolderTo) {
14
- throw new Error("no migration folder defined");
15
- }
4
+ const migrationFolderTo = config.migrationsFolder;
16
5
  const migrationQueries = [];
17
6
  const journalPath = `${migrationFolderTo}/meta/_journal.json`;
18
7
  if (!fs.existsSync(journalPath)) {
package/migrator.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[] {\n\tlet migrationFolderTo: string | undefined;\n\tif (typeof config === 'string') {\n\t\tconst configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');\n\t\tconst jsonConfig = JSON.parse(configAsString) as KitConfig;\n\t\tmigrationFolderTo = jsonConfig.out;\n\t} else {\n\t\tmigrationFolderTo = config.migrationsFolder;\n\t}\n\n\tif (!migrationFolderTo) {\n\t\tthrow new Error('no migration folder defined');\n\t}\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,OAAO,QAAQ;AACf,OAAO,UAAU;AAoBV,SAAS,mBAAmB,QAAmD;AACrF,MAAI;AACJ,MAAI,OAAO,WAAW,UAAU;AAC/B,UAAM,iBAAiB,GAAG,aAAa,KAAK,QAAQ,KAAK,MAAM,GAAG,MAAM;AACxE,UAAM,aAAa,KAAK,MAAM,cAAc;AAC5C,wBAAoB,WAAW;AAAA,EAChC,OAAO;AACN,wBAAoB,OAAO;AAAA,EAC5B;AAEA,MAAI,CAAC,mBAAmB;AACvB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC9C;AAEA,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,GAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,OAAO,QAAQ;AAoBR,SAAS,mBAAmB,QAA0C;AAC5E,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,GAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
package/monodriver.cjs CHANGED
@@ -39,132 +39,219 @@ const importError = (libName) => {
39
39
  function assertUnreachable(_) {
40
40
  throw new Error("Didn't expect to get here");
41
41
  }
42
- async function drizzle(client, params) {
43
- const { connection, ws, ...drizzleConfig } = params;
42
+ async function drizzle(client, ...params) {
44
43
  switch (client) {
45
44
  case "node-postgres": {
46
- const { Pool } = await import("pg").catch(() => importError("pg"));
45
+ const defpg = await import("pg").catch(() => importError("pg"));
47
46
  const { drizzle: drizzle2 } = await import("./node-postgres");
48
- const instance = new Pool(connection);
49
- const db = drizzle2(instance, drizzleConfig);
50
- db.$client = instance;
47
+ if (typeof params[0] === "object") {
48
+ const { connection, ...drizzleConfig } = params[0];
49
+ const instance2 = typeof connection === "string" ? new defpg.default.Pool({
50
+ connectionString: connection
51
+ }) : new defpg.default.Pool(connection);
52
+ const db2 = drizzle2(instance2, drizzleConfig);
53
+ return db2;
54
+ }
55
+ const instance = typeof params[0] === "string" ? new defpg.default.Pool({
56
+ connectionString: params[0]
57
+ }) : new defpg.default.Pool(params[0]);
58
+ const db = drizzle2(instance);
51
59
  return db;
52
60
  }
53
61
  case "aws-data-api-pg": {
62
+ const { connection, ...drizzleConfig } = params[0];
63
+ const { resourceArn, database, secretArn, ...rdsConfig } = connection;
54
64
  const { RDSDataClient } = await import("@aws-sdk/client-rds-data").catch(
55
65
  () => importError("@aws-sdk/client-rds-data")
56
66
  );
57
67
  const { drizzle: drizzle2 } = await import("./aws-data-api/pg");
58
- const instance = new RDSDataClient(connection);
59
- const db = drizzle2(instance, drizzleConfig);
60
- db.$client = instance;
68
+ const instance = new RDSDataClient(rdsConfig);
69
+ const db = drizzle2(instance, { resourceArn, database, secretArn, ...drizzleConfig });
61
70
  return db;
62
71
  }
63
72
  case "better-sqlite3": {
64
73
  const { default: Client } = await import("better-sqlite3").catch(() => importError("better-sqlite3"));
65
74
  const { drizzle: drizzle2 } = await import("./better-sqlite3");
66
- if (typeof connection === "object") {
67
- const { filename, options } = connection;
68
- const instance2 = new Client(filename, options);
75
+ if (typeof params[0] === "object") {
76
+ const { connection, ...drizzleConfig } = params[0];
77
+ if (typeof connection === "object") {
78
+ const { source, ...options } = connection;
79
+ const instance3 = new Client(source, options);
80
+ const db3 = drizzle2(instance3, drizzleConfig);
81
+ return db3;
82
+ }
83
+ const instance2 = new Client(connection);
69
84
  const db2 = drizzle2(instance2, drizzleConfig);
70
- db2.$client = instance2;
71
85
  return db2;
72
86
  }
73
- const instance = new Client(connection);
74
- const db = drizzle2(instance, drizzleConfig);
75
- db.$client = instance;
87
+ const instance = new Client(params[0]);
88
+ const db = drizzle2(instance);
76
89
  return db;
77
90
  }
78
91
  case "bun:sqlite": {
79
- const { Database: Client } = await import("bun:sqlite").catch(() => importError("bun:sqlite"));
92
+ const { Database: Client } = await import("bun:sqlite").catch(() => {
93
+ throw new Error(`Please use bun to use 'bun:sqlite' for Drizzle ORM to connect to database`);
94
+ });
80
95
  const { drizzle: drizzle2 } = await import("./bun-sqlite");
81
- if (typeof connection === "object") {
82
- const { filename, options } = connection;
83
- const instance2 = new Client(filename, options);
96
+ if (typeof params[0] === "object") {
97
+ const { connection, ...drizzleConfig } = params[0];
98
+ if (typeof connection === "object") {
99
+ const { source, ...opts } = connection;
100
+ const options = Object.values(opts).filter((v) => v !== void 0).length ? opts : void 0;
101
+ const instance3 = new Client(source, options);
102
+ const db3 = drizzle2(instance3, drizzleConfig);
103
+ return db3;
104
+ }
105
+ const instance2 = new Client(connection);
84
106
  const db2 = drizzle2(instance2, drizzleConfig);
85
- db2.$client = instance2;
86
107
  return db2;
87
108
  }
88
- const instance = new Client(connection);
89
- const db = drizzle2(instance, drizzleConfig);
90
- db.$client = instance;
109
+ const instance = new Client(params[0]);
110
+ const db = drizzle2(instance);
91
111
  return db;
92
112
  }
93
113
  case "d1": {
114
+ const { connection, ...drizzleConfig } = params[0];
94
115
  const { drizzle: drizzle2 } = await import("./d1");
95
116
  const db = drizzle2(connection, drizzleConfig);
96
- db.$client = connection;
97
117
  return db;
98
118
  }
99
- case "libsql": {
119
+ case "libsql":
120
+ case "turso": {
100
121
  const { createClient } = await import("@libsql/client").catch(() => importError("@libsql/client"));
101
122
  const { drizzle: drizzle2 } = await import("./libsql");
102
- const instance = createClient(connection);
123
+ if (typeof params[0] === "string") {
124
+ const instance2 = createClient({
125
+ url: params[0]
126
+ });
127
+ const db2 = drizzle2(instance2);
128
+ return db2;
129
+ }
130
+ const { connection, ...drizzleConfig } = params[0];
131
+ const instance = typeof connection === "string" ? createClient({ url: connection }) : createClient(connection);
103
132
  const db = drizzle2(instance, drizzleConfig);
104
- db.$client = instance;
105
133
  return db;
106
134
  }
107
135
  case "mysql2": {
108
- const { createPool } = await import("mysql2/promise").catch(() => importError("mysql2/promise"));
109
- const instance = createPool(connection);
136
+ const { createPool } = await import("mysql2/promise").catch(() => importError("mysql2"));
110
137
  const { drizzle: drizzle2 } = await import("./mysql2");
111
- const db = drizzle2(instance, drizzleConfig);
112
- db.$client = instance;
138
+ if (typeof params[0] === "object") {
139
+ const { connection, ...drizzleConfig } = params[0];
140
+ const instance2 = createPool(connection);
141
+ const db2 = drizzle2(instance2, drizzleConfig);
142
+ return db2;
143
+ }
144
+ const connectionString = params[0];
145
+ const instance = createPool(connectionString);
146
+ const db = drizzle2(instance);
113
147
  return db;
114
148
  }
115
149
  case "neon-http": {
116
150
  const { neon } = await import("@neondatabase/serverless").catch(() => importError("@neondatabase/serverless"));
117
- const { connectionString, options } = connection;
118
151
  const { drizzle: drizzle2 } = await import("./neon-http");
119
- const instance = neon(connectionString, options);
120
- const db = drizzle2(instance, drizzleConfig);
121
- db.$client = instance;
152
+ if (typeof params[0] === "object") {
153
+ const { connection, ...drizzleConfig } = params[0];
154
+ if (typeof connection === "object") {
155
+ const { connectionString, ...options } = connection;
156
+ const instance3 = neon(connectionString, options);
157
+ const db3 = drizzle2(instance3, drizzleConfig);
158
+ return db3;
159
+ }
160
+ const instance2 = neon(connection);
161
+ const db2 = drizzle2(instance2, drizzleConfig);
162
+ return db2;
163
+ }
164
+ const instance = neon(params[0]);
165
+ const db = drizzle2(instance);
122
166
  return db;
123
167
  }
124
- case "neon-serverless": {
168
+ case "neon-websocket": {
125
169
  const { Pool, neonConfig } = await import("@neondatabase/serverless").catch(
126
170
  () => importError("@neondatabase/serverless")
127
171
  );
128
172
  const { drizzle: drizzle2 } = await import("./neon-serverless");
129
- const instance = new Pool(connection);
130
- if (ws) {
131
- neonConfig.webSocketConstructor = ws;
173
+ if (typeof params[0] === "string") {
174
+ const instance2 = new Pool({
175
+ connectionString: params[0]
176
+ });
177
+ const db2 = drizzle2(instance2);
178
+ return db2;
132
179
  }
133
- const db = drizzle2(instance, drizzleConfig);
134
- db.$client = instance;
180
+ if (typeof params[0] === "object") {
181
+ const { connection, ws, ...drizzleConfig } = params[0];
182
+ if (ws) {
183
+ neonConfig.webSocketConstructor = ws;
184
+ }
185
+ const instance2 = typeof connection === "string" ? new Pool({
186
+ connectionString: connection
187
+ }) : new Pool(connection);
188
+ const db2 = drizzle2(instance2, drizzleConfig);
189
+ return db2;
190
+ }
191
+ const instance = new Pool();
192
+ const db = drizzle2(instance);
135
193
  return db;
136
194
  }
137
195
  case "planetscale": {
138
196
  const { Client } = await import("@planetscale/database").catch(() => importError("@planetscale/database"));
139
197
  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;
198
+ if (typeof params[0] === "object") {
199
+ const { connection, ...drizzleConfig } = params[0];
200
+ const instance2 = typeof connection === "string" ? new Client({
201
+ url: connection
202
+ }) : new Client(
203
+ connection
204
+ );
205
+ const db2 = drizzle2(instance2, drizzleConfig);
206
+ return db2;
207
+ }
208
+ const instance = new Client({
209
+ url: params[0]
210
+ });
211
+ const db = drizzle2(instance);
145
212
  return db;
146
213
  }
147
214
  case "postgres-js": {
148
215
  const { default: client2 } = await import("postgres").catch(() => importError("postgres"));
149
216
  const { drizzle: drizzle2 } = await import("./postgres-js");
150
- const instance = client2(connection);
151
- const db = drizzle2(instance, drizzleConfig);
152
- db.$client = instance;
217
+ if (typeof params[0] === "object") {
218
+ const { connection, ...drizzleConfig } = params[0];
219
+ if (typeof connection === "object" && connection.url !== void 0) {
220
+ const { url, ...config } = connection;
221
+ const instance3 = client2(url, config);
222
+ const db3 = drizzle2(instance3, drizzleConfig);
223
+ return db3;
224
+ }
225
+ const instance2 = client2(connection);
226
+ const db2 = drizzle2(instance2, drizzleConfig);
227
+ return db2;
228
+ }
229
+ const instance = client2(params[0]);
230
+ const db = drizzle2(instance);
153
231
  return db;
154
232
  }
155
233
  case "tidb-serverless": {
156
234
  const { connect } = await import("@tidbcloud/serverless").catch(() => importError("@tidbcloud/serverless"));
157
235
  const { drizzle: drizzle2 } = await import("./tidb-serverless");
158
- const instance = connect(connection);
236
+ if (typeof params[0] === "string") {
237
+ const instance2 = connect({
238
+ url: params[0]
239
+ });
240
+ const db2 = drizzle2(instance2);
241
+ return db2;
242
+ }
243
+ const { connection, ...drizzleConfig } = params[0];
244
+ const instance = typeof connection === "string" ? connect({
245
+ url: connection
246
+ }) : connect(connection);
159
247
  const db = drizzle2(instance, drizzleConfig);
160
- db.$client = instance;
161
248
  return db;
162
249
  }
163
250
  case "vercel-postgres": {
251
+ const drizzleConfig = params[0];
164
252
  const { sql } = await import("@vercel/postgres").catch(() => importError("@vercel/postgres"));
165
253
  const { drizzle: drizzle2 } = await import("./vercel-postgres");
166
254
  const db = drizzle2(sql, drizzleConfig);
167
- db.$client = sql;
168
255
  return db;
169
256
  }
170
257
  }