drizzle-orm 0.39.2-aaa57ff → 0.39.2-dc3b366

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 (629) hide show
  1. package/alias.cjs.map +1 -1
  2. package/alias.d.cts +3 -3
  3. package/alias.d.ts +3 -3
  4. package/alias.js.map +1 -1
  5. package/aws-data-api/pg/driver.cjs +5 -19
  6. package/aws-data-api/pg/driver.cjs.map +1 -1
  7. package/aws-data-api/pg/driver.d.cts +8 -9
  8. package/aws-data-api/pg/driver.d.ts +8 -9
  9. package/aws-data-api/pg/driver.js +8 -9
  10. package/aws-data-api/pg/driver.js.map +1 -1
  11. package/aws-data-api/pg/migrator.cjs.map +1 -1
  12. package/aws-data-api/pg/migrator.d.cts +1 -2
  13. package/aws-data-api/pg/migrator.d.ts +1 -2
  14. package/aws-data-api/pg/migrator.js.map +1 -1
  15. package/aws-data-api/pg/session.cjs +4 -67
  16. package/aws-data-api/pg/session.cjs.map +1 -1
  17. package/aws-data-api/pg/session.d.cts +8 -13
  18. package/aws-data-api/pg/session.d.ts +8 -13
  19. package/aws-data-api/pg/session.js +4 -67
  20. package/aws-data-api/pg/session.js.map +1 -1
  21. package/better-sqlite3/driver.cjs +5 -12
  22. package/better-sqlite3/driver.cjs.map +1 -1
  23. package/better-sqlite3/driver.d.cts +6 -7
  24. package/better-sqlite3/driver.d.ts +6 -7
  25. package/better-sqlite3/driver.js +8 -12
  26. package/better-sqlite3/driver.js.map +1 -1
  27. package/better-sqlite3/migrator.cjs.map +1 -1
  28. package/better-sqlite3/migrator.d.cts +1 -2
  29. package/better-sqlite3/migrator.d.ts +1 -2
  30. package/better-sqlite3/migrator.js.map +1 -1
  31. package/better-sqlite3/session.cjs +4 -49
  32. package/better-sqlite3/session.cjs.map +1 -1
  33. package/better-sqlite3/session.d.cts +8 -14
  34. package/better-sqlite3/session.d.ts +8 -14
  35. package/better-sqlite3/session.js +4 -49
  36. package/better-sqlite3/session.js.map +1 -1
  37. package/bun-sql/driver.cjs +5 -16
  38. package/bun-sql/driver.cjs.map +1 -1
  39. package/bun-sql/driver.d.cts +6 -7
  40. package/bun-sql/driver.d.ts +6 -7
  41. package/bun-sql/driver.js +8 -6
  42. package/bun-sql/driver.js.map +1 -1
  43. package/bun-sql/migrator.cjs.map +1 -1
  44. package/bun-sql/migrator.d.cts +1 -2
  45. package/bun-sql/migrator.d.ts +1 -2
  46. package/bun-sql/migrator.js.map +1 -1
  47. package/bun-sql/session.cjs +6 -50
  48. package/bun-sql/session.cjs.map +1 -1
  49. package/bun-sql/session.d.cts +9 -14
  50. package/bun-sql/session.d.ts +9 -14
  51. package/bun-sql/session.js +6 -50
  52. package/bun-sql/session.js.map +1 -1
  53. package/bun-sqlite/driver.cjs +5 -22
  54. package/bun-sqlite/driver.cjs.map +1 -1
  55. package/bun-sqlite/driver.d.cts +6 -7
  56. package/bun-sqlite/driver.d.ts +6 -7
  57. package/bun-sqlite/driver.js +8 -12
  58. package/bun-sqlite/driver.js.map +1 -1
  59. package/bun-sqlite/migrator.cjs.map +1 -1
  60. package/bun-sqlite/migrator.d.cts +1 -2
  61. package/bun-sqlite/migrator.d.ts +1 -2
  62. package/bun-sqlite/migrator.js.map +1 -1
  63. package/bun-sqlite/session.cjs +4 -49
  64. package/bun-sqlite/session.cjs.map +1 -1
  65. package/bun-sqlite/session.d.cts +8 -14
  66. package/bun-sqlite/session.d.ts +8 -14
  67. package/bun-sqlite/session.js +4 -49
  68. package/bun-sqlite/session.js.map +1 -1
  69. package/d1/driver.cjs +5 -22
  70. package/d1/driver.cjs.map +1 -1
  71. package/d1/driver.d.cts +2 -3
  72. package/d1/driver.d.ts +2 -3
  73. package/d1/driver.js +8 -12
  74. package/d1/driver.js.map +1 -1
  75. package/d1/migrator.cjs.map +1 -1
  76. package/d1/migrator.d.cts +1 -2
  77. package/d1/migrator.d.ts +1 -2
  78. package/d1/migrator.js.map +1 -1
  79. package/d1/session.cjs +8 -50
  80. package/d1/session.cjs.map +1 -1
  81. package/d1/session.d.cts +8 -15
  82. package/d1/session.d.ts +8 -15
  83. package/d1/session.js +8 -50
  84. package/d1/session.js.map +1 -1
  85. package/durable-sqlite/driver.cjs +5 -16
  86. package/durable-sqlite/driver.cjs.map +1 -1
  87. package/durable-sqlite/driver.d.cts +2 -3
  88. package/durable-sqlite/driver.d.ts +2 -3
  89. package/durable-sqlite/driver.js +8 -6
  90. package/durable-sqlite/driver.js.map +1 -1
  91. package/durable-sqlite/migrator.cjs.map +1 -1
  92. package/durable-sqlite/migrator.d.cts +1 -2
  93. package/durable-sqlite/migrator.d.ts +1 -2
  94. package/durable-sqlite/migrator.js.map +1 -1
  95. package/durable-sqlite/session.cjs +4 -46
  96. package/durable-sqlite/session.cjs.map +1 -1
  97. package/durable-sqlite/session.d.cts +8 -14
  98. package/durable-sqlite/session.d.ts +8 -14
  99. package/durable-sqlite/session.js +4 -46
  100. package/durable-sqlite/session.js.map +1 -1
  101. package/expo-sqlite/driver.cjs +5 -22
  102. package/expo-sqlite/driver.cjs.map +1 -1
  103. package/expo-sqlite/driver.d.cts +2 -3
  104. package/expo-sqlite/driver.d.ts +2 -3
  105. package/expo-sqlite/driver.js +8 -12
  106. package/expo-sqlite/driver.js.map +1 -1
  107. package/expo-sqlite/migrator.cjs.map +1 -1
  108. package/expo-sqlite/migrator.d.cts +2 -3
  109. package/expo-sqlite/migrator.d.ts +2 -3
  110. package/expo-sqlite/migrator.js.map +1 -1
  111. package/expo-sqlite/query.cjs +2 -13
  112. package/expo-sqlite/query.cjs.map +1 -1
  113. package/expo-sqlite/query.d.cts +1 -2
  114. package/expo-sqlite/query.d.ts +1 -2
  115. package/expo-sqlite/query.js +2 -3
  116. package/expo-sqlite/query.js.map +1 -1
  117. package/expo-sqlite/session.cjs +4 -47
  118. package/expo-sqlite/session.cjs.map +1 -1
  119. package/expo-sqlite/session.d.cts +8 -14
  120. package/expo-sqlite/session.d.ts +8 -14
  121. package/expo-sqlite/session.js +4 -47
  122. package/expo-sqlite/session.js.map +1 -1
  123. package/libsql/driver-core.cjs +5 -22
  124. package/libsql/driver-core.cjs.map +1 -1
  125. package/libsql/driver-core.d.cts +1 -2
  126. package/libsql/driver-core.d.ts +1 -2
  127. package/libsql/driver-core.js +8 -12
  128. package/libsql/driver-core.js.map +1 -1
  129. package/libsql/driver.cjs.map +1 -1
  130. package/libsql/driver.d.cts +5 -6
  131. package/libsql/driver.d.ts +5 -6
  132. package/libsql/driver.js.map +1 -1
  133. package/libsql/http/index.cjs.map +1 -1
  134. package/libsql/http/index.d.cts +5 -6
  135. package/libsql/http/index.d.ts +5 -6
  136. package/libsql/http/index.js.map +1 -1
  137. package/libsql/migrator.cjs.map +1 -1
  138. package/libsql/migrator.d.cts +1 -2
  139. package/libsql/migrator.d.ts +1 -2
  140. package/libsql/migrator.js.map +1 -1
  141. package/libsql/node/index.cjs.map +1 -1
  142. package/libsql/node/index.d.cts +5 -6
  143. package/libsql/node/index.d.ts +5 -6
  144. package/libsql/node/index.js.map +1 -1
  145. package/libsql/session.cjs +4 -56
  146. package/libsql/session.cjs.map +1 -1
  147. package/libsql/session.d.cts +9 -15
  148. package/libsql/session.d.ts +9 -15
  149. package/libsql/session.js +4 -56
  150. package/libsql/session.js.map +1 -1
  151. package/libsql/sqlite3/index.cjs.map +1 -1
  152. package/libsql/sqlite3/index.d.cts +5 -6
  153. package/libsql/sqlite3/index.d.ts +5 -6
  154. package/libsql/sqlite3/index.js.map +1 -1
  155. package/libsql/wasm/index.cjs.map +1 -1
  156. package/libsql/wasm/index.d.cts +5 -6
  157. package/libsql/wasm/index.d.ts +5 -6
  158. package/libsql/wasm/index.js.map +1 -1
  159. package/libsql/web/index.cjs.map +1 -1
  160. package/libsql/web/index.d.cts +5 -6
  161. package/libsql/web/index.d.ts +5 -6
  162. package/libsql/web/index.js.map +1 -1
  163. package/libsql/ws/index.cjs.map +1 -1
  164. package/libsql/ws/index.d.cts +5 -6
  165. package/libsql/ws/index.d.ts +5 -6
  166. package/libsql/ws/index.js.map +1 -1
  167. package/mysql-core/db.cjs +6 -30
  168. package/mysql-core/db.cjs.map +1 -1
  169. package/mysql-core/db.d.cts +8 -15
  170. package/mysql-core/db.d.ts +8 -15
  171. package/mysql-core/db.js +5 -29
  172. package/mysql-core/db.js.map +1 -1
  173. package/mysql-core/dialect.cjs +15 -197
  174. package/mysql-core/dialect.cjs.map +1 -1
  175. package/mysql-core/dialect.d.cts +13 -36
  176. package/mysql-core/dialect.d.ts +13 -36
  177. package/mysql-core/dialect.js +22 -196
  178. package/mysql-core/dialect.js.map +1 -1
  179. package/mysql-core/query-builders/count.cjs.map +1 -1
  180. package/mysql-core/query-builders/count.d.cts +1 -1
  181. package/mysql-core/query-builders/count.d.ts +1 -1
  182. package/mysql-core/query-builders/count.js.map +1 -1
  183. package/mysql-core/query-builders/query.cjs +31 -18
  184. package/mysql-core/query-builders/query.cjs.map +1 -1
  185. package/mysql-core/query-builders/query.d.cts +10 -8
  186. package/mysql-core/query-builders/query.d.ts +10 -8
  187. package/mysql-core/query-builders/query.js +31 -18
  188. package/mysql-core/query-builders/query.js.map +1 -1
  189. package/mysql-core/session.cjs +2 -3
  190. package/mysql-core/session.cjs.map +1 -1
  191. package/mysql-core/session.d.cts +7 -10
  192. package/mysql-core/session.d.ts +7 -10
  193. package/mysql-core/session.js +2 -3
  194. package/mysql-core/session.js.map +1 -1
  195. package/mysql-proxy/driver.cjs +5 -22
  196. package/mysql-proxy/driver.cjs.map +1 -1
  197. package/mysql-proxy/driver.d.cts +2 -3
  198. package/mysql-proxy/driver.d.ts +2 -3
  199. package/mysql-proxy/driver.js +8 -12
  200. package/mysql-proxy/driver.js.map +1 -1
  201. package/mysql-proxy/migrator.cjs.map +1 -1
  202. package/mysql-proxy/migrator.d.cts +1 -2
  203. package/mysql-proxy/migrator.d.ts +1 -2
  204. package/mysql-proxy/migrator.js.map +1 -1
  205. package/mysql-proxy/session.cjs +2 -27
  206. package/mysql-proxy/session.cjs.map +1 -1
  207. package/mysql-proxy/session.d.cts +8 -13
  208. package/mysql-proxy/session.d.ts +8 -13
  209. package/mysql-proxy/session.js +2 -27
  210. package/mysql-proxy/session.js.map +1 -1
  211. package/mysql2/driver.cjs +7 -24
  212. package/mysql2/driver.cjs.map +1 -1
  213. package/mysql2/driver.d.cts +9 -10
  214. package/mysql2/driver.d.ts +9 -10
  215. package/mysql2/driver.js +10 -14
  216. package/mysql2/driver.js.map +1 -1
  217. package/mysql2/migrator.cjs.map +1 -1
  218. package/mysql2/migrator.d.cts +1 -2
  219. package/mysql2/migrator.d.ts +1 -2
  220. package/mysql2/migrator.js.map +1 -1
  221. package/mysql2/session.cjs +2 -30
  222. package/mysql2/session.cjs.map +1 -1
  223. package/mysql2/session.d.cts +8 -13
  224. package/mysql2/session.d.ts +8 -13
  225. package/mysql2/session.js +2 -30
  226. package/mysql2/session.js.map +1 -1
  227. package/neon-http/driver.cjs +7 -21
  228. package/neon-http/driver.cjs.map +1 -1
  229. package/neon-http/driver.d.cts +9 -10
  230. package/neon-http/driver.d.ts +9 -10
  231. package/neon-http/driver.js +7 -11
  232. package/neon-http/driver.js.map +1 -1
  233. package/neon-http/migrator.cjs.map +1 -1
  234. package/neon-http/migrator.d.cts +1 -2
  235. package/neon-http/migrator.d.ts +1 -2
  236. package/neon-http/migrator.js.map +1 -1
  237. package/neon-http/session.cjs +2 -32
  238. package/neon-http/session.cjs.map +1 -1
  239. package/neon-http/session.d.cts +8 -13
  240. package/neon-http/session.d.ts +8 -13
  241. package/neon-http/session.js +2 -32
  242. package/neon-http/session.js.map +1 -1
  243. package/neon-serverless/driver.cjs +7 -18
  244. package/neon-serverless/driver.cjs.map +1 -1
  245. package/neon-serverless/driver.d.cts +8 -9
  246. package/neon-serverless/driver.d.ts +8 -9
  247. package/neon-serverless/driver.js +10 -8
  248. package/neon-serverless/driver.js.map +1 -1
  249. package/neon-serverless/migrator.cjs.map +1 -1
  250. package/neon-serverless/migrator.d.cts +1 -2
  251. package/neon-serverless/migrator.d.ts +1 -2
  252. package/neon-serverless/migrator.js.map +1 -1
  253. package/neon-serverless/session.cjs +5 -40
  254. package/neon-serverless/session.cjs.map +1 -1
  255. package/neon-serverless/session.d.cts +8 -13
  256. package/neon-serverless/session.d.ts +8 -13
  257. package/neon-serverless/session.js +5 -40
  258. package/neon-serverless/session.js.map +1 -1
  259. package/node-postgres/driver.cjs +7 -13
  260. package/node-postgres/driver.cjs.map +1 -1
  261. package/node-postgres/driver.d.cts +8 -9
  262. package/node-postgres/driver.d.ts +8 -9
  263. package/node-postgres/driver.js +10 -13
  264. package/node-postgres/driver.js.map +1 -1
  265. package/node-postgres/migrator.cjs.map +1 -1
  266. package/node-postgres/migrator.d.cts +1 -2
  267. package/node-postgres/migrator.d.ts +1 -2
  268. package/node-postgres/migrator.js.map +1 -1
  269. package/node-postgres/session.cjs +4 -45
  270. package/node-postgres/session.cjs.map +1 -1
  271. package/node-postgres/session.d.cts +8 -13
  272. package/node-postgres/session.d.ts +8 -13
  273. package/node-postgres/session.js +4 -45
  274. package/node-postgres/session.js.map +1 -1
  275. package/op-sqlite/driver.cjs +5 -22
  276. package/op-sqlite/driver.cjs.map +1 -1
  277. package/op-sqlite/driver.d.cts +2 -3
  278. package/op-sqlite/driver.d.ts +2 -3
  279. package/op-sqlite/driver.js +8 -12
  280. package/op-sqlite/driver.js.map +1 -1
  281. package/op-sqlite/migrator.cjs.map +1 -1
  282. package/op-sqlite/migrator.d.cts +2 -3
  283. package/op-sqlite/migrator.d.ts +2 -3
  284. package/op-sqlite/migrator.js.map +1 -1
  285. package/op-sqlite/session.cjs +4 -47
  286. package/op-sqlite/session.cjs.map +1 -1
  287. package/op-sqlite/session.d.cts +8 -14
  288. package/op-sqlite/session.d.ts +8 -14
  289. package/op-sqlite/session.js +4 -47
  290. package/op-sqlite/session.js.map +1 -1
  291. package/package.json +51 -99
  292. package/pg-core/db.cjs +5 -32
  293. package/pg-core/db.cjs.map +1 -1
  294. package/pg-core/db.d.cts +9 -16
  295. package/pg-core/db.d.ts +9 -16
  296. package/pg-core/db.js +4 -31
  297. package/pg-core/db.js.map +1 -1
  298. package/pg-core/dialect.cjs +488 -173
  299. package/pg-core/dialect.cjs.map +1 -1
  300. package/pg-core/dialect.d.cts +8 -27
  301. package/pg-core/dialect.d.ts +8 -27
  302. package/pg-core/dialect.js +495 -172
  303. package/pg-core/dialect.js.map +1 -1
  304. package/pg-core/query-builders/count.cjs.map +1 -1
  305. package/pg-core/query-builders/count.d.cts +1 -1
  306. package/pg-core/query-builders/count.d.ts +1 -1
  307. package/pg-core/query-builders/count.js.map +1 -1
  308. package/pg-core/query-builders/query.cjs +18 -15
  309. package/pg-core/query-builders/query.cjs.map +1 -1
  310. package/pg-core/query-builders/query.d.cts +6 -6
  311. package/pg-core/query-builders/query.d.ts +6 -6
  312. package/pg-core/query-builders/query.js +18 -15
  313. package/pg-core/query-builders/query.js.map +1 -1
  314. package/pg-core/session.cjs +2 -3
  315. package/pg-core/session.cjs.map +1 -1
  316. package/pg-core/session.d.cts +6 -9
  317. package/pg-core/session.d.ts +6 -9
  318. package/pg-core/session.js +2 -3
  319. package/pg-core/session.js.map +1 -1
  320. package/pg-proxy/driver.cjs +5 -21
  321. package/pg-proxy/driver.cjs.map +1 -1
  322. package/pg-proxy/driver.d.cts +2 -3
  323. package/pg-proxy/driver.d.ts +2 -3
  324. package/pg-proxy/driver.js +8 -11
  325. package/pg-proxy/driver.js.map +1 -1
  326. package/pg-proxy/migrator.cjs.map +1 -1
  327. package/pg-proxy/migrator.d.cts +1 -2
  328. package/pg-proxy/migrator.d.ts +1 -2
  329. package/pg-proxy/migrator.js.map +1 -1
  330. package/pg-proxy/session.cjs +2 -37
  331. package/pg-proxy/session.cjs.map +1 -1
  332. package/pg-proxy/session.d.cts +8 -13
  333. package/pg-proxy/session.d.ts +8 -13
  334. package/pg-proxy/session.js +2 -37
  335. package/pg-proxy/session.js.map +1 -1
  336. package/pglite/driver.cjs +7 -23
  337. package/pglite/driver.cjs.map +1 -1
  338. package/pglite/driver.d.cts +8 -9
  339. package/pglite/driver.d.ts +8 -9
  340. package/pglite/driver.js +10 -13
  341. package/pglite/driver.js.map +1 -1
  342. package/pglite/migrator.cjs.map +1 -1
  343. package/pglite/migrator.d.cts +1 -2
  344. package/pglite/migrator.d.ts +1 -2
  345. package/pglite/migrator.js.map +1 -1
  346. package/pglite/session.cjs +3 -34
  347. package/pglite/session.cjs.map +1 -1
  348. package/pglite/session.d.cts +8 -13
  349. package/pglite/session.d.ts +8 -13
  350. package/pglite/session.js +3 -34
  351. package/pglite/session.js.map +1 -1
  352. package/planetscale-serverless/driver.cjs +5 -22
  353. package/planetscale-serverless/driver.cjs.map +1 -1
  354. package/planetscale-serverless/driver.d.cts +6 -7
  355. package/planetscale-serverless/driver.d.ts +6 -7
  356. package/planetscale-serverless/driver.js +8 -12
  357. package/planetscale-serverless/driver.js.map +1 -1
  358. package/planetscale-serverless/migrator.cjs.map +1 -1
  359. package/planetscale-serverless/migrator.d.cts +1 -2
  360. package/planetscale-serverless/migrator.d.ts +1 -2
  361. package/planetscale-serverless/migrator.js.map +1 -1
  362. package/planetscale-serverless/session.cjs +5 -45
  363. package/planetscale-serverless/session.cjs.map +1 -1
  364. package/planetscale-serverless/session.d.cts +9 -14
  365. package/planetscale-serverless/session.d.ts +9 -14
  366. package/planetscale-serverless/session.js +5 -45
  367. package/planetscale-serverless/session.js.map +1 -1
  368. package/postgres-js/driver.cjs +5 -6
  369. package/postgres-js/driver.cjs.map +1 -1
  370. package/postgres-js/driver.d.cts +6 -7
  371. package/postgres-js/driver.d.ts +6 -7
  372. package/postgres-js/driver.js +8 -6
  373. package/postgres-js/driver.js.map +1 -1
  374. package/postgres-js/migrator.cjs.map +1 -1
  375. package/postgres-js/migrator.d.cts +1 -2
  376. package/postgres-js/migrator.d.ts +1 -2
  377. package/postgres-js/migrator.js.map +1 -1
  378. package/postgres-js/session.cjs +6 -51
  379. package/postgres-js/session.cjs.map +1 -1
  380. package/postgres-js/session.d.cts +9 -15
  381. package/postgres-js/session.d.ts +9 -15
  382. package/postgres-js/session.js +6 -51
  383. package/postgres-js/session.js.map +1 -1
  384. package/prisma/mysql/driver.cjs +1 -1
  385. package/prisma/mysql/driver.cjs.map +1 -1
  386. package/prisma/mysql/driver.js +1 -1
  387. package/prisma/mysql/driver.js.map +1 -1
  388. package/prisma/mysql/session.cjs +0 -3
  389. package/prisma/mysql/session.cjs.map +1 -1
  390. package/prisma/mysql/session.d.cts +1 -3
  391. package/prisma/mysql/session.d.ts +1 -3
  392. package/prisma/mysql/session.js +0 -3
  393. package/prisma/mysql/session.js.map +1 -1
  394. package/prisma/pg/driver.cjs +1 -1
  395. package/prisma/pg/driver.cjs.map +1 -1
  396. package/prisma/pg/driver.js +1 -1
  397. package/prisma/pg/driver.js.map +1 -1
  398. package/prisma/pg/session.cjs +0 -3
  399. package/prisma/pg/session.cjs.map +1 -1
  400. package/prisma/pg/session.d.cts +1 -3
  401. package/prisma/pg/session.d.ts +1 -3
  402. package/prisma/pg/session.js +0 -3
  403. package/prisma/pg/session.js.map +1 -1
  404. package/prisma/sqlite/driver.cjs +1 -1
  405. package/prisma/sqlite/driver.cjs.map +1 -1
  406. package/prisma/sqlite/driver.js +1 -1
  407. package/prisma/sqlite/driver.js.map +1 -1
  408. package/prisma/sqlite/session.cjs +0 -3
  409. package/prisma/sqlite/session.cjs.map +1 -1
  410. package/prisma/sqlite/session.d.cts +2 -4
  411. package/prisma/sqlite/session.d.ts +2 -4
  412. package/prisma/sqlite/session.js +0 -3
  413. package/prisma/sqlite/session.js.map +1 -1
  414. package/relations.cjs +245 -596
  415. package/relations.cjs.map +1 -1
  416. package/relations.d.cts +140 -292
  417. package/relations.d.ts +140 -292
  418. package/relations.js +240 -589
  419. package/relations.js.map +1 -1
  420. package/singlestore/driver.cjs +1 -1
  421. package/singlestore/driver.cjs.map +1 -1
  422. package/singlestore/driver.d.cts +1 -1
  423. package/singlestore/driver.d.ts +1 -1
  424. package/singlestore/driver.js +3 -3
  425. package/singlestore/driver.js.map +1 -1
  426. package/singlestore/session.cjs.map +1 -1
  427. package/singlestore/session.d.cts +4 -4
  428. package/singlestore/session.d.ts +4 -4
  429. package/singlestore/session.js.map +1 -1
  430. package/singlestore-core/db.cjs.map +1 -1
  431. package/singlestore-core/db.d.cts +3 -3
  432. package/singlestore-core/db.d.ts +3 -3
  433. package/singlestore-core/db.js.map +1 -1
  434. package/singlestore-core/dialect.cjs +6 -16
  435. package/singlestore-core/dialect.cjs.map +1 -1
  436. package/singlestore-core/dialect.d.cts +6 -6
  437. package/singlestore-core/dialect.d.ts +6 -6
  438. package/singlestore-core/dialect.js +12 -6
  439. package/singlestore-core/dialect.js.map +1 -1
  440. package/singlestore-core/query-builders/query.cjs +2 -12
  441. package/singlestore-core/query-builders/query.cjs.map +1 -1
  442. package/singlestore-core/query-builders/query.d.cts +6 -6
  443. package/singlestore-core/query-builders/query.d.ts +6 -6
  444. package/singlestore-core/query-builders/query.js +4 -2
  445. package/singlestore-core/query-builders/query.js.map +1 -1
  446. package/singlestore-core/session.cjs.map +1 -1
  447. package/singlestore-core/session.d.cts +5 -5
  448. package/singlestore-core/session.d.ts +5 -5
  449. package/singlestore-core/session.js.map +1 -1
  450. package/singlestore-proxy/driver.cjs +1 -1
  451. package/singlestore-proxy/driver.cjs.map +1 -1
  452. package/singlestore-proxy/driver.js +3 -3
  453. package/singlestore-proxy/driver.js.map +1 -1
  454. package/singlestore-proxy/session.cjs.map +1 -1
  455. package/singlestore-proxy/session.d.cts +4 -4
  456. package/singlestore-proxy/session.d.ts +4 -4
  457. package/singlestore-proxy/session.js.map +1 -1
  458. package/sql/expressions/conditions.cjs.map +1 -1
  459. package/sql/expressions/conditions.d.cts +4 -4
  460. package/sql/expressions/conditions.d.ts +4 -4
  461. package/sql/expressions/conditions.js.map +1 -1
  462. package/sql/sql.cjs +0 -21
  463. package/sql/sql.cjs.map +1 -1
  464. package/sql/sql.d.cts +8 -8
  465. package/sql/sql.d.ts +8 -8
  466. package/sql/sql.js +1 -22
  467. package/sql/sql.js.map +1 -1
  468. package/sql-js/driver.cjs +5 -16
  469. package/sql-js/driver.cjs.map +1 -1
  470. package/sql-js/driver.d.cts +2 -3
  471. package/sql-js/driver.d.ts +2 -3
  472. package/sql-js/driver.js +8 -6
  473. package/sql-js/driver.js.map +1 -1
  474. package/sql-js/migrator.cjs.map +1 -1
  475. package/sql-js/migrator.d.cts +1 -2
  476. package/sql-js/migrator.d.ts +1 -2
  477. package/sql-js/migrator.js.map +1 -1
  478. package/sql-js/session.cjs +36 -71
  479. package/sql-js/session.cjs.map +1 -1
  480. package/sql-js/session.d.cts +13 -16
  481. package/sql-js/session.d.ts +13 -16
  482. package/sql-js/session.js +36 -71
  483. package/sql-js/session.js.map +1 -1
  484. package/sqlite-core/db.cjs +12 -39
  485. package/sqlite-core/db.cjs.map +1 -1
  486. package/sqlite-core/db.d.cts +8 -16
  487. package/sqlite-core/db.d.ts +8 -16
  488. package/sqlite-core/db.js +11 -38
  489. package/sqlite-core/db.js.map +1 -1
  490. package/sqlite-core/dialect.cjs +7 -186
  491. package/sqlite-core/dialect.cjs.map +1 -1
  492. package/sqlite-core/dialect.d.cts +9 -31
  493. package/sqlite-core/dialect.d.ts +9 -31
  494. package/sqlite-core/dialect.js +14 -185
  495. package/sqlite-core/dialect.js.map +1 -1
  496. package/sqlite-core/query-builders/count.cjs.map +1 -1
  497. package/sqlite-core/query-builders/count.d.cts +1 -1
  498. package/sqlite-core/query-builders/count.d.ts +1 -1
  499. package/sqlite-core/query-builders/count.js.map +1 -1
  500. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  501. package/sqlite-core/query-builders/delete.d.cts +1 -1
  502. package/sqlite-core/query-builders/delete.d.ts +1 -1
  503. package/sqlite-core/query-builders/delete.js.map +1 -1
  504. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  505. package/sqlite-core/query-builders/insert.d.cts +3 -3
  506. package/sqlite-core/query-builders/insert.d.ts +3 -3
  507. package/sqlite-core/query-builders/insert.js.map +1 -1
  508. package/sqlite-core/query-builders/query.cjs +35 -56
  509. package/sqlite-core/query-builders/query.cjs.map +1 -1
  510. package/sqlite-core/query-builders/query.d.cts +17 -18
  511. package/sqlite-core/query-builders/query.d.ts +17 -18
  512. package/sqlite-core/query-builders/query.js +35 -56
  513. package/sqlite-core/query-builders/query.js.map +1 -1
  514. package/sqlite-core/query-builders/select.cjs.map +1 -1
  515. package/sqlite-core/query-builders/select.d.cts +3 -3
  516. package/sqlite-core/query-builders/select.d.ts +3 -3
  517. package/sqlite-core/query-builders/select.js.map +1 -1
  518. package/sqlite-core/query-builders/update.cjs.map +1 -1
  519. package/sqlite-core/query-builders/update.d.cts +3 -3
  520. package/sqlite-core/query-builders/update.d.ts +3 -3
  521. package/sqlite-core/query-builders/update.js.map +1 -1
  522. package/sqlite-core/session.cjs +2 -6
  523. package/sqlite-core/session.cjs.map +1 -1
  524. package/sqlite-core/session.d.cts +7 -15
  525. package/sqlite-core/session.d.ts +7 -15
  526. package/sqlite-core/session.js +2 -6
  527. package/sqlite-core/session.js.map +1 -1
  528. package/sqlite-proxy/driver.cjs +5 -23
  529. package/sqlite-proxy/driver.cjs.map +1 -1
  530. package/sqlite-proxy/driver.d.cts +3 -4
  531. package/sqlite-proxy/driver.d.ts +3 -4
  532. package/sqlite-proxy/driver.js +5 -13
  533. package/sqlite-proxy/driver.js.map +1 -1
  534. package/sqlite-proxy/migrator.cjs.map +1 -1
  535. package/sqlite-proxy/migrator.d.cts +1 -2
  536. package/sqlite-proxy/migrator.d.ts +1 -2
  537. package/sqlite-proxy/migrator.js.map +1 -1
  538. package/sqlite-proxy/session.cjs +6 -50
  539. package/sqlite-proxy/session.cjs.map +1 -1
  540. package/sqlite-proxy/session.d.cts +8 -14
  541. package/sqlite-proxy/session.d.ts +8 -14
  542. package/sqlite-proxy/session.js +6 -50
  543. package/sqlite-proxy/session.js.map +1 -1
  544. package/table.cjs.map +1 -1
  545. package/table.d.cts +2 -2
  546. package/table.d.ts +2 -2
  547. package/table.js.map +1 -1
  548. package/tidb-serverless/driver.cjs +5 -22
  549. package/tidb-serverless/driver.cjs.map +1 -1
  550. package/tidb-serverless/driver.d.cts +6 -7
  551. package/tidb-serverless/driver.d.ts +6 -7
  552. package/tidb-serverless/driver.js +8 -12
  553. package/tidb-serverless/driver.js.map +1 -1
  554. package/tidb-serverless/migrator.cjs.map +1 -1
  555. package/tidb-serverless/migrator.d.cts +1 -2
  556. package/tidb-serverless/migrator.d.ts +1 -2
  557. package/tidb-serverless/migrator.js.map +1 -1
  558. package/tidb-serverless/session.cjs +5 -62
  559. package/tidb-serverless/session.cjs.map +1 -1
  560. package/tidb-serverless/session.d.cts +9 -14
  561. package/tidb-serverless/session.d.ts +9 -14
  562. package/tidb-serverless/session.js +5 -62
  563. package/tidb-serverless/session.js.map +1 -1
  564. package/utils.cjs +2 -2
  565. package/utils.cjs.map +1 -1
  566. package/utils.d.cts +1 -3
  567. package/utils.d.ts +1 -3
  568. package/utils.js +2 -2
  569. package/utils.js.map +1 -1
  570. package/vercel-postgres/driver.cjs +7 -23
  571. package/vercel-postgres/driver.cjs.map +1 -1
  572. package/vercel-postgres/driver.d.cts +8 -9
  573. package/vercel-postgres/driver.d.ts +8 -9
  574. package/vercel-postgres/driver.js +10 -13
  575. package/vercel-postgres/driver.js.map +1 -1
  576. package/vercel-postgres/migrator.cjs.map +1 -1
  577. package/vercel-postgres/migrator.d.cts +1 -2
  578. package/vercel-postgres/migrator.d.ts +1 -2
  579. package/vercel-postgres/migrator.js.map +1 -1
  580. package/vercel-postgres/session.cjs +4 -34
  581. package/vercel-postgres/session.cjs.map +1 -1
  582. package/vercel-postgres/session.d.cts +8 -13
  583. package/vercel-postgres/session.d.ts +8 -13
  584. package/vercel-postgres/session.js +4 -34
  585. package/vercel-postgres/session.js.map +1 -1
  586. package/version.cjs +1 -1
  587. package/version.d.cts +1 -1
  588. package/version.d.ts +1 -1
  589. package/version.js +1 -1
  590. package/xata-http/driver.cjs +5 -17
  591. package/xata-http/driver.cjs.map +1 -1
  592. package/xata-http/driver.d.cts +4 -5
  593. package/xata-http/driver.d.ts +4 -5
  594. package/xata-http/driver.js +5 -7
  595. package/xata-http/driver.js.map +1 -1
  596. package/xata-http/migrator.cjs.map +1 -1
  597. package/xata-http/migrator.d.cts +1 -2
  598. package/xata-http/migrator.d.ts +1 -2
  599. package/xata-http/migrator.js.map +1 -1
  600. package/xata-http/session.cjs +2 -30
  601. package/xata-http/session.cjs.map +1 -1
  602. package/xata-http/session.d.cts +8 -13
  603. package/xata-http/session.d.ts +8 -13
  604. package/xata-http/session.js +2 -30
  605. package/xata-http/session.js.map +1 -1
  606. package/_relations.cjs +0 -328
  607. package/_relations.cjs.map +0 -1
  608. package/_relations.d.cts +0 -215
  609. package/_relations.d.ts +0 -215
  610. package/_relations.js +0 -316
  611. package/_relations.js.map +0 -1
  612. package/mysql-core/query-builders/_query.cjs +0 -149
  613. package/mysql-core/query-builders/_query.cjs.map +0 -1
  614. package/mysql-core/query-builders/_query.d.cts +0 -44
  615. package/mysql-core/query-builders/_query.d.ts +0 -44
  616. package/mysql-core/query-builders/_query.js +0 -114
  617. package/mysql-core/query-builders/_query.js.map +0 -1
  618. package/pg-core/query-builders/_query.cjs +0 -155
  619. package/pg-core/query-builders/_query.cjs.map +0 -1
  620. package/pg-core/query-builders/_query.d.cts +0 -47
  621. package/pg-core/query-builders/_query.d.ts +0 -47
  622. package/pg-core/query-builders/_query.js +0 -120
  623. package/pg-core/query-builders/_query.js.map +0 -1
  624. package/sqlite-core/query-builders/_query.cjs +0 -187
  625. package/sqlite-core/query-builders/_query.cjs.map +0 -1
  626. package/sqlite-core/query-builders/_query.d.cts +0 -55
  627. package/sqlite-core/query-builders/_query.d.ts +0 -55
  628. package/sqlite-core/query-builders/_query.js +0 -151
  629. package/sqlite-core/query-builders/_query.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/d1/session.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\n\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, 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 SQLiteD1SessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteD1Session<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteD1Session';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: D1Database,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: SQLiteD1SessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery(\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): D1PreparedQuery {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new D1PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: Record<string, unknown>[]) => unknown,\n\t): D1PreparedQuery<PreparedQueryConfig, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new D1PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\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: D1PreparedStatement[] = [];\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\tif (builtQuery.params.length > 0) {\n\t\t\t\tbuiltQueries.push((preparedQuery as D1PreparedQuery).stmt.bind(...builtQuery.params));\n\t\t\t} else {\n\t\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\t\tbuiltQueries.push(\n\t\t\t\t\tthis.client.prepare(builtQuery.sql).bind(...builtQuery.params),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst batchResults = await this.client.batch<any>(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn d1ToRawMapping((result as D1Result).results);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T | Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new D1Transaction('async', this.dialect, this, this.relations, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class D1Transaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Transaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new D1Transaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\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\n/**\n * This function was taken from the D1 implementation: https://github.com/cloudflare/workerd/blob/4aae9f4c7ae30a59a88ca868c4aff88bda85c956/src/cloudflare/internal/d1-api.ts#L287\n * It may cause issues with duplicated column names in join queries, which should be fixed on the D1 side.\n * @param results\n * @returns\n */\nfunction d1ToRawMapping(results: any) {\n\tconst rows: unknown[][] = [];\n\tfor (const row of results) {\n\t\tconst entry = Object.keys(row).map((k) => row[k]);\n\t\trows.push(entry);\n\t}\n\treturn rows;\n}\n\nexport class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: D1Response; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'D1PreparedQuery';\n\n\t/** @internal */\n\tfields?: SelectedFieldsOrdered;\n\n\t/** @internal */\n\tstmt: D1PreparedStatement;\n\n\tconstructor(\n\t\tstmt: D1PreparedStatement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.fields = fields;\n\t\tthis.stmt = stmt;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<D1Response> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).run();\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => this.mapAllResult(results!));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\treturn stmt.bind(...params).all().then(({ results }) =>\n\t\t\t(customResultMapper as (rows: Record<string, unknown>[]) => unknown)(results!)\n\t\t);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = this.isRqbV2Query ? (rows as D1Result).results : d1ToRawMapping((rows as D1Result).results);\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (rows: unknown[][]) => unknown)(rows as unknown[][]);\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => results![0]);\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\tif (!rows[0]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, rows[0], joinsNotNullableMap);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst { results: rows } = await stmt.bind(...params).all();\n\n\t\tif (!rows[0]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['get'];\n\t}\n\n\toverride mapGetResult(result: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\tresult = this.isRqbV2Query ? (result as D1Result).results[0] : d1ToRawMapping((result as D1Result).results)[0];\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (rows: unknown[][]) => unknown)([result as unknown[]]) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(this.fields!, result as unknown[], this.joinsNotNullableMap);\n\t}\n\n\tvalues<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).raw();\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":["builtQuery"]}
1
+ {"version":3,"sources":["../../src/d1/session.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\n\nimport type { 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 SQLiteD1SessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteD1Session<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', D1Result, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteD1Session';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: D1Database,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: SQLiteD1SessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery(\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): D1PreparedQuery {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new D1PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\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: D1PreparedStatement[] = [];\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\tif (builtQuery.params.length > 0) {\n\t\t\t\tbuiltQueries.push((preparedQuery as D1PreparedQuery).stmt.bind(...builtQuery.params));\n\t\t\t} else {\n\t\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\t\tbuiltQueries.push(\n\t\t\t\t\tthis.client.prepare(builtQuery.sql).bind(...builtQuery.params),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst batchResults = await this.client.batch<any>(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn d1ToRawMapping((result as D1Result).results);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: D1Transaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new D1Transaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class D1Transaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', D1Result, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Transaction';\n\n\toverride async transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new D1Transaction('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\n/**\n * This function was taken from the D1 implementation: https://github.com/cloudflare/workerd/blob/4aae9f4c7ae30a59a88ca868c4aff88bda85c956/src/cloudflare/internal/d1-api.ts#L287\n * It may cause issues with duplicated column names in join queries, which should be fixed on the D1 side.\n * @param results\n * @returns\n */\nfunction d1ToRawMapping(results: any) {\n\tconst rows: unknown[][] = [];\n\tfor (const row of results) {\n\t\tconst entry = Object.keys(row).map((k) => row[k]);\n\t\trows.push(entry);\n\t}\n\treturn rows;\n}\n\nexport class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: D1Response; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'D1PreparedQuery';\n\n\t/** @internal */\n\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown;\n\n\t/** @internal */\n\tfields?: SelectedFieldsOrdered;\n\n\t/** @internal */\n\tstmt: D1PreparedStatement;\n\n\tconstructor(\n\t\tstmt: D1PreparedStatement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t\tthis.stmt = stmt;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<D1Response> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).run();\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => this.mapAllResult(results!));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\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 = d1ToRawMapping((rows as D1Result).results);\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => results![0]);\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\tif (!rows[0]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, rows[0], joinsNotNullableMap);\n\t}\n\n\toverride mapGetResult(result: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\tresult = d1ToRawMapping((result as D1Result).results)[0];\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper([result as unknown[]]) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(this.fields!, result as unknown[], this.joinsNotNullableMap);\n\t}\n\n\tvalues<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).raw();\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":["builtQuery"]}
package/d1/session.d.cts CHANGED
@@ -1,8 +1,7 @@
1
- import type * as V1 from "../_relations.cjs";
2
1
  import type { BatchItem } from "../batch.cjs";
3
2
  import { entityKind } from "../entity.cjs";
4
3
  import type { Logger } from "../logger.cjs";
5
- import type { AnyRelations, TablesRelationalConfig } from "../relations.cjs";
4
+ import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
6
5
  import { type Query } from "../sql/sql.cjs";
7
6
  import type { SQLiteAsyncDialect } from "../sqlite-core/dialect.cjs";
8
7
  import { SQLiteTransaction } from "../sqlite-core/index.cjs";
@@ -13,27 +12,25 @@ export interface SQLiteD1SessionOptions {
13
12
  logger?: Logger;
14
13
  }
15
14
  type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
16
- export declare class SQLiteD1Session<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {
15
+ export declare class SQLiteD1Session<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'async', D1Result, TFullSchema, TSchema> {
17
16
  private client;
18
- private relations;
19
17
  private schema;
20
18
  private options;
21
19
  static readonly [entityKind]: string;
22
20
  private logger;
23
- constructor(client: D1Database, dialect: SQLiteAsyncDialect, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options?: SQLiteD1SessionOptions);
21
+ constructor(client: D1Database, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: SQLiteD1SessionOptions);
24
22
  prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): D1PreparedQuery;
25
- prepareRelationalQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: (rows: Record<string, unknown>[]) => unknown): D1PreparedQuery<PreparedQueryConfig, true>;
26
23
  batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
27
24
  extractRawAllValueFromBatchResult(result: unknown): unknown;
28
25
  extractRawGetValueFromBatchResult(result: unknown): unknown;
29
26
  extractRawValuesValueFromBatchResult(result: unknown): unknown;
30
- transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T | Promise<T>, config?: SQLiteTransactionConfig): Promise<T>;
27
+ transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TSchema>) => T | Promise<T>, config?: SQLiteTransactionConfig): Promise<T>;
31
28
  }
32
- export declare class D1Transaction<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteTransaction<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {
29
+ export declare class D1Transaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'async', D1Result, TFullSchema, TSchema> {
33
30
  static readonly [entityKind]: string;
34
- transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>): Promise<T>;
31
+ transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
35
32
  }
36
- export declare class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends SQLitePreparedQuery<{
33
+ export declare class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<{
37
34
  type: 'async';
38
35
  run: D1Response;
39
36
  all: T['all'];
@@ -43,16 +40,12 @@ export declare class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQue
43
40
  }> {
44
41
  private logger;
45
42
  private _isResponseInArrayMode;
46
- private customResultMapper?;
47
- private isRqbV2Query?;
48
43
  static readonly [entityKind]: string;
49
- constructor(stmt: D1PreparedStatement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
44
+ constructor(stmt: D1PreparedStatement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown);
50
45
  run(placeholderValues?: Record<string, unknown>): Promise<D1Response>;
51
46
  all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
52
- private allRqbV2;
53
47
  mapAllResult(rows: unknown, isFromBatch?: boolean): unknown;
54
48
  get(placeholderValues?: Record<string, unknown>): Promise<T['get']>;
55
- private getRqbV2;
56
49
  mapGetResult(result: unknown, isFromBatch?: boolean): unknown;
57
50
  values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]>;
58
51
  }
package/d1/session.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- import type * as V1 from "../_relations.js";
2
1
  import type { BatchItem } from "../batch.js";
3
2
  import { entityKind } from "../entity.js";
4
3
  import type { Logger } from "../logger.js";
5
- import type { AnyRelations, TablesRelationalConfig } from "../relations.js";
4
+ import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
6
5
  import { type Query } from "../sql/sql.js";
7
6
  import type { SQLiteAsyncDialect } from "../sqlite-core/dialect.js";
8
7
  import { SQLiteTransaction } from "../sqlite-core/index.js";
@@ -13,27 +12,25 @@ export interface SQLiteD1SessionOptions {
13
12
  logger?: Logger;
14
13
  }
15
14
  type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
16
- export declare class SQLiteD1Session<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {
15
+ export declare class SQLiteD1Session<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'async', D1Result, TFullSchema, TSchema> {
17
16
  private client;
18
- private relations;
19
17
  private schema;
20
18
  private options;
21
19
  static readonly [entityKind]: string;
22
20
  private logger;
23
- constructor(client: D1Database, dialect: SQLiteAsyncDialect, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options?: SQLiteD1SessionOptions);
21
+ constructor(client: D1Database, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: SQLiteD1SessionOptions);
24
22
  prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): D1PreparedQuery;
25
- prepareRelationalQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: (rows: Record<string, unknown>[]) => unknown): D1PreparedQuery<PreparedQueryConfig, true>;
26
23
  batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
27
24
  extractRawAllValueFromBatchResult(result: unknown): unknown;
28
25
  extractRawGetValueFromBatchResult(result: unknown): unknown;
29
26
  extractRawValuesValueFromBatchResult(result: unknown): unknown;
30
- transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T | Promise<T>, config?: SQLiteTransactionConfig): Promise<T>;
27
+ transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TSchema>) => T | Promise<T>, config?: SQLiteTransactionConfig): Promise<T>;
31
28
  }
32
- export declare class D1Transaction<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteTransaction<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {
29
+ export declare class D1Transaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'async', D1Result, TFullSchema, TSchema> {
33
30
  static readonly [entityKind]: string;
34
- transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>): Promise<T>;
31
+ transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
35
32
  }
36
- export declare class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends SQLitePreparedQuery<{
33
+ export declare class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<{
37
34
  type: 'async';
38
35
  run: D1Response;
39
36
  all: T['all'];
@@ -43,16 +40,12 @@ export declare class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQue
43
40
  }> {
44
41
  private logger;
45
42
  private _isResponseInArrayMode;
46
- private customResultMapper?;
47
- private isRqbV2Query?;
48
43
  static readonly [entityKind]: string;
49
- constructor(stmt: D1PreparedStatement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
44
+ constructor(stmt: D1PreparedStatement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown);
50
45
  run(placeholderValues?: Record<string, unknown>): Promise<D1Response>;
51
46
  all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
52
- private allRqbV2;
53
47
  mapAllResult(rows: unknown, isFromBatch?: boolean): unknown;
54
48
  get(placeholderValues?: Record<string, unknown>): Promise<T['get']>;
55
- private getRqbV2;
56
49
  mapGetResult(result: unknown, isFromBatch?: boolean): unknown;
57
50
  values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]>;
58
51
  }
package/d1/session.js CHANGED
@@ -5,10 +5,9 @@ import { SQLiteTransaction } from "../sqlite-core/index.js";
5
5
  import { SQLitePreparedQuery, SQLiteSession } from "../sqlite-core/session.js";
6
6
  import { mapResultRow } from "../utils.js";
7
7
  class SQLiteD1Session extends SQLiteSession {
8
- constructor(client, dialect, relations, schema, options = {}) {
8
+ constructor(client, dialect, schema, options = {}) {
9
9
  super(dialect);
10
10
  this.client = client;
11
- this.relations = relations;
12
11
  this.schema = schema;
13
12
  this.options = options;
14
13
  this.logger = options.logger ?? new NoopLogger();
@@ -27,19 +26,6 @@ class SQLiteD1Session extends SQLiteSession {
27
26
  customResultMapper
28
27
  );
29
28
  }
30
- prepareRelationalQuery(query, fields, executeMethod, customResultMapper) {
31
- const stmt = this.client.prepare(query.sql);
32
- return new D1PreparedQuery(
33
- stmt,
34
- query,
35
- this.logger,
36
- fields,
37
- executeMethod,
38
- false,
39
- customResultMapper,
40
- true
41
- );
42
- }
43
29
  async batch(queries) {
44
30
  const preparedQueries = [];
45
31
  const builtQueries = [];
@@ -69,7 +55,7 @@ class SQLiteD1Session extends SQLiteSession {
69
55
  return d1ToRawMapping(result.results);
70
56
  }
71
57
  async transaction(transaction, config) {
72
- const tx = new D1Transaction("async", this.dialect, this, this.relations, this.schema);
58
+ const tx = new D1Transaction("async", this.dialect, this, this.schema);
73
59
  await this.run(sql.raw(`begin${config?.behavior ? " " + config.behavior : ""}`));
74
60
  try {
75
61
  const result = await transaction(tx);
@@ -85,14 +71,7 @@ class D1Transaction extends SQLiteTransaction {
85
71
  static [entityKind] = "D1Transaction";
86
72
  async transaction(transaction) {
87
73
  const savepointName = `sp${this.nestedIndex}`;
88
- const tx = new D1Transaction(
89
- "async",
90
- this.dialect,
91
- this.session,
92
- this.relations,
93
- this.schema,
94
- this.nestedIndex + 1
95
- );
74
+ const tx = new D1Transaction("async", this.dialect, this.session, this.schema, this.nestedIndex + 1);
96
75
  await this.session.run(sql.raw(`savepoint ${savepointName}`));
97
76
  try {
98
77
  const result = await transaction(tx);
@@ -113,17 +92,18 @@ function d1ToRawMapping(results) {
113
92
  return rows;
114
93
  }
115
94
  class D1PreparedQuery extends SQLitePreparedQuery {
116
- constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
95
+ constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper) {
117
96
  super("async", executeMethod, query);
118
97
  this.logger = logger;
119
98
  this._isResponseInArrayMode = _isResponseInArrayMode;
120
99
  this.customResultMapper = customResultMapper;
121
- this.isRqbV2Query = isRqbV2Query;
122
100
  this.fields = fields;
123
101
  this.stmt = stmt;
124
102
  }
125
103
  static [entityKind] = "D1PreparedQuery";
126
104
  /** @internal */
105
+ customResultMapper;
106
+ /** @internal */
127
107
  fields;
128
108
  /** @internal */
129
109
  stmt;
@@ -133,8 +113,6 @@ class D1PreparedQuery extends SQLitePreparedQuery {
133
113
  return this.stmt.bind(...params).run();
134
114
  }
135
115
  async all(placeholderValues) {
136
- if (this.isRqbV2Query)
137
- return this.allRqbV2(placeholderValues);
138
116
  const { fields, query, logger, stmt, customResultMapper } = this;
139
117
  if (!fields && !customResultMapper) {
140
118
  const params = fillPlaceholders(query.params, placeholderValues ?? {});
@@ -144,17 +122,9 @@ class D1PreparedQuery extends SQLitePreparedQuery {
144
122
  const rows = await this.values(placeholderValues);
145
123
  return this.mapAllResult(rows);
146
124
  }
147
- async allRqbV2(placeholderValues) {
148
- const { query, logger, stmt, customResultMapper } = this;
149
- const params = fillPlaceholders(query.params, placeholderValues ?? {});
150
- logger.logQuery(query.sql, params);
151
- return stmt.bind(...params).all().then(
152
- ({ results }) => customResultMapper(results)
153
- );
154
- }
155
125
  mapAllResult(rows, isFromBatch) {
156
126
  if (isFromBatch) {
157
- rows = this.isRqbV2Query ? rows.results : d1ToRawMapping(rows.results);
127
+ rows = d1ToRawMapping(rows.results);
158
128
  }
159
129
  if (!this.fields && !this.customResultMapper) {
160
130
  return rows;
@@ -165,8 +135,6 @@ class D1PreparedQuery extends SQLitePreparedQuery {
165
135
  return rows.map((row) => mapResultRow(this.fields, row, this.joinsNotNullableMap));
166
136
  }
167
137
  async get(placeholderValues) {
168
- if (this.isRqbV2Query)
169
- return this.getRqbV2(placeholderValues);
170
138
  const { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;
171
139
  if (!fields && !customResultMapper) {
172
140
  const params = fillPlaceholders(query.params, placeholderValues ?? {});
@@ -182,19 +150,9 @@ class D1PreparedQuery extends SQLitePreparedQuery {
182
150
  }
183
151
  return mapResultRow(fields, rows[0], joinsNotNullableMap);
184
152
  }
185
- async getRqbV2(placeholderValues) {
186
- const { query, logger, stmt, customResultMapper } = this;
187
- const params = fillPlaceholders(query.params, placeholderValues ?? {});
188
- logger.logQuery(query.sql, params);
189
- const { results: rows } = await stmt.bind(...params).all();
190
- if (!rows[0]) {
191
- return void 0;
192
- }
193
- return customResultMapper(rows);
194
- }
195
153
  mapGetResult(result, isFromBatch) {
196
154
  if (isFromBatch) {
197
- result = this.isRqbV2Query ? result.results[0] : d1ToRawMapping(result.results)[0];
155
+ result = d1ToRawMapping(result.results)[0];
198
156
  }
199
157
  if (!this.fields && !this.customResultMapper) {
200
158
  return result;
package/d1/session.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/d1/session.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\n\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, 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 SQLiteD1SessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteD1Session<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteD1Session';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: D1Database,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: SQLiteD1SessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery(\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): D1PreparedQuery {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new D1PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: Record<string, unknown>[]) => unknown,\n\t): D1PreparedQuery<PreparedQueryConfig, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new D1PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\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: D1PreparedStatement[] = [];\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\tif (builtQuery.params.length > 0) {\n\t\t\t\tbuiltQueries.push((preparedQuery as D1PreparedQuery).stmt.bind(...builtQuery.params));\n\t\t\t} else {\n\t\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\t\tbuiltQueries.push(\n\t\t\t\t\tthis.client.prepare(builtQuery.sql).bind(...builtQuery.params),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst batchResults = await this.client.batch<any>(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn d1ToRawMapping((result as D1Result).results);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T | Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new D1Transaction('async', this.dialect, this, this.relations, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class D1Transaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', D1Result, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Transaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: D1Transaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new D1Transaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\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\n/**\n * This function was taken from the D1 implementation: https://github.com/cloudflare/workerd/blob/4aae9f4c7ae30a59a88ca868c4aff88bda85c956/src/cloudflare/internal/d1-api.ts#L287\n * It may cause issues with duplicated column names in join queries, which should be fixed on the D1 side.\n * @param results\n * @returns\n */\nfunction d1ToRawMapping(results: any) {\n\tconst rows: unknown[][] = [];\n\tfor (const row of results) {\n\t\tconst entry = Object.keys(row).map((k) => row[k]);\n\t\trows.push(entry);\n\t}\n\treturn rows;\n}\n\nexport class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: D1Response; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'D1PreparedQuery';\n\n\t/** @internal */\n\tfields?: SelectedFieldsOrdered;\n\n\t/** @internal */\n\tstmt: D1PreparedStatement;\n\n\tconstructor(\n\t\tstmt: D1PreparedStatement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.fields = fields;\n\t\tthis.stmt = stmt;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<D1Response> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).run();\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => this.mapAllResult(results!));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\treturn stmt.bind(...params).all().then(({ results }) =>\n\t\t\t(customResultMapper as (rows: Record<string, unknown>[]) => unknown)(results!)\n\t\t);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = this.isRqbV2Query ? (rows as D1Result).results : d1ToRawMapping((rows as D1Result).results);\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (rows: unknown[][]) => unknown)(rows as unknown[][]);\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => results![0]);\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\tif (!rows[0]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, rows[0], joinsNotNullableMap);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst { results: rows } = await stmt.bind(...params).all();\n\n\t\tif (!rows[0]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['get'];\n\t}\n\n\toverride mapGetResult(result: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\tresult = this.isRqbV2Query ? (result as D1Result).results[0] : d1ToRawMapping((result as D1Result).results)[0];\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (rows: unknown[][]) => unknown)([result as unknown[]]) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(this.fields!, result as unknown[], this.joinsNotNullableMap);\n\t}\n\n\tvalues<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).raw();\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":["builtQuery"]}
1
+ {"version":3,"sources":["../../src/d1/session.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\n\nimport type { 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 SQLiteD1SessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteD1Session<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', D1Result, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteD1Session';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: D1Database,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: SQLiteD1SessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery(\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): D1PreparedQuery {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new D1PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\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: D1PreparedStatement[] = [];\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\tif (builtQuery.params.length > 0) {\n\t\t\t\tbuiltQueries.push((preparedQuery as D1PreparedQuery).stmt.bind(...builtQuery.params));\n\t\t\t} else {\n\t\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\t\tbuiltQueries.push(\n\t\t\t\t\tthis.client.prepare(builtQuery.sql).bind(...builtQuery.params),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst batchResults = await this.client.batch<any>(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn d1ToRawMapping((result as D1Result).results);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: D1Transaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new D1Transaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class D1Transaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', D1Result, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Transaction';\n\n\toverride async transaction<T>(transaction: (tx: D1Transaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new D1Transaction('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\n/**\n * This function was taken from the D1 implementation: https://github.com/cloudflare/workerd/blob/4aae9f4c7ae30a59a88ca868c4aff88bda85c956/src/cloudflare/internal/d1-api.ts#L287\n * It may cause issues with duplicated column names in join queries, which should be fixed on the D1 side.\n * @param results\n * @returns\n */\nfunction d1ToRawMapping(results: any) {\n\tconst rows: unknown[][] = [];\n\tfor (const row of results) {\n\t\tconst entry = Object.keys(row).map((k) => row[k]);\n\t\trows.push(entry);\n\t}\n\treturn rows;\n}\n\nexport class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: D1Response; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'D1PreparedQuery';\n\n\t/** @internal */\n\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown;\n\n\t/** @internal */\n\tfields?: SelectedFieldsOrdered;\n\n\t/** @internal */\n\tstmt: D1PreparedStatement;\n\n\tconstructor(\n\t\tstmt: D1PreparedStatement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t\tthis.stmt = stmt;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<D1Response> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).run();\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => this.mapAllResult(results!));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\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 = d1ToRawMapping((rows as D1Result).results);\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, 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\treturn stmt.bind(...params).all().then(({ results }) => results![0]);\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\tif (!rows[0]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, rows[0], joinsNotNullableMap);\n\t}\n\n\toverride mapGetResult(result: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\tresult = d1ToRawMapping((result as D1Result).results)[0];\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper([result as unknown[]]) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(this.fields!, result as unknown[], this.joinsNotNullableMap);\n\t}\n\n\tvalues<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).raw();\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":["builtQuery"]}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var driver_exports = {};
30
20
  __export(driver_exports, {
@@ -32,9 +22,9 @@ __export(driver_exports, {
32
22
  drizzle: () => drizzle
33
23
  });
34
24
  module.exports = __toCommonJS(driver_exports);
35
- var V1 = __toESM(require("../_relations.cjs"), 1);
36
25
  var import_entity = require("../entity.cjs");
37
26
  var import_logger = require("../logger.cjs");
27
+ var import_relations = require("../relations.cjs");
38
28
  var import_db = require("../sqlite-core/db.cjs");
39
29
  var import_dialect = require("../sqlite-core/dialect.cjs");
40
30
  var import_session = require("./session.cjs");
@@ -51,9 +41,9 @@ function drizzle(client, config = {}) {
51
41
  }
52
42
  let schema;
53
43
  if (config.schema) {
54
- const tablesConfig = V1.extractTablesRelationalConfig(
44
+ const tablesConfig = (0, import_relations.extractTablesRelationalConfig)(
55
45
  config.schema,
56
- V1.createTableRelationsHelpers
46
+ import_relations.createTableRelationsHelpers
57
47
  );
58
48
  schema = {
59
49
  fullSchema: config.schema,
@@ -61,9 +51,8 @@ function drizzle(client, config = {}) {
61
51
  tableNamesMap: tablesConfig.tableNamesMap
62
52
  };
63
53
  }
64
- const relations = config.relations;
65
- const session = new import_session.SQLiteDOSession(client, dialect, relations, schema, { logger });
66
- const db = new DrizzleSqliteDODatabase("sync", dialect, session, relations, schema);
54
+ const session = new import_session.SQLiteDOSession(client, dialect, schema, { logger });
55
+ const db = new DrizzleSqliteDODatabase("sync", dialect, session, schema);
67
56
  db.$client = client;
68
57
  return db;
69
58
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/durable-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations, ExtractTablesWithRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { SQLiteDOSession } from './session.ts';\n\nexport class DrizzleSqliteDODatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'DrizzleSqliteDODatabase';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteDOSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tExtractTablesWithRelations<TRelations>,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends DurableObjectStorage = DurableObjectStorage,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): DrizzleSqliteDODatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\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 relations = config.relations;\n\tconst session = new SQLiteDOSession(client as DurableObjectStorage, dialect, relations, schema, { logger });\n\tconst db = new DrizzleSqliteDODatabase('sync', dialect, session, relations, schema) as DrizzleSqliteDODatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,SAAoB;AACpB,oBAA2B;AAC3B,oBAA8B;AAE9B,gBAAmC;AACnC,qBAAkC;AAElC,qBAAgC;AAEzB,MAAM,gCAGH,6BAAmG;AAAA,EAC5G,QAA0B,wBAAU,IAAY;AASjD;AAEO,SAAS,QAKf,QACA,SAA6C,CAAC,GAG7C;AACD,QAAM,UAAU,IAAI,iCAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO;AACzB,QAAM,UAAU,IAAI,+BAAgB,QAAgC,SAAS,WAAW,QAAQ,EAAE,OAAO,CAAC;AAC1G,QAAM,KAAK,IAAI,wBAAwB,QAAQ,SAAS,SAAS,WAAW,MAAM;AAIlF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/durable-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\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 { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { SQLiteDOSession } from './session.ts';\n\nexport class DrizzleSqliteDODatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema> {\n\tstatic override readonly [entityKind]: string = 'DrizzleSqliteDODatabase';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteDOSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends DurableObjectStorage = DurableObjectStorage,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): DrizzleSqliteDODatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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 SQLiteDOSession(client as DurableObjectStorage, dialect, schema, { logger });\n\tconst db = new DrizzleSqliteDODatabase('sync', dialect, session, schema) as DrizzleSqliteDODatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA2B;AAC3B,oBAA8B;AAC9B,uBAMO;AACP,gBAAmC;AACnC,qBAAkC;AAElC,qBAAgC;AAEzB,MAAM,gCAEH,6BAAuF;AAAA,EAChG,QAA0B,wBAAU,IAAY;AAIjD;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,iCAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,+BAAgB,QAAgC,SAAS,QAAQ,EAAE,OAAO,CAAC;AAC/F,QAAM,KAAK,IAAI,wBAAwB,QAAQ,SAAS,SAAS,MAAM;AACvE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
@@ -1,10 +1,9 @@
1
1
  import { entityKind } from "../entity.cjs";
2
- import type { AnyRelations, EmptyRelations } from "../relations.cjs";
3
2
  import { BaseSQLiteDatabase } from "../sqlite-core/db.cjs";
4
3
  import type { DrizzleConfig } from "../utils.cjs";
5
- export declare class DrizzleSqliteDODatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema, TRelations> {
4
+ export declare class DrizzleSqliteDODatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema> {
6
5
  static readonly [entityKind]: string;
7
6
  }
8
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends DurableObjectStorage = DurableObjectStorage>(client: TClient, config?: DrizzleConfig<TSchema, TRelations>): DrizzleSqliteDODatabase<TSchema, TRelations> & {
7
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends DurableObjectStorage = DurableObjectStorage>(client: TClient, config?: DrizzleConfig<TSchema>): DrizzleSqliteDODatabase<TSchema> & {
9
8
  $client: TClient;
10
9
  };
@@ -1,10 +1,9 @@
1
1
  import { entityKind } from "../entity.js";
2
- import type { AnyRelations, EmptyRelations } from "../relations.js";
3
2
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
4
3
  import type { DrizzleConfig } from "../utils.js";
5
- export declare class DrizzleSqliteDODatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema, TRelations> {
4
+ export declare class DrizzleSqliteDODatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema> {
6
5
  static readonly [entityKind]: string;
7
6
  }
8
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends DurableObjectStorage = DurableObjectStorage>(client: TClient, config?: DrizzleConfig<TSchema, TRelations>): DrizzleSqliteDODatabase<TSchema, TRelations> & {
7
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends DurableObjectStorage = DurableObjectStorage>(client: TClient, config?: DrizzleConfig<TSchema>): DrizzleSqliteDODatabase<TSchema> & {
9
8
  $client: TClient;
10
9
  };
@@ -1,6 +1,9 @@
1
- import * as V1 from "../_relations.js";
2
1
  import { entityKind } from "../entity.js";
3
2
  import { DefaultLogger } from "../logger.js";
3
+ import {
4
+ createTableRelationsHelpers,
5
+ extractTablesRelationalConfig
6
+ } from "../relations.js";
4
7
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
5
8
  import { SQLiteSyncDialect } from "../sqlite-core/dialect.js";
6
9
  import { SQLiteDOSession } from "./session.js";
@@ -17,9 +20,9 @@ function drizzle(client, config = {}) {
17
20
  }
18
21
  let schema;
19
22
  if (config.schema) {
20
- const tablesConfig = V1.extractTablesRelationalConfig(
23
+ const tablesConfig = extractTablesRelationalConfig(
21
24
  config.schema,
22
- V1.createTableRelationsHelpers
25
+ createTableRelationsHelpers
23
26
  );
24
27
  schema = {
25
28
  fullSchema: config.schema,
@@ -27,9 +30,8 @@ function drizzle(client, config = {}) {
27
30
  tableNamesMap: tablesConfig.tableNamesMap
28
31
  };
29
32
  }
30
- const relations = config.relations;
31
- const session = new SQLiteDOSession(client, dialect, relations, schema, { logger });
32
- const db = new DrizzleSqliteDODatabase("sync", dialect, session, relations, schema);
33
+ const session = new SQLiteDOSession(client, dialect, schema, { logger });
34
+ const db = new DrizzleSqliteDODatabase("sync", dialect, session, schema);
33
35
  db.$client = client;
34
36
  return db;
35
37
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/durable-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations, ExtractTablesWithRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { SQLiteDOSession } from './session.ts';\n\nexport class DrizzleSqliteDODatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'DrizzleSqliteDODatabase';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteDOSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tExtractTablesWithRelations<TRelations>,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends DurableObjectStorage = DurableObjectStorage,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): DrizzleSqliteDODatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\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 relations = config.relations;\n\tconst session = new SQLiteDOSession(client as DurableObjectStorage, dialect, relations, schema, { logger });\n\tconst db = new DrizzleSqliteDODatabase('sync', dialect, session, relations, schema) as DrizzleSqliteDODatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AACA,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAE9B,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAElC,SAAS,uBAAuB;AAEzB,MAAM,gCAGH,mBAAmG;AAAA,EAC5G,QAA0B,UAAU,IAAY;AASjD;AAEO,SAAS,QAKf,QACA,SAA6C,CAAC,GAG7C;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO;AACzB,QAAM,UAAU,IAAI,gBAAgB,QAAgC,SAAS,WAAW,QAAQ,EAAE,OAAO,CAAC;AAC1G,QAAM,KAAK,IAAI,wBAAwB,QAAQ,SAAS,SAAS,WAAW,MAAM;AAIlF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/durable-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\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 { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { SQLiteDOSession } from './session.ts';\n\nexport class DrizzleSqliteDODatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'sync', SqlStorageCursor<Record<string, SqlStorageValue>>, TSchema> {\n\tstatic override readonly [entityKind]: string = 'DrizzleSqliteDODatabase';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteDOSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends DurableObjectStorage = DurableObjectStorage,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): DrizzleSqliteDODatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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 SQLiteDOSession(client as DurableObjectStorage, dialect, schema, { logger });\n\tconst db = new DrizzleSqliteDODatabase('sync', dialect, session, schema) as DrizzleSqliteDODatabase<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,OAIM;AACP,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAElC,SAAS,uBAAuB;AAEzB,MAAM,gCAEH,mBAAuF;AAAA,EAChG,QAA0B,UAAU,IAAY;AAIjD;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,gBAAgB,QAAgC,SAAS,QAAQ,EAAE,OAAO,CAAC;AAC/F,QAAM,KAAK,IAAI,wBAAwB,QAAQ,SAAS,SAAS,MAAM;AACvE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/durable-sqlite/migrator.ts"],"sourcesContent":["import type { MigrationMeta } from '~/migrator.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { sql } from '~/sql/index.ts';\nimport type { DrizzleSqliteDODatabase } from './driver.ts';\n\ninterface MigrationConfig {\n\tjournal: {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\tmigrations: Record<string, string>;\n}\n\nfunction readMigrationFiles({ journal, migrations }: MigrationConfig): MigrationMeta[] {\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst query = migrations[`m${journalEntry.idx.toString().padStart(4, '0')}`];\n\n\t\tif (!query) {\n\t\t\tthrow new Error(`Missing migration: ${journalEntry.tag}`);\n\t\t}\n\n\t\ttry {\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: '',\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`Failed to parse migration: ${journalEntry.tag}`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n\nexport async function migrate<\n\tTSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n>(\n\tdb: DrizzleSqliteDODatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n): Promise<void> {\n\tconst migrations = readMigrationFiles(config);\n\n\tdb.transaction((tx) => {\n\t\ttry {\n\t\t\tconst migrationsTable = '__drizzle_migrations';\n\n\t\t\tconst migrationTableCreate = sql`\n\t\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\t\thash text NOT NULL,\n\t\t\t\t\tcreated_at numeric\n\t\t\t\t)\n\t\t\t`;\n\t\t\tdb.run(migrationTableCreate);\n\n\t\t\tconst dbMigrations = db.values<[number, string, string]>(\n\t\t\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t\t\t);\n\n\t\t\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\t\t\tfor (const migration of migrations) {\n\t\t\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\t\tdb.run(sql.raw(stmt));\n\t\t\t\t\t}\n\t\t\t\t\tdb.run(\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error: any) {\n\t\t\ttx.rollback();\n\t\t\tthrow error;\n\t\t}\n\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,iBAAoB;AAUpB,SAAS,mBAAmB,EAAE,SAAS,WAAW,GAAqC;AACtF,QAAM,mBAAoC,CAAC;AAE3C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,QAAQ,WAAW,IAAI,aAAa,IAAI,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE;AAE3E,QAAI,CAAC,OAAO;AACX,YAAM,IAAI,MAAM,sBAAsB,aAAa,GAAG,EAAE;AAAA,IACzD;AAEA,QAAI;AACH,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;AAAA,MACP,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,8BAA8B,aAAa,GAAG,EAAE;AAAA,IACjE;AAAA,EACD;AAEA,SAAO;AACR;AAEA,eAAsB,QAIrB,IACA,QACgB;AAChB,QAAM,aAAa,mBAAmB,MAAM;AAE5C,KAAG,YAAY,CAAC,OAAO;AACtB,QAAI;AACH,YAAM,kBAAkB;AAExB,YAAM,uBAAuB;AAAA,iCACC,eAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,SAAG,IAAI,oBAAoB;AAE3B,YAAM,eAAe,GAAG;AAAA,QACvB,kDAAuC,eAAI,WAAW,eAAe,CAAC;AAAA,MACvE;AAEA,YAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,iBAAW,aAAa,YAAY;AACnC,YAAI,CAAC,mBAAmB,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAAc;AAC7E,qBAAW,QAAQ,UAAU,KAAK;AACjC,eAAG,IAAI,eAAI,IAAI,IAAI,CAAC;AAAA,UACrB;AACA,aAAG;AAAA,YACF,6BACC,eAAI,WAAW,eAAe,CAC/B,kCAAkC,UAAU,IAAI,KAAK,UAAU,YAAY;AAAA,UAC5E;AAAA,QACD;AAAA,MACD;AAAA,IACD,SAAS,OAAY;AACpB,SAAG,SAAS;AACZ,YAAM;AAAA,IACP;AAAA,EACD,CAAC;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/durable-sqlite/migrator.ts"],"sourcesContent":["import type { MigrationMeta } from '~/migrator.ts';\nimport { sql } from '~/sql/index.ts';\nimport type { DrizzleSqliteDODatabase } from './driver.ts';\n\ninterface MigrationConfig {\n\tjournal: {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\tmigrations: Record<string, string>;\n}\n\nfunction readMigrationFiles({ journal, migrations }: MigrationConfig): MigrationMeta[] {\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst query = migrations[`m${journalEntry.idx.toString().padStart(4, '0')}`];\n\n\t\tif (!query) {\n\t\t\tthrow new Error(`Missing migration: ${journalEntry.tag}`);\n\t\t}\n\n\t\ttry {\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: '',\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`Failed to parse migration: ${journalEntry.tag}`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n\nexport async function migrate<\n\tTSchema extends Record<string, unknown>,\n>(\n\tdb: DrizzleSqliteDODatabase<TSchema>,\n\tconfig: MigrationConfig,\n): Promise<void> {\n\tconst migrations = readMigrationFiles(config);\n\n\tdb.transaction((tx) => {\n\t\ttry {\n\t\t\tconst migrationsTable = '__drizzle_migrations';\n\n\t\t\tconst migrationTableCreate = sql`\n\t\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\t\thash text NOT NULL,\n\t\t\t\t\tcreated_at numeric\n\t\t\t\t)\n\t\t\t`;\n\t\t\tdb.run(migrationTableCreate);\n\n\t\t\tconst dbMigrations = db.values<[number, string, string]>(\n\t\t\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t\t\t);\n\n\t\t\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\t\t\tfor (const migration of migrations) {\n\t\t\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\t\tdb.run(sql.raw(stmt));\n\t\t\t\t\t}\n\t\t\t\t\tdb.run(\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error: any) {\n\t\t\ttx.rollback();\n\t\t\tthrow error;\n\t\t}\n\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAAoB;AAUpB,SAAS,mBAAmB,EAAE,SAAS,WAAW,GAAqC;AACtF,QAAM,mBAAoC,CAAC;AAE3C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,QAAQ,WAAW,IAAI,aAAa,IAAI,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE;AAE3E,QAAI,CAAC,OAAO;AACX,YAAM,IAAI,MAAM,sBAAsB,aAAa,GAAG,EAAE;AAAA,IACzD;AAEA,QAAI;AACH,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;AAAA,MACP,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,8BAA8B,aAAa,GAAG,EAAE;AAAA,IACjE;AAAA,EACD;AAEA,SAAO;AACR;AAEA,eAAsB,QAGrB,IACA,QACgB;AAChB,QAAM,aAAa,mBAAmB,MAAM;AAE5C,KAAG,YAAY,CAAC,OAAO;AACtB,QAAI;AACH,YAAM,kBAAkB;AAExB,YAAM,uBAAuB;AAAA,iCACC,eAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,SAAG,IAAI,oBAAoB;AAE3B,YAAM,eAAe,GAAG;AAAA,QACvB,kDAAuC,eAAI,WAAW,eAAe,CAAC;AAAA,MACvE;AAEA,YAAM,kBAAkB,aAAa,CAAC,KAAK;AAE3C,iBAAW,aAAa,YAAY;AACnC,YAAI,CAAC,mBAAmB,OAAO,gBAAgB,CAAC,CAAC,IAAK,UAAU,cAAc;AAC7E,qBAAW,QAAQ,UAAU,KAAK;AACjC,eAAG,IAAI,eAAI,IAAI,IAAI,CAAC;AAAA,UACrB;AACA,aAAG;AAAA,YACF,6BACC,eAAI,WAAW,eAAe,CAC/B,kCAAkC,UAAU,IAAI,KAAK,UAAU,YAAY;AAAA,UAC5E;AAAA,QACD;AAAA,MACD;AAAA,IACD,SAAS,OAAY;AACpB,SAAG,SAAS;AACZ,YAAM;AAAA,IACP;AAAA,EACD,CAAC;AACF;","names":[]}
@@ -1,4 +1,3 @@
1
- import type { AnyRelations } from "../relations.cjs";
2
1
  import type { DrizzleSqliteDODatabase } from "./driver.cjs";
3
2
  interface MigrationConfig {
4
3
  journal: {
@@ -11,5 +10,5 @@ interface MigrationConfig {
11
10
  };
12
11
  migrations: Record<string, string>;
13
12
  }
14
- export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: DrizzleSqliteDODatabase<TSchema, TRelations>, config: MigrationConfig): Promise<void>;
13
+ export declare function migrate<TSchema extends Record<string, unknown>>(db: DrizzleSqliteDODatabase<TSchema>, config: MigrationConfig): Promise<void>;
15
14
  export {};