drizzle-orm 0.33.0 → 0.34.0-06c725b

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 (864) hide show
  1. package/aws-data-api/pg/driver.cjs +12 -9
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +5 -3
  4. package/aws-data-api/pg/driver.d.ts +5 -3
  5. package/aws-data-api/pg/driver.js +6 -3
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/migrator.cjs.map +1 -1
  8. package/aws-data-api/pg/migrator.d.cts +1 -1
  9. package/aws-data-api/pg/migrator.d.ts +1 -1
  10. package/aws-data-api/pg/migrator.js.map +1 -1
  11. package/better-sqlite3/driver.cjs +10 -2
  12. package/better-sqlite3/driver.cjs.map +1 -1
  13. package/better-sqlite3/driver.d.cts +7 -2
  14. package/better-sqlite3/driver.d.ts +7 -2
  15. package/better-sqlite3/driver.js +9 -2
  16. package/better-sqlite3/driver.js.map +1 -1
  17. package/better-sqlite3/migrator.cjs.map +1 -1
  18. package/better-sqlite3/migrator.d.cts +1 -1
  19. package/better-sqlite3/migrator.d.ts +1 -1
  20. package/better-sqlite3/migrator.js.map +1 -1
  21. package/bun-sqlite/driver.cjs +10 -2
  22. package/bun-sqlite/driver.cjs.map +1 -1
  23. package/bun-sqlite/driver.d.cts +7 -2
  24. package/bun-sqlite/driver.d.ts +7 -2
  25. package/bun-sqlite/driver.js +9 -2
  26. package/bun-sqlite/driver.js.map +1 -1
  27. package/bun-sqlite/migrator.cjs.map +1 -1
  28. package/bun-sqlite/migrator.d.cts +1 -1
  29. package/bun-sqlite/migrator.d.ts +1 -1
  30. package/bun-sqlite/migrator.js.map +1 -1
  31. package/casing.cjs +85 -0
  32. package/casing.cjs.map +1 -0
  33. package/casing.d.cts +14 -0
  34. package/casing.d.ts +14 -0
  35. package/casing.js +59 -0
  36. package/casing.js.map +1 -0
  37. package/column-builder.cjs +7 -0
  38. package/column-builder.cjs.map +1 -1
  39. package/column-builder.d.cts +7 -2
  40. package/column-builder.d.ts +7 -2
  41. package/column-builder.js +7 -0
  42. package/column-builder.js.map +1 -1
  43. package/column.cjs +3 -0
  44. package/column.cjs.map +1 -1
  45. package/column.js +3 -0
  46. package/column.js.map +1 -1
  47. package/connect.cjs +25 -0
  48. package/connect.cjs.map +1 -0
  49. package/connect.d.cts +2 -0
  50. package/connect.d.ts +2 -0
  51. package/connect.js +3 -0
  52. package/connect.js.map +1 -0
  53. package/d1/driver.cjs +4 -2
  54. package/d1/driver.cjs.map +1 -1
  55. package/d1/driver.d.cts +6 -2
  56. package/d1/driver.d.ts +6 -2
  57. package/d1/driver.js +4 -2
  58. package/d1/driver.js.map +1 -1
  59. package/d1/migrator.cjs +1 -1
  60. package/d1/migrator.cjs.map +1 -1
  61. package/d1/migrator.d.cts +1 -1
  62. package/d1/migrator.d.ts +1 -1
  63. package/d1/migrator.js +1 -1
  64. package/d1/migrator.js.map +1 -1
  65. package/expo-sqlite/driver.cjs +10 -2
  66. package/expo-sqlite/driver.cjs.map +1 -1
  67. package/expo-sqlite/driver.d.cts +7 -2
  68. package/expo-sqlite/driver.d.ts +7 -2
  69. package/expo-sqlite/driver.js +9 -2
  70. package/expo-sqlite/driver.js.map +1 -1
  71. package/expo-sqlite/query.cjs +8 -6
  72. package/expo-sqlite/query.cjs.map +1 -1
  73. package/expo-sqlite/query.js +3 -1
  74. package/expo-sqlite/query.js.map +1 -1
  75. package/libsql/driver.cjs +4 -2
  76. package/libsql/driver.cjs.map +1 -1
  77. package/libsql/driver.d.cts +3 -1
  78. package/libsql/driver.d.ts +3 -1
  79. package/libsql/driver.js +4 -2
  80. package/libsql/driver.js.map +1 -1
  81. package/libsql/migrator.cjs +2 -2
  82. package/libsql/migrator.cjs.map +1 -1
  83. package/libsql/migrator.js +2 -2
  84. package/libsql/migrator.js.map +1 -1
  85. package/libsql/session.cjs +12 -0
  86. package/libsql/session.cjs.map +1 -1
  87. package/libsql/session.d.cts +1 -0
  88. package/libsql/session.d.ts +1 -0
  89. package/libsql/session.js +12 -0
  90. package/libsql/session.js.map +1 -1
  91. package/migrator.cjs +1 -12
  92. package/migrator.cjs.map +1 -1
  93. package/migrator.d.cts +1 -1
  94. package/migrator.d.ts +1 -1
  95. package/migrator.js +1 -12
  96. package/migrator.js.map +1 -1
  97. package/monodriver.cjs +283 -0
  98. package/monodriver.cjs.map +1 -0
  99. package/monodriver.d.cts +194 -0
  100. package/monodriver.d.ts +194 -0
  101. package/monodriver.js +249 -0
  102. package/monodriver.js.map +1 -0
  103. package/monomigrator.cjs +99 -0
  104. package/monomigrator.cjs.map +1 -0
  105. package/monomigrator.d.cts +16 -0
  106. package/monomigrator.d.ts +16 -0
  107. package/monomigrator.js +65 -0
  108. package/monomigrator.js.map +1 -0
  109. package/mysql-core/columns/all.cjs +80 -0
  110. package/mysql-core/columns/all.cjs.map +1 -0
  111. package/mysql-core/columns/all.d.cts +51 -0
  112. package/mysql-core/columns/all.d.ts +51 -0
  113. package/mysql-core/columns/all.js +56 -0
  114. package/mysql-core/columns/all.js.map +1 -0
  115. package/mysql-core/columns/bigint.cjs +3 -1
  116. package/mysql-core/columns/bigint.cjs.map +1 -1
  117. package/mysql-core/columns/bigint.d.cts +2 -2
  118. package/mysql-core/columns/bigint.d.ts +2 -2
  119. package/mysql-core/columns/bigint.js +3 -1
  120. package/mysql-core/columns/bigint.js.map +1 -1
  121. package/mysql-core/columns/binary.cjs +3 -1
  122. package/mysql-core/columns/binary.cjs.map +1 -1
  123. package/mysql-core/columns/binary.d.cts +2 -0
  124. package/mysql-core/columns/binary.d.ts +2 -0
  125. package/mysql-core/columns/binary.js +3 -1
  126. package/mysql-core/columns/binary.js.map +1 -1
  127. package/mysql-core/columns/boolean.cjs +1 -1
  128. package/mysql-core/columns/boolean.cjs.map +1 -1
  129. package/mysql-core/columns/boolean.d.cts +1 -0
  130. package/mysql-core/columns/boolean.d.ts +1 -0
  131. package/mysql-core/columns/boolean.js +1 -1
  132. package/mysql-core/columns/boolean.js.map +1 -1
  133. package/mysql-core/columns/char.cjs +3 -1
  134. package/mysql-core/columns/char.cjs.map +1 -1
  135. package/mysql-core/columns/char.d.cts +4 -2
  136. package/mysql-core/columns/char.d.ts +4 -2
  137. package/mysql-core/columns/char.js +3 -1
  138. package/mysql-core/columns/char.js.map +1 -1
  139. package/mysql-core/columns/custom.cjs +4 -2
  140. package/mysql-core/columns/custom.cjs.map +1 -1
  141. package/mysql-core/columns/custom.d.cts +10 -3
  142. package/mysql-core/columns/custom.d.ts +10 -3
  143. package/mysql-core/columns/custom.js +4 -2
  144. package/mysql-core/columns/custom.js.map +1 -1
  145. package/mysql-core/columns/date.cjs +4 -2
  146. package/mysql-core/columns/date.cjs.map +1 -1
  147. package/mysql-core/columns/date.d.cts +3 -1
  148. package/mysql-core/columns/date.d.ts +3 -1
  149. package/mysql-core/columns/date.js +4 -2
  150. package/mysql-core/columns/date.js.map +1 -1
  151. package/mysql-core/columns/datetime.cjs +4 -2
  152. package/mysql-core/columns/datetime.cjs.map +1 -1
  153. package/mysql-core/columns/datetime.d.cts +3 -1
  154. package/mysql-core/columns/datetime.d.ts +3 -1
  155. package/mysql-core/columns/datetime.js +4 -2
  156. package/mysql-core/columns/datetime.js.map +1 -1
  157. package/mysql-core/columns/decimal.cjs +3 -1
  158. package/mysql-core/columns/decimal.cjs.map +1 -1
  159. package/mysql-core/columns/decimal.d.cts +2 -0
  160. package/mysql-core/columns/decimal.d.ts +2 -0
  161. package/mysql-core/columns/decimal.js +3 -1
  162. package/mysql-core/columns/decimal.js.map +1 -1
  163. package/mysql-core/columns/double.cjs +3 -1
  164. package/mysql-core/columns/double.cjs.map +1 -1
  165. package/mysql-core/columns/double.d.cts +2 -0
  166. package/mysql-core/columns/double.d.ts +2 -0
  167. package/mysql-core/columns/double.js +3 -1
  168. package/mysql-core/columns/double.js.map +1 -1
  169. package/mysql-core/columns/enum.cjs +3 -1
  170. package/mysql-core/columns/enum.cjs.map +1 -1
  171. package/mysql-core/columns/enum.d.cts +2 -1
  172. package/mysql-core/columns/enum.d.ts +2 -1
  173. package/mysql-core/columns/enum.js +3 -1
  174. package/mysql-core/columns/enum.js.map +1 -1
  175. package/mysql-core/columns/float.cjs +1 -1
  176. package/mysql-core/columns/float.cjs.map +1 -1
  177. package/mysql-core/columns/float.d.cts +1 -0
  178. package/mysql-core/columns/float.d.ts +1 -0
  179. package/mysql-core/columns/float.js +1 -1
  180. package/mysql-core/columns/float.js.map +1 -1
  181. package/mysql-core/columns/int.cjs +3 -1
  182. package/mysql-core/columns/int.cjs.map +1 -1
  183. package/mysql-core/columns/int.d.cts +2 -0
  184. package/mysql-core/columns/int.d.ts +2 -0
  185. package/mysql-core/columns/int.js +3 -1
  186. package/mysql-core/columns/int.js.map +1 -1
  187. package/mysql-core/columns/json.cjs +1 -1
  188. package/mysql-core/columns/json.cjs.map +1 -1
  189. package/mysql-core/columns/json.d.cts +1 -0
  190. package/mysql-core/columns/json.d.ts +1 -0
  191. package/mysql-core/columns/json.js +1 -1
  192. package/mysql-core/columns/json.js.map +1 -1
  193. package/mysql-core/columns/mediumint.cjs +3 -1
  194. package/mysql-core/columns/mediumint.cjs.map +1 -1
  195. package/mysql-core/columns/mediumint.d.cts +2 -0
  196. package/mysql-core/columns/mediumint.d.ts +2 -0
  197. package/mysql-core/columns/mediumint.js +3 -1
  198. package/mysql-core/columns/mediumint.js.map +1 -1
  199. package/mysql-core/columns/real.cjs +3 -1
  200. package/mysql-core/columns/real.cjs.map +1 -1
  201. package/mysql-core/columns/real.d.cts +2 -0
  202. package/mysql-core/columns/real.d.ts +2 -0
  203. package/mysql-core/columns/real.js +3 -1
  204. package/mysql-core/columns/real.js.map +1 -1
  205. package/mysql-core/columns/serial.cjs +1 -1
  206. package/mysql-core/columns/serial.cjs.map +1 -1
  207. package/mysql-core/columns/serial.d.cts +1 -0
  208. package/mysql-core/columns/serial.d.ts +1 -0
  209. package/mysql-core/columns/serial.js +1 -1
  210. package/mysql-core/columns/serial.js.map +1 -1
  211. package/mysql-core/columns/smallint.cjs +3 -1
  212. package/mysql-core/columns/smallint.cjs.map +1 -1
  213. package/mysql-core/columns/smallint.d.cts +2 -0
  214. package/mysql-core/columns/smallint.d.ts +2 -0
  215. package/mysql-core/columns/smallint.js +3 -1
  216. package/mysql-core/columns/smallint.js.map +1 -1
  217. package/mysql-core/columns/text.cjs +9 -4
  218. package/mysql-core/columns/text.cjs.map +1 -1
  219. package/mysql-core/columns/text.d.cts +10 -2
  220. package/mysql-core/columns/text.d.ts +10 -2
  221. package/mysql-core/columns/text.js +9 -4
  222. package/mysql-core/columns/text.js.map +1 -1
  223. package/mysql-core/columns/time.cjs +3 -1
  224. package/mysql-core/columns/time.cjs.map +1 -1
  225. package/mysql-core/columns/time.d.cts +2 -0
  226. package/mysql-core/columns/time.d.ts +2 -0
  227. package/mysql-core/columns/time.js +3 -1
  228. package/mysql-core/columns/time.js.map +1 -1
  229. package/mysql-core/columns/timestamp.cjs +4 -2
  230. package/mysql-core/columns/timestamp.cjs.map +1 -1
  231. package/mysql-core/columns/timestamp.d.cts +3 -1
  232. package/mysql-core/columns/timestamp.d.ts +3 -1
  233. package/mysql-core/columns/timestamp.js +4 -2
  234. package/mysql-core/columns/timestamp.js.map +1 -1
  235. package/mysql-core/columns/tinyint.cjs +3 -1
  236. package/mysql-core/columns/tinyint.cjs.map +1 -1
  237. package/mysql-core/columns/tinyint.d.cts +2 -0
  238. package/mysql-core/columns/tinyint.d.ts +2 -0
  239. package/mysql-core/columns/tinyint.js +3 -1
  240. package/mysql-core/columns/tinyint.js.map +1 -1
  241. package/mysql-core/columns/varbinary.cjs +4 -2
  242. package/mysql-core/columns/varbinary.cjs.map +1 -1
  243. package/mysql-core/columns/varbinary.d.cts +2 -1
  244. package/mysql-core/columns/varbinary.d.ts +2 -1
  245. package/mysql-core/columns/varbinary.js +4 -2
  246. package/mysql-core/columns/varbinary.js.map +1 -1
  247. package/mysql-core/columns/varchar.cjs +3 -1
  248. package/mysql-core/columns/varchar.cjs.map +1 -1
  249. package/mysql-core/columns/varchar.d.cts +3 -2
  250. package/mysql-core/columns/varchar.d.ts +3 -2
  251. package/mysql-core/columns/varchar.js +3 -1
  252. package/mysql-core/columns/varchar.js.map +1 -1
  253. package/mysql-core/columns/year.cjs +1 -1
  254. package/mysql-core/columns/year.cjs.map +1 -1
  255. package/mysql-core/columns/year.d.cts +1 -0
  256. package/mysql-core/columns/year.d.ts +1 -0
  257. package/mysql-core/columns/year.js +1 -1
  258. package/mysql-core/columns/year.js.map +1 -1
  259. package/mysql-core/db.cjs +8 -2
  260. package/mysql-core/db.cjs.map +1 -1
  261. package/mysql-core/db.d.cts +5 -2
  262. package/mysql-core/db.d.ts +5 -2
  263. package/mysql-core/db.js +8 -2
  264. package/mysql-core/db.js.map +1 -1
  265. package/mysql-core/dialect.cjs +14 -7
  266. package/mysql-core/dialect.cjs.map +1 -1
  267. package/mysql-core/dialect.d.cts +5 -1
  268. package/mysql-core/dialect.d.ts +5 -1
  269. package/mysql-core/dialect.js +14 -7
  270. package/mysql-core/dialect.js.map +1 -1
  271. package/mysql-core/foreign-keys.cjs +3 -3
  272. package/mysql-core/foreign-keys.cjs.map +1 -1
  273. package/mysql-core/foreign-keys.d.cts +1 -1
  274. package/mysql-core/foreign-keys.d.ts +1 -1
  275. package/mysql-core/foreign-keys.js +3 -3
  276. package/mysql-core/foreign-keys.js.map +1 -1
  277. package/mysql-core/query-builders/count.cjs +73 -0
  278. package/mysql-core/query-builders/count.cjs.map +1 -0
  279. package/mysql-core/query-builders/count.d.cts +26 -0
  280. package/mysql-core/query-builders/count.d.ts +26 -0
  281. package/mysql-core/query-builders/count.js +49 -0
  282. package/mysql-core/query-builders/count.js.map +1 -0
  283. package/mysql-core/query-builders/query-builder.cjs +6 -1
  284. package/mysql-core/query-builders/query-builder.cjs.map +1 -1
  285. package/mysql-core/query-builders/query-builder.d.cts +4 -0
  286. package/mysql-core/query-builders/query-builder.d.ts +4 -0
  287. package/mysql-core/query-builders/query-builder.js +7 -2
  288. package/mysql-core/query-builders/query-builder.js.map +1 -1
  289. package/mysql-core/session.cjs +6 -0
  290. package/mysql-core/session.cjs.map +1 -1
  291. package/mysql-core/session.d.cts +1 -0
  292. package/mysql-core/session.d.ts +1 -0
  293. package/mysql-core/session.js +6 -0
  294. package/mysql-core/session.js.map +1 -1
  295. package/mysql-core/table.cjs +4 -1
  296. package/mysql-core/table.cjs.map +1 -1
  297. package/mysql-core/table.d.cts +8 -1
  298. package/mysql-core/table.d.ts +8 -1
  299. package/mysql-core/table.js +4 -1
  300. package/mysql-core/table.js.map +1 -1
  301. package/mysql-core/unique-constraint.cjs +2 -2
  302. package/mysql-core/unique-constraint.cjs.map +1 -1
  303. package/mysql-core/unique-constraint.d.cts +1 -1
  304. package/mysql-core/unique-constraint.d.ts +1 -1
  305. package/mysql-core/unique-constraint.js +2 -2
  306. package/mysql-core/unique-constraint.js.map +1 -1
  307. package/mysql-proxy/driver.cjs +8 -2
  308. package/mysql-proxy/driver.cjs.map +1 -1
  309. package/mysql-proxy/driver.d.cts +4 -1
  310. package/mysql-proxy/driver.d.ts +4 -1
  311. package/mysql-proxy/driver.js +7 -2
  312. package/mysql-proxy/driver.js.map +1 -1
  313. package/mysql2/driver.cjs +13 -8
  314. package/mysql2/driver.cjs.map +1 -1
  315. package/mysql2/driver.d.cts +6 -2
  316. package/mysql2/driver.d.ts +6 -2
  317. package/mysql2/driver.js +11 -7
  318. package/mysql2/driver.js.map +1 -1
  319. package/neon-http/driver.cjs +4 -2
  320. package/neon-http/driver.cjs.map +1 -1
  321. package/neon-http/driver.d.cts +3 -1
  322. package/neon-http/driver.d.ts +3 -1
  323. package/neon-http/driver.js +4 -2
  324. package/neon-http/driver.js.map +1 -1
  325. package/neon-http/migrator.cjs +2 -2
  326. package/neon-http/migrator.cjs.map +1 -1
  327. package/neon-http/migrator.d.cts +1 -1
  328. package/neon-http/migrator.d.ts +1 -1
  329. package/neon-http/migrator.js +2 -2
  330. package/neon-http/migrator.js.map +1 -1
  331. package/neon-http/session.cjs +6 -0
  332. package/neon-http/session.cjs.map +1 -1
  333. package/neon-http/session.d.cts +2 -1
  334. package/neon-http/session.d.ts +2 -1
  335. package/neon-http/session.js +6 -0
  336. package/neon-http/session.js.map +1 -1
  337. package/neon-serverless/driver.cjs +9 -2
  338. package/neon-serverless/driver.cjs.map +1 -1
  339. package/neon-serverless/driver.d.cts +6 -2
  340. package/neon-serverless/driver.d.ts +6 -2
  341. package/neon-serverless/driver.js +8 -2
  342. package/neon-serverless/driver.js.map +1 -1
  343. package/neon-serverless/migrator.cjs.map +1 -1
  344. package/neon-serverless/migrator.d.cts +1 -1
  345. package/neon-serverless/migrator.d.ts +1 -1
  346. package/neon-serverless/migrator.js.map +1 -1
  347. package/node-postgres/driver.cjs +9 -2
  348. package/node-postgres/driver.cjs.map +1 -1
  349. package/node-postgres/driver.d.cts +6 -2
  350. package/node-postgres/driver.d.ts +6 -2
  351. package/node-postgres/driver.js +8 -2
  352. package/node-postgres/driver.js.map +1 -1
  353. package/node-postgres/migrator.cjs.map +1 -1
  354. package/node-postgres/migrator.d.cts +1 -1
  355. package/node-postgres/migrator.d.ts +1 -1
  356. package/node-postgres/migrator.js.map +1 -1
  357. package/node-postgres/session.cjs +6 -0
  358. package/node-postgres/session.cjs.map +1 -1
  359. package/node-postgres/session.d.cts +2 -1
  360. package/node-postgres/session.d.ts +2 -1
  361. package/node-postgres/session.js +6 -0
  362. package/node-postgres/session.js.map +1 -1
  363. package/op-sqlite/driver.cjs +10 -2
  364. package/op-sqlite/driver.cjs.map +1 -1
  365. package/op-sqlite/driver.d.cts +7 -2
  366. package/op-sqlite/driver.d.ts +7 -2
  367. package/op-sqlite/driver.js +9 -2
  368. package/op-sqlite/driver.js.map +1 -1
  369. package/operations.cjs.map +1 -1
  370. package/package.json +184 -51
  371. package/pg-core/columns/all.cjs +96 -0
  372. package/pg-core/columns/all.cjs.map +1 -0
  373. package/pg-core/columns/all.d.cts +67 -0
  374. package/pg-core/columns/all.d.ts +67 -0
  375. package/pg-core/columns/all.js +72 -0
  376. package/pg-core/columns/all.js.map +1 -0
  377. package/pg-core/columns/bigint.cjs +3 -1
  378. package/pg-core/columns/bigint.cjs.map +1 -1
  379. package/pg-core/columns/bigint.d.cts +2 -2
  380. package/pg-core/columns/bigint.d.ts +2 -2
  381. package/pg-core/columns/bigint.js +3 -1
  382. package/pg-core/columns/bigint.js.map +1 -1
  383. package/pg-core/columns/bigserial.cjs +4 -2
  384. package/pg-core/columns/bigserial.cjs.map +1 -1
  385. package/pg-core/columns/bigserial.d.cts +2 -2
  386. package/pg-core/columns/bigserial.d.ts +2 -2
  387. package/pg-core/columns/bigserial.js +4 -2
  388. package/pg-core/columns/bigserial.js.map +1 -1
  389. package/pg-core/columns/boolean.cjs +1 -1
  390. package/pg-core/columns/boolean.cjs.map +1 -1
  391. package/pg-core/columns/boolean.d.cts +1 -0
  392. package/pg-core/columns/boolean.d.ts +1 -0
  393. package/pg-core/columns/boolean.js +1 -1
  394. package/pg-core/columns/boolean.js.map +1 -1
  395. package/pg-core/columns/char.cjs +3 -1
  396. package/pg-core/columns/char.cjs.map +1 -1
  397. package/pg-core/columns/char.d.cts +5 -3
  398. package/pg-core/columns/char.d.ts +5 -3
  399. package/pg-core/columns/char.js +3 -1
  400. package/pg-core/columns/char.js.map +1 -1
  401. package/pg-core/columns/cidr.cjs +1 -1
  402. package/pg-core/columns/cidr.cjs.map +1 -1
  403. package/pg-core/columns/cidr.d.cts +1 -0
  404. package/pg-core/columns/cidr.d.ts +1 -0
  405. package/pg-core/columns/cidr.js +1 -1
  406. package/pg-core/columns/cidr.js.map +1 -1
  407. package/pg-core/columns/common.cjs.map +1 -1
  408. package/pg-core/columns/common.d.cts +1 -1
  409. package/pg-core/columns/common.d.ts +1 -1
  410. package/pg-core/columns/common.js.map +1 -1
  411. package/pg-core/columns/custom.cjs +4 -2
  412. package/pg-core/columns/custom.cjs.map +1 -1
  413. package/pg-core/columns/custom.d.cts +10 -3
  414. package/pg-core/columns/custom.d.ts +10 -3
  415. package/pg-core/columns/custom.js +4 -2
  416. package/pg-core/columns/custom.js.map +1 -1
  417. package/pg-core/columns/date.cjs +3 -1
  418. package/pg-core/columns/date.cjs.map +1 -1
  419. package/pg-core/columns/date.d.cts +7 -6
  420. package/pg-core/columns/date.d.ts +7 -6
  421. package/pg-core/columns/date.js +3 -1
  422. package/pg-core/columns/date.js.map +1 -1
  423. package/pg-core/columns/double-precision.cjs +1 -1
  424. package/pg-core/columns/double-precision.cjs.map +1 -1
  425. package/pg-core/columns/double-precision.d.cts +1 -0
  426. package/pg-core/columns/double-precision.d.ts +1 -0
  427. package/pg-core/columns/double-precision.js +1 -1
  428. package/pg-core/columns/double-precision.js.map +1 -1
  429. package/pg-core/columns/enum.cjs +1 -1
  430. package/pg-core/columns/enum.cjs.map +1 -1
  431. package/pg-core/columns/enum.d.cts +3 -1
  432. package/pg-core/columns/enum.d.ts +3 -1
  433. package/pg-core/columns/enum.js +1 -1
  434. package/pg-core/columns/enum.js.map +1 -1
  435. package/pg-core/columns/index.cjs +2 -0
  436. package/pg-core/columns/index.cjs.map +1 -1
  437. package/pg-core/columns/index.d.cts +1 -0
  438. package/pg-core/columns/index.d.ts +1 -0
  439. package/pg-core/columns/index.js +1 -0
  440. package/pg-core/columns/index.js.map +1 -1
  441. package/pg-core/columns/inet.cjs +1 -1
  442. package/pg-core/columns/inet.cjs.map +1 -1
  443. package/pg-core/columns/inet.d.cts +1 -0
  444. package/pg-core/columns/inet.d.ts +1 -0
  445. package/pg-core/columns/inet.js +1 -1
  446. package/pg-core/columns/inet.js.map +1 -1
  447. package/pg-core/columns/integer.cjs +1 -1
  448. package/pg-core/columns/integer.cjs.map +1 -1
  449. package/pg-core/columns/integer.d.cts +1 -0
  450. package/pg-core/columns/integer.d.ts +1 -0
  451. package/pg-core/columns/integer.js +1 -1
  452. package/pg-core/columns/integer.js.map +1 -1
  453. package/pg-core/columns/interval.cjs +3 -1
  454. package/pg-core/columns/interval.cjs.map +1 -1
  455. package/pg-core/columns/interval.d.cts +2 -0
  456. package/pg-core/columns/interval.d.ts +2 -0
  457. package/pg-core/columns/interval.js +3 -1
  458. package/pg-core/columns/interval.js.map +1 -1
  459. package/pg-core/columns/json.cjs +1 -1
  460. package/pg-core/columns/json.cjs.map +1 -1
  461. package/pg-core/columns/json.d.cts +1 -0
  462. package/pg-core/columns/json.d.ts +1 -0
  463. package/pg-core/columns/json.js +1 -1
  464. package/pg-core/columns/json.js.map +1 -1
  465. package/pg-core/columns/jsonb.cjs +1 -1
  466. package/pg-core/columns/jsonb.cjs.map +1 -1
  467. package/pg-core/columns/jsonb.d.cts +1 -0
  468. package/pg-core/columns/jsonb.d.ts +1 -0
  469. package/pg-core/columns/jsonb.js +1 -1
  470. package/pg-core/columns/jsonb.js.map +1 -1
  471. package/pg-core/columns/line.cjs +3 -1
  472. package/pg-core/columns/line.cjs.map +1 -1
  473. package/pg-core/columns/line.d.cts +3 -1
  474. package/pg-core/columns/line.d.ts +3 -1
  475. package/pg-core/columns/line.js +3 -1
  476. package/pg-core/columns/line.js.map +1 -1
  477. package/pg-core/columns/macaddr.cjs +1 -1
  478. package/pg-core/columns/macaddr.cjs.map +1 -1
  479. package/pg-core/columns/macaddr.d.cts +1 -0
  480. package/pg-core/columns/macaddr.d.ts +1 -0
  481. package/pg-core/columns/macaddr.js +1 -1
  482. package/pg-core/columns/macaddr.js.map +1 -1
  483. package/pg-core/columns/macaddr8.cjs +1 -1
  484. package/pg-core/columns/macaddr8.cjs.map +1 -1
  485. package/pg-core/columns/macaddr8.d.cts +1 -0
  486. package/pg-core/columns/macaddr8.d.ts +1 -0
  487. package/pg-core/columns/macaddr8.js +1 -1
  488. package/pg-core/columns/macaddr8.js.map +1 -1
  489. package/pg-core/columns/numeric.cjs +3 -1
  490. package/pg-core/columns/numeric.cjs.map +1 -1
  491. package/pg-core/columns/numeric.d.cts +6 -3
  492. package/pg-core/columns/numeric.d.ts +6 -3
  493. package/pg-core/columns/numeric.js +3 -1
  494. package/pg-core/columns/numeric.js.map +1 -1
  495. package/pg-core/columns/point.cjs +3 -1
  496. package/pg-core/columns/point.cjs.map +1 -1
  497. package/pg-core/columns/point.d.cts +5 -3
  498. package/pg-core/columns/point.d.ts +5 -3
  499. package/pg-core/columns/point.js +3 -1
  500. package/pg-core/columns/point.js.map +1 -1
  501. package/pg-core/columns/postgis_extension/geometry.cjs +6 -4
  502. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  503. package/pg-core/columns/postgis_extension/geometry.d.cts +4 -3
  504. package/pg-core/columns/postgis_extension/geometry.d.ts +4 -3
  505. package/pg-core/columns/postgis_extension/geometry.js +3 -1
  506. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  507. package/pg-core/columns/real.cjs +1 -1
  508. package/pg-core/columns/real.cjs.map +1 -1
  509. package/pg-core/columns/real.d.cts +2 -1
  510. package/pg-core/columns/real.d.ts +2 -1
  511. package/pg-core/columns/real.js +1 -1
  512. package/pg-core/columns/real.js.map +1 -1
  513. package/pg-core/columns/serial.cjs +1 -1
  514. package/pg-core/columns/serial.cjs.map +1 -1
  515. package/pg-core/columns/serial.d.cts +2 -1
  516. package/pg-core/columns/serial.d.ts +2 -1
  517. package/pg-core/columns/serial.js +1 -1
  518. package/pg-core/columns/serial.js.map +1 -1
  519. package/pg-core/columns/smallint.cjs +1 -1
  520. package/pg-core/columns/smallint.cjs.map +1 -1
  521. package/pg-core/columns/smallint.d.cts +1 -0
  522. package/pg-core/columns/smallint.d.ts +1 -0
  523. package/pg-core/columns/smallint.js +1 -1
  524. package/pg-core/columns/smallint.js.map +1 -1
  525. package/pg-core/columns/smallserial.cjs +1 -1
  526. package/pg-core/columns/smallserial.cjs.map +1 -1
  527. package/pg-core/columns/smallserial.d.cts +2 -1
  528. package/pg-core/columns/smallserial.d.ts +2 -1
  529. package/pg-core/columns/smallserial.js +1 -1
  530. package/pg-core/columns/smallserial.js.map +1 -1
  531. package/pg-core/columns/text.cjs +3 -1
  532. package/pg-core/columns/text.cjs.map +1 -1
  533. package/pg-core/columns/text.d.cts +4 -2
  534. package/pg-core/columns/text.d.ts +4 -2
  535. package/pg-core/columns/text.js +3 -1
  536. package/pg-core/columns/text.js.map +1 -1
  537. package/pg-core/columns/time.cjs +3 -1
  538. package/pg-core/columns/time.cjs.map +1 -1
  539. package/pg-core/columns/time.d.cts +2 -0
  540. package/pg-core/columns/time.d.ts +2 -0
  541. package/pg-core/columns/time.js +3 -1
  542. package/pg-core/columns/time.js.map +1 -1
  543. package/pg-core/columns/timestamp.cjs +5 -3
  544. package/pg-core/columns/timestamp.cjs.map +1 -1
  545. package/pg-core/columns/timestamp.d.cts +5 -3
  546. package/pg-core/columns/timestamp.d.ts +5 -3
  547. package/pg-core/columns/timestamp.js +5 -3
  548. package/pg-core/columns/timestamp.js.map +1 -1
  549. package/pg-core/columns/uuid.cjs +1 -1
  550. package/pg-core/columns/uuid.cjs.map +1 -1
  551. package/pg-core/columns/uuid.d.cts +1 -0
  552. package/pg-core/columns/uuid.d.ts +1 -0
  553. package/pg-core/columns/uuid.js +1 -1
  554. package/pg-core/columns/uuid.js.map +1 -1
  555. package/pg-core/columns/varchar.cjs +3 -1
  556. package/pg-core/columns/varchar.cjs.map +1 -1
  557. package/pg-core/columns/varchar.d.cts +5 -3
  558. package/pg-core/columns/varchar.d.ts +5 -3
  559. package/pg-core/columns/varchar.js +3 -1
  560. package/pg-core/columns/varchar.js.map +1 -1
  561. package/pg-core/columns/vector_extension/bit.cjs +3 -1
  562. package/pg-core/columns/vector_extension/bit.cjs.map +1 -1
  563. package/pg-core/columns/vector_extension/bit.d.cts +1 -0
  564. package/pg-core/columns/vector_extension/bit.d.ts +1 -0
  565. package/pg-core/columns/vector_extension/bit.js +3 -1
  566. package/pg-core/columns/vector_extension/bit.js.map +1 -1
  567. package/pg-core/columns/vector_extension/halfvec.cjs +3 -1
  568. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -1
  569. package/pg-core/columns/vector_extension/halfvec.d.cts +1 -0
  570. package/pg-core/columns/vector_extension/halfvec.d.ts +1 -0
  571. package/pg-core/columns/vector_extension/halfvec.js +3 -1
  572. package/pg-core/columns/vector_extension/halfvec.js.map +1 -1
  573. package/pg-core/columns/vector_extension/sparsevec.cjs +3 -1
  574. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -1
  575. package/pg-core/columns/vector_extension/sparsevec.d.cts +1 -0
  576. package/pg-core/columns/vector_extension/sparsevec.d.ts +1 -0
  577. package/pg-core/columns/vector_extension/sparsevec.js +3 -1
  578. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -1
  579. package/pg-core/columns/vector_extension/vector.cjs +3 -1
  580. package/pg-core/columns/vector_extension/vector.cjs.map +1 -1
  581. package/pg-core/columns/vector_extension/vector.d.cts +1 -0
  582. package/pg-core/columns/vector_extension/vector.d.ts +1 -0
  583. package/pg-core/columns/vector_extension/vector.js +3 -1
  584. package/pg-core/columns/vector_extension/vector.js.map +1 -1
  585. package/pg-core/db.cjs +10 -4
  586. package/pg-core/db.cjs.map +1 -1
  587. package/pg-core/db.d.cts +6 -3
  588. package/pg-core/db.d.ts +6 -3
  589. package/pg-core/db.js +10 -4
  590. package/pg-core/db.js.map +1 -1
  591. package/pg-core/dialect.cjs +13 -4
  592. package/pg-core/dialect.cjs.map +1 -1
  593. package/pg-core/dialect.d.cts +5 -1
  594. package/pg-core/dialect.d.ts +5 -1
  595. package/pg-core/dialect.js +13 -4
  596. package/pg-core/dialect.js.map +1 -1
  597. package/pg-core/foreign-keys.cjs +3 -3
  598. package/pg-core/foreign-keys.cjs.map +1 -1
  599. package/pg-core/foreign-keys.d.cts +1 -1
  600. package/pg-core/foreign-keys.d.ts +1 -1
  601. package/pg-core/foreign-keys.js +3 -3
  602. package/pg-core/foreign-keys.js.map +1 -1
  603. package/pg-core/query-builders/count.cjs +73 -0
  604. package/pg-core/query-builders/count.cjs.map +1 -0
  605. package/pg-core/query-builders/count.d.cts +25 -0
  606. package/pg-core/query-builders/count.d.ts +25 -0
  607. package/pg-core/query-builders/count.js +49 -0
  608. package/pg-core/query-builders/count.js.map +1 -0
  609. package/pg-core/query-builders/insert.cjs +2 -2
  610. package/pg-core/query-builders/insert.cjs.map +1 -1
  611. package/pg-core/query-builders/insert.js +2 -2
  612. package/pg-core/query-builders/insert.js.map +1 -1
  613. package/pg-core/query-builders/query-builder.cjs +6 -1
  614. package/pg-core/query-builders/query-builder.cjs.map +1 -1
  615. package/pg-core/query-builders/query-builder.d.cts +4 -0
  616. package/pg-core/query-builders/query-builder.d.ts +4 -0
  617. package/pg-core/query-builders/query-builder.js +7 -2
  618. package/pg-core/query-builders/query-builder.js.map +1 -1
  619. package/pg-core/session.cjs +6 -0
  620. package/pg-core/session.cjs.map +1 -1
  621. package/pg-core/session.d.cts +1 -0
  622. package/pg-core/session.d.ts +1 -0
  623. package/pg-core/session.js +6 -0
  624. package/pg-core/session.js.map +1 -1
  625. package/pg-core/table.cjs +6 -2
  626. package/pg-core/table.cjs.map +1 -1
  627. package/pg-core/table.d.cts +7 -0
  628. package/pg-core/table.d.ts +7 -0
  629. package/pg-core/table.js +6 -2
  630. package/pg-core/table.js.map +1 -1
  631. package/pg-core/unique-constraint.cjs +2 -2
  632. package/pg-core/unique-constraint.cjs.map +1 -1
  633. package/pg-core/unique-constraint.d.cts +1 -1
  634. package/pg-core/unique-constraint.d.ts +1 -1
  635. package/pg-core/unique-constraint.js +2 -2
  636. package/pg-core/unique-constraint.js.map +1 -1
  637. package/pg-proxy/driver.cjs +8 -2
  638. package/pg-proxy/driver.cjs.map +1 -1
  639. package/pg-proxy/driver.d.cts +4 -1
  640. package/pg-proxy/driver.d.ts +4 -1
  641. package/pg-proxy/driver.js +7 -2
  642. package/pg-proxy/driver.js.map +1 -1
  643. package/pg-proxy/migrator.cjs.map +1 -1
  644. package/pg-proxy/migrator.d.cts +1 -1
  645. package/pg-proxy/migrator.d.ts +1 -1
  646. package/pg-proxy/migrator.js.map +1 -1
  647. package/pg-proxy/session.cjs.map +1 -1
  648. package/pg-proxy/session.js.map +1 -1
  649. package/pglite/driver.cjs +9 -2
  650. package/pglite/driver.cjs.map +1 -1
  651. package/pglite/driver.d.cts +6 -2
  652. package/pglite/driver.d.ts +6 -2
  653. package/pglite/driver.js +8 -2
  654. package/pglite/driver.js.map +1 -1
  655. package/pglite/migrator.cjs.map +1 -1
  656. package/pglite/migrator.d.cts +1 -1
  657. package/pglite/migrator.d.ts +1 -1
  658. package/pglite/migrator.js.map +1 -1
  659. package/pglite/session.cjs +6 -0
  660. package/pglite/session.cjs.map +1 -1
  661. package/pglite/session.d.cts +2 -1
  662. package/pglite/session.d.ts +2 -1
  663. package/pglite/session.js +6 -0
  664. package/pglite/session.js.map +1 -1
  665. package/planetscale-serverless/driver.cjs +10 -2
  666. package/planetscale-serverless/driver.cjs.map +1 -1
  667. package/planetscale-serverless/driver.d.cts +7 -2
  668. package/planetscale-serverless/driver.d.ts +7 -2
  669. package/planetscale-serverless/driver.js +9 -2
  670. package/planetscale-serverless/driver.js.map +1 -1
  671. package/planetscale-serverless/migrator.cjs.map +1 -1
  672. package/planetscale-serverless/migrator.js.map +1 -1
  673. package/planetscale-serverless/session.cjs +6 -0
  674. package/planetscale-serverless/session.cjs.map +1 -1
  675. package/planetscale-serverless/session.d.cts +1 -0
  676. package/planetscale-serverless/session.d.ts +1 -0
  677. package/planetscale-serverless/session.js +6 -0
  678. package/planetscale-serverless/session.js.map +1 -1
  679. package/postgres-js/driver.cjs +10 -2
  680. package/postgres-js/driver.cjs.map +1 -1
  681. package/postgres-js/driver.d.cts +7 -2
  682. package/postgres-js/driver.d.ts +7 -2
  683. package/postgres-js/driver.js +9 -2
  684. package/postgres-js/driver.js.map +1 -1
  685. package/postgres-js/migrator.cjs.map +1 -1
  686. package/postgres-js/migrator.d.cts +1 -1
  687. package/postgres-js/migrator.d.ts +1 -1
  688. package/postgres-js/migrator.js.map +1 -1
  689. package/sql/functions/vector.cjs.map +1 -1
  690. package/sql/functions/vector.d.cts +1 -1
  691. package/sql/functions/vector.d.ts +1 -1
  692. package/sql/functions/vector.js.map +1 -1
  693. package/sql/sql.cjs +4 -2
  694. package/sql/sql.cjs.map +1 -1
  695. package/sql/sql.d.cts +2 -0
  696. package/sql/sql.d.ts +2 -0
  697. package/sql/sql.js +4 -2
  698. package/sql/sql.js.map +1 -1
  699. package/sql-js/driver.cjs +1 -1
  700. package/sql-js/driver.cjs.map +1 -1
  701. package/sql-js/driver.js +1 -1
  702. package/sql-js/driver.js.map +1 -1
  703. package/sql-js/migrator.cjs.map +1 -1
  704. package/sql-js/migrator.d.cts +1 -1
  705. package/sql-js/migrator.d.ts +1 -1
  706. package/sql-js/migrator.js.map +1 -1
  707. package/sqlite-core/columns/all.cjs +44 -0
  708. package/sqlite-core/columns/all.cjs.map +1 -0
  709. package/sqlite-core/columns/all.d.cts +15 -0
  710. package/sqlite-core/columns/all.d.ts +15 -0
  711. package/sqlite-core/columns/all.js +20 -0
  712. package/sqlite-core/columns/all.js.map +1 -0
  713. package/sqlite-core/columns/blob.cjs +3 -1
  714. package/sqlite-core/columns/blob.cjs.map +1 -1
  715. package/sqlite-core/columns/blob.d.cts +3 -1
  716. package/sqlite-core/columns/blob.d.ts +3 -1
  717. package/sqlite-core/columns/blob.js +3 -1
  718. package/sqlite-core/columns/blob.js.map +1 -1
  719. package/sqlite-core/columns/custom.cjs +5 -3
  720. package/sqlite-core/columns/custom.cjs.map +1 -1
  721. package/sqlite-core/columns/custom.d.cts +10 -3
  722. package/sqlite-core/columns/custom.d.ts +10 -3
  723. package/sqlite-core/columns/custom.js +5 -3
  724. package/sqlite-core/columns/custom.js.map +1 -1
  725. package/sqlite-core/columns/integer.cjs +3 -1
  726. package/sqlite-core/columns/integer.cjs.map +1 -1
  727. package/sqlite-core/columns/integer.d.cts +3 -1
  728. package/sqlite-core/columns/integer.d.ts +3 -1
  729. package/sqlite-core/columns/integer.js +3 -1
  730. package/sqlite-core/columns/integer.js.map +1 -1
  731. package/sqlite-core/columns/numeric.cjs +1 -1
  732. package/sqlite-core/columns/numeric.cjs.map +1 -1
  733. package/sqlite-core/columns/numeric.d.cts +1 -0
  734. package/sqlite-core/columns/numeric.d.ts +1 -0
  735. package/sqlite-core/columns/numeric.js +1 -1
  736. package/sqlite-core/columns/numeric.js.map +1 -1
  737. package/sqlite-core/columns/real.cjs +1 -1
  738. package/sqlite-core/columns/real.cjs.map +1 -1
  739. package/sqlite-core/columns/real.d.cts +1 -0
  740. package/sqlite-core/columns/real.d.ts +1 -0
  741. package/sqlite-core/columns/real.js +1 -1
  742. package/sqlite-core/columns/real.js.map +1 -1
  743. package/sqlite-core/columns/text.cjs +7 -2
  744. package/sqlite-core/columns/text.cjs.map +1 -1
  745. package/sqlite-core/columns/text.d.cts +4 -2
  746. package/sqlite-core/columns/text.d.ts +4 -2
  747. package/sqlite-core/columns/text.js +7 -2
  748. package/sqlite-core/columns/text.js.map +1 -1
  749. package/sqlite-core/db.cjs +23 -17
  750. package/sqlite-core/db.cjs.map +1 -1
  751. package/sqlite-core/db.d.cts +8 -5
  752. package/sqlite-core/db.d.ts +8 -5
  753. package/sqlite-core/db.js +23 -17
  754. package/sqlite-core/db.js.map +1 -1
  755. package/sqlite-core/dialect.cjs +14 -8
  756. package/sqlite-core/dialect.cjs.map +1 -1
  757. package/sqlite-core/dialect.d.cts +5 -1
  758. package/sqlite-core/dialect.d.ts +5 -1
  759. package/sqlite-core/dialect.js +14 -8
  760. package/sqlite-core/dialect.js.map +1 -1
  761. package/sqlite-core/foreign-keys.cjs +3 -3
  762. package/sqlite-core/foreign-keys.cjs.map +1 -1
  763. package/sqlite-core/foreign-keys.d.cts +1 -1
  764. package/sqlite-core/foreign-keys.d.ts +1 -1
  765. package/sqlite-core/foreign-keys.js +3 -3
  766. package/sqlite-core/foreign-keys.js.map +1 -1
  767. package/sqlite-core/query-builders/count.cjs +72 -0
  768. package/sqlite-core/query-builders/count.cjs.map +1 -0
  769. package/sqlite-core/query-builders/count.d.cts +26 -0
  770. package/sqlite-core/query-builders/count.d.ts +26 -0
  771. package/sqlite-core/query-builders/count.js +48 -0
  772. package/sqlite-core/query-builders/count.js.map +1 -0
  773. package/sqlite-core/query-builders/query-builder.cjs +6 -1
  774. package/sqlite-core/query-builders/query-builder.cjs.map +1 -1
  775. package/sqlite-core/query-builders/query-builder.d.cts +4 -0
  776. package/sqlite-core/query-builders/query-builder.d.ts +4 -0
  777. package/sqlite-core/query-builders/query-builder.js +8 -3
  778. package/sqlite-core/query-builders/query-builder.js.map +1 -1
  779. package/sqlite-core/query-builders/raw.cjs.map +1 -1
  780. package/sqlite-core/query-builders/raw.d.cts +2 -2
  781. package/sqlite-core/query-builders/raw.d.ts +2 -2
  782. package/sqlite-core/query-builders/raw.js.map +1 -1
  783. package/sqlite-core/session.cjs +4 -0
  784. package/sqlite-core/session.cjs.map +1 -1
  785. package/sqlite-core/session.d.cts +1 -0
  786. package/sqlite-core/session.d.ts +1 -0
  787. package/sqlite-core/session.js +4 -0
  788. package/sqlite-core/session.js.map +1 -1
  789. package/sqlite-core/table.cjs +4 -1
  790. package/sqlite-core/table.cjs.map +1 -1
  791. package/sqlite-core/table.d.cts +7 -0
  792. package/sqlite-core/table.d.ts +7 -0
  793. package/sqlite-core/table.js +4 -1
  794. package/sqlite-core/table.js.map +1 -1
  795. package/sqlite-core/unique-constraint.cjs +2 -2
  796. package/sqlite-core/unique-constraint.cjs.map +1 -1
  797. package/sqlite-core/unique-constraint.d.cts +1 -1
  798. package/sqlite-core/unique-constraint.d.ts +1 -1
  799. package/sqlite-core/unique-constraint.js +2 -2
  800. package/sqlite-core/unique-constraint.js.map +1 -1
  801. package/sqlite-proxy/driver.cjs +1 -1
  802. package/sqlite-proxy/driver.cjs.map +1 -1
  803. package/sqlite-proxy/driver.js +1 -1
  804. package/sqlite-proxy/driver.js.map +1 -1
  805. package/sqlite-proxy/migrator.cjs.map +1 -1
  806. package/sqlite-proxy/migrator.d.cts +1 -1
  807. package/sqlite-proxy/migrator.d.ts +1 -1
  808. package/sqlite-proxy/migrator.js.map +1 -1
  809. package/table.cjs +6 -8
  810. package/table.cjs.map +1 -1
  811. package/table.js +1 -2
  812. package/table.js.map +1 -1
  813. package/table.utils.cjs +29 -0
  814. package/table.utils.cjs.map +1 -0
  815. package/table.utils.d.cts +1 -0
  816. package/table.utils.d.ts +1 -0
  817. package/table.utils.js +5 -0
  818. package/table.utils.js.map +1 -0
  819. package/tidb-serverless/driver.cjs +10 -2
  820. package/tidb-serverless/driver.cjs.map +1 -1
  821. package/tidb-serverless/driver.d.cts +7 -2
  822. package/tidb-serverless/driver.d.ts +7 -2
  823. package/tidb-serverless/driver.js +9 -2
  824. package/tidb-serverless/driver.js.map +1 -1
  825. package/tidb-serverless/session.cjs +6 -0
  826. package/tidb-serverless/session.cjs.map +1 -1
  827. package/tidb-serverless/session.d.cts +1 -0
  828. package/tidb-serverless/session.d.ts +1 -0
  829. package/tidb-serverless/session.js +6 -0
  830. package/tidb-serverless/session.js.map +1 -1
  831. package/utils.cjs +8 -0
  832. package/utils.cjs.map +1 -1
  833. package/utils.d.cts +3 -0
  834. package/utils.d.ts +3 -0
  835. package/utils.js +7 -0
  836. package/utils.js.map +1 -1
  837. package/vercel-postgres/driver.cjs +9 -2
  838. package/vercel-postgres/driver.cjs.map +1 -1
  839. package/vercel-postgres/driver.d.cts +6 -2
  840. package/vercel-postgres/driver.d.ts +6 -2
  841. package/vercel-postgres/driver.js +8 -2
  842. package/vercel-postgres/driver.js.map +1 -1
  843. package/vercel-postgres/migrator.cjs.map +1 -1
  844. package/vercel-postgres/migrator.d.cts +1 -1
  845. package/vercel-postgres/migrator.d.ts +1 -1
  846. package/vercel-postgres/migrator.js.map +1 -1
  847. package/version.cjs +2 -2
  848. package/version.cjs.map +1 -1
  849. package/version.d.cts +2 -2
  850. package/version.d.ts +2 -2
  851. package/version.js +2 -2
  852. package/version.js.map +1 -1
  853. package/xata-http/driver.cjs +4 -2
  854. package/xata-http/driver.cjs.map +1 -1
  855. package/xata-http/driver.d.cts +3 -1
  856. package/xata-http/driver.d.ts +3 -1
  857. package/xata-http/driver.js +4 -2
  858. package/xata-http/driver.js.map +1 -1
  859. package/xata-http/migrator.cjs +1 -1
  860. package/xata-http/migrator.cjs.map +1 -1
  861. package/xata-http/migrator.d.cts +1 -1
  862. package/xata-http/migrator.d.ts +1 -1
  863. package/xata-http/migrator.js +1 -1
  864. package/xata-http/migrator.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TSchema>('async', this.dialect, session, this.schema);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(transaction: (tx: LibSQLTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAE3B,oBAA2B;AAG3B,iBAAkD;AAElD,yBAAkC;AAOlC,qBAAmD;AACnD,mBAA6B;AAQtB,MAAM,sBAGH,6BAAwD;AAAA,EAKjE,YACS,QACR,SACQ,QACA,SACA,IACP;AACD,UAAM,OAAO;AANL;AAEA;AACA;AACA;AAGR,SAAK,SAAS,QAAQ,UAAU,IAAI,yBAAW;AAAA,EAChD;AAAA,EAbA,QAAiB,wBAAU,IAAY;AAAA,EAE/B;AAAA,EAaR,aACC,OACA,QACA,eACA,uBACA,oBACyB;AACzB,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,MAAwE,SAAY;AACzF,UAAM,kBAAmC,CAAC;AAC1C,UAAM,eAA8B,CAAC;AAErC,eAAW,SAAS,SAAS;AAC5B,YAAM,gBAAgB,MAAM,SAAS;AACrC,YAAM,aAAa,cAAc,SAAS;AAC1C,sBAAgB,KAAK,aAAa;AAClC,mBAAa,KAAK,EAAE,KAAK,WAAW,KAAK,MAAM,WAAW,OAAiB,CAAC;AAAA,IAC7E;AAEA,UAAM,eAAe,MAAM,KAAK,OAAO,MAAM,YAAY;AACzD,WAAO,aAAa,IAAI,CAAC,QAAQ,MAAM,gBAAgB,CAAC,EAAG,UAAU,QAAQ,IAAI,CAAC;AAAA,EACnF;AAAA,EAEA,MAAe,YACd,aACA,SACa;AAEb,UAAM,WAAW,MAAM,KAAK,OAAO,YAAY;AAC/C,UAAM,UAAU,IAAI;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,IACD;AACA,UAAM,KAAK,IAAI,kBAAwC,SAAS,KAAK,SAAS,SAAS,KAAK,MAAM;AAClG,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,SAAS,OAAO;AACtB,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,SAAS,SAAS;AACxB,YAAM;AAAA,IACP;AAAA,EACD;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAAqB;AAAA,EAC9B;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAAqB,KAAK,CAAC;AAAA,EACpC;AAAA,EAES,qCAAqC,QAA0B;AACvE,WAAQ,OAAqB;AAAA,EAC9B;AACD;AAEO,MAAM,0BAGH,qCAA4D;AAAA,EACrE,QAAiB,wBAAU,IAAY;AAAA,EAEvC,MAAe,YAAe,aAAsF;AACnH,UAAM,gBAAgB,KAAK,KAAK,WAAW;AAC3C,UAAM,KAAK,IAAI,kBAAkB,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,cAAc,CAAC;AACvG,UAAM,KAAK,QAAQ,IAAI,eAAI,IAAI,aAAa,aAAa,EAAE,CAAC;AAC5D,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,QAAQ,IAAI,eAAI,IAAI,qBAAqB,aAAa,EAAE,CAAC;AACpE,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,KAAK,QAAQ,IAAI,eAAI,IAAI,yBAAyB,aAAa,EAAE,CAAC;AACxE,YAAM;AAAA,IACP;AAAA,EACD;AACD;AAEO,MAAM,4BAAiF,mCAE5F;AAAA,EAGD,YACS,QACR,OACQ,QACgB,QAChB,IACR,eACQ,wBACgB,oBAIvB;AACD,UAAM,SAAS,eAAe,KAAK;AAZ3B;AAEA;AACgB;AAChB;AAEA;AACgB;AAMxB,SAAK,qBAAqB;AAC1B,SAAK,SAAS;AAAA,EACf;AAAA,EAlBA,QAAiB,wBAAU,IAAY;AAAA,EAoBvC,IAAI,mBAAiE;AACpE,UAAM,aAAS,6BAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,UAAM,OAAoB,EAAE,KAAK,KAAK,MAAM,KAAK,MAAM,OAAiB;AACxE,WAAO,KAAK,KAAK,KAAK,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO,QAAQ,IAAI;AAAA,EAClE;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,QAAQ,QAAQ,OAAO,IAAI,QAAQ,mBAAmB,IAAI;AAClE,QAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,YAAM,aAAS,6BAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,aAAO,SAAS,MAAM,KAAK,MAAM;AACjC,YAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AACnE,cAAQ,KAAK,GAAG,QAAQ,IAAI,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,MAAAA,MAAK,MAAM,KAAK,aAAaA,KAAI,CAAC;AAAA,IACjG;AAEA,UAAM,OAAO,MAAM,KAAK,OAAO,iBAAiB;AAEhD,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAAmB;AAAA,IAC5B;AAEA,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAQ,KAAmB,IAAI,CAAC,QAAQ,aAAa,GAAG,CAAC;AAAA,IAC1D;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,MAAqB,mBAAmB;AAAA,IACxE;AAEA,WAAQ,KAAmB,IAAI,CAAC,QAAQ;AACvC,iBAAO;AAAA,QACN,KAAK;AAAA,QACL,MAAM,UAAU,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,oBAAoB,CAAC,CAAC;AAAA,QACjE,KAAK;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,QAAQ,QAAQ,OAAO,IAAI,QAAQ,mBAAmB,IAAI;AAClE,QAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,YAAM,aAAS,6BAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,aAAO,SAAS,MAAM,KAAK,MAAM;AACjC,YAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AACnE,cAAQ,KAAK,GAAG,QAAQ,IAAI,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,MAAAA,MAAK,MAAM,KAAK,aAAaA,KAAI,CAAC;AAAA,IACjG;AAEA,UAAM,OAAO,MAAM,KAAK,OAAO,iBAAiB;AAEhD,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAAmB;AAAA,IAC5B;AAEA,UAAM,MAAO,KAAmB,CAAC;AAEjC,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAO,aAAa,GAAG;AAAA,IACxB;AAEA,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,MAAqB,mBAAmB;AAAA,IACxE;AAEA,eAAO;AAAA,MACN,KAAK;AAAA,MACL,MAAM,UAAU,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,oBAAoB,CAAC,CAAC;AAAA,MACjE,KAAK;AAAA,IACN;AAAA,EACD;AAAA,EAEA,OAAO,mBAAmE;AACzE,UAAM,aAAS,6BAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,UAAM,OAAoB,EAAE,KAAK,KAAK,MAAM,KAAK,MAAM,OAAiB;AACxE,YAAQ,KAAK,KAAK,KAAK,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,KAAK,MAAM,IAAI;AAAA,EAG7F;AAAA;AAAA,EAGA,wBAAiC;AAChC,WAAO,KAAK;AAAA,EACb;AACD;AAEA,SAAS,aAAa,KAAU;AAK/B,SAAO,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,KAA0B,QAAQ;AACjE,QAAI,OAAO,UAAU,qBAAqB,KAAK,KAAK,GAAG,GAAG;AACzD,UAAI,GAAG,IAAI,IAAI,GAAG;AAAA,IACnB;AACA,WAAO;AAAA,EACR,GAAG,CAAC,CAAC;AACN;AAEA,SAAS,oBAAoB,OAAgB;AAC5C,MAAI,OAAO,gBAAgB,eAAe,iBAAiB,aAAa;AACvE,QAAI,OAAO,WAAW,aAAa;AAClC,UAAI,EAAE,iBAAiB,SAAS;AAC/B,eAAO,OAAO,KAAK,KAAK;AAAA,MACzB;AACA,aAAO;AAAA,IACR;AACA,QAAI,OAAO,gBAAgB,aAAa;AACvC,aAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AAAA,IACtC;AACA,UAAM,IAAI,MAAM,qFAAqF;AAAA,EACtG;AACA,SAAO;AACR;","names":["rows"]}
1
+ {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\tasync migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.migrate(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TSchema>('async', this.dialect, session, this.schema);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(transaction: (tx: LibSQLTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
@@ -23,6 +23,7 @@ export declare class LibSQLSession<TFullSchema extends Record<string, unknown>,
23
23
  constructor(client: Client, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options: LibSQLSessionOptions, tx: Transaction | undefined);
24
24
  prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): LibSQLPreparedQuery<T>;
25
25
  batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
26
+ migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
26
27
  transaction<T>(transaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>, _config?: SQLiteTransactionConfig): Promise<T>;
27
28
  extractRawAllValueFromBatchResult(result: unknown): unknown;
28
29
  extractRawGetValueFromBatchResult(result: unknown): unknown;
@@ -23,6 +23,7 @@ export declare class LibSQLSession<TFullSchema extends Record<string, unknown>,
23
23
  constructor(client: Client, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options: LibSQLSessionOptions, tx: Transaction | undefined);
24
24
  prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): LibSQLPreparedQuery<T>;
25
25
  batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
26
+ migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
26
27
  transaction<T>(transaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>, _config?: SQLiteTransactionConfig): Promise<T>;
27
28
  extractRawAllValueFromBatchResult(result: unknown): unknown;
28
29
  extractRawGetValueFromBatchResult(result: unknown): unknown;
package/libsql/session.js CHANGED
@@ -39,6 +39,18 @@ class LibSQLSession extends SQLiteSession {
39
39
  const batchResults = await this.client.batch(builtQueries);
40
40
  return batchResults.map((result, i) => preparedQueries[i].mapResult(result, true));
41
41
  }
42
+ async migrate(queries) {
43
+ const preparedQueries = [];
44
+ const builtQueries = [];
45
+ for (const query of queries) {
46
+ const preparedQuery = query._prepare();
47
+ const builtQuery = preparedQuery.getQuery();
48
+ preparedQueries.push(preparedQuery);
49
+ builtQueries.push({ sql: builtQuery.sql, args: builtQuery.params });
50
+ }
51
+ const batchResults = await this.client.migrate(builtQueries);
52
+ return batchResults.map((result, i) => preparedQueries[i].mapResult(result, true));
53
+ }
42
54
  async transaction(transaction, _config) {
43
55
  const libsqlTx = await this.client.transaction();
44
56
  const session = new LibSQLSession(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TSchema>('async', this.dialect, session, this.schema);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(transaction: (tx: LibSQLTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAE3B,SAAS,kBAAkB;AAG3B,SAAS,kBAA8B,WAAW;AAElD,SAAS,yBAAyB;AAOlC,SAAS,qBAAqB,qBAAqB;AACnD,SAAS,oBAAoB;AAQtB,MAAM,sBAGH,cAAwD;AAAA,EAKjE,YACS,QACR,SACQ,QACA,SACA,IACP;AACD,UAAM,OAAO;AANL;AAEA;AACA;AACA;AAGR,SAAK,SAAS,QAAQ,UAAU,IAAI,WAAW;AAAA,EAChD;AAAA,EAbA,QAAiB,UAAU,IAAY;AAAA,EAE/B;AAAA,EAaR,aACC,OACA,QACA,eACA,uBACA,oBACyB;AACzB,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,MAAwE,SAAY;AACzF,UAAM,kBAAmC,CAAC;AAC1C,UAAM,eAA8B,CAAC;AAErC,eAAW,SAAS,SAAS;AAC5B,YAAM,gBAAgB,MAAM,SAAS;AACrC,YAAM,aAAa,cAAc,SAAS;AAC1C,sBAAgB,KAAK,aAAa;AAClC,mBAAa,KAAK,EAAE,KAAK,WAAW,KAAK,MAAM,WAAW,OAAiB,CAAC;AAAA,IAC7E;AAEA,UAAM,eAAe,MAAM,KAAK,OAAO,MAAM,YAAY;AACzD,WAAO,aAAa,IAAI,CAAC,QAAQ,MAAM,gBAAgB,CAAC,EAAG,UAAU,QAAQ,IAAI,CAAC;AAAA,EACnF;AAAA,EAEA,MAAe,YACd,aACA,SACa;AAEb,UAAM,WAAW,MAAM,KAAK,OAAO,YAAY;AAC/C,UAAM,UAAU,IAAI;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,IACD;AACA,UAAM,KAAK,IAAI,kBAAwC,SAAS,KAAK,SAAS,SAAS,KAAK,MAAM;AAClG,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,SAAS,OAAO;AACtB,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,SAAS,SAAS;AACxB,YAAM;AAAA,IACP;AAAA,EACD;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAAqB;AAAA,EAC9B;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAAqB,KAAK,CAAC;AAAA,EACpC;AAAA,EAES,qCAAqC,QAA0B;AACvE,WAAQ,OAAqB;AAAA,EAC9B;AACD;AAEO,MAAM,0BAGH,kBAA4D;AAAA,EACrE,QAAiB,UAAU,IAAY;AAAA,EAEvC,MAAe,YAAe,aAAsF;AACnH,UAAM,gBAAgB,KAAK,KAAK,WAAW;AAC3C,UAAM,KAAK,IAAI,kBAAkB,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,cAAc,CAAC;AACvG,UAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,aAAa,aAAa,EAAE,CAAC;AAC5D,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,qBAAqB,aAAa,EAAE,CAAC;AACpE,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,yBAAyB,aAAa,EAAE,CAAC;AACxE,YAAM;AAAA,IACP;AAAA,EACD;AACD;AAEO,MAAM,4BAAiF,oBAE5F;AAAA,EAGD,YACS,QACR,OACQ,QACgB,QAChB,IACR,eACQ,wBACgB,oBAIvB;AACD,UAAM,SAAS,eAAe,KAAK;AAZ3B;AAEA;AACgB;AAChB;AAEA;AACgB;AAMxB,SAAK,qBAAqB;AAC1B,SAAK,SAAS;AAAA,EACf;AAAA,EAlBA,QAAiB,UAAU,IAAY;AAAA,EAoBvC,IAAI,mBAAiE;AACpE,UAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,UAAM,OAAoB,EAAE,KAAK,KAAK,MAAM,KAAK,MAAM,OAAiB;AACxE,WAAO,KAAK,KAAK,KAAK,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO,QAAQ,IAAI;AAAA,EAClE;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,QAAQ,QAAQ,OAAO,IAAI,QAAQ,mBAAmB,IAAI;AAClE,QAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,YAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,aAAO,SAAS,MAAM,KAAK,MAAM;AACjC,YAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AACnE,cAAQ,KAAK,GAAG,QAAQ,IAAI,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,MAAAA,MAAK,MAAM,KAAK,aAAaA,KAAI,CAAC;AAAA,IACjG;AAEA,UAAM,OAAO,MAAM,KAAK,OAAO,iBAAiB;AAEhD,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAAmB;AAAA,IAC5B;AAEA,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAQ,KAAmB,IAAI,CAAC,QAAQ,aAAa,GAAG,CAAC;AAAA,IAC1D;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,MAAqB,mBAAmB;AAAA,IACxE;AAEA,WAAQ,KAAmB,IAAI,CAAC,QAAQ;AACvC,aAAO;AAAA,QACN,KAAK;AAAA,QACL,MAAM,UAAU,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,oBAAoB,CAAC,CAAC;AAAA,QACjE,KAAK;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,QAAQ,QAAQ,OAAO,IAAI,QAAQ,mBAAmB,IAAI;AAClE,QAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,YAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,aAAO,SAAS,MAAM,KAAK,MAAM;AACjC,YAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AACnE,cAAQ,KAAK,GAAG,QAAQ,IAAI,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,MAAAA,MAAK,MAAM,KAAK,aAAaA,KAAI,CAAC;AAAA,IACjG;AAEA,UAAM,OAAO,MAAM,KAAK,OAAO,iBAAiB;AAEhD,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAAmB;AAAA,IAC5B;AAEA,UAAM,MAAO,KAAmB,CAAC;AAEjC,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAO,aAAa,GAAG;AAAA,IACxB;AAEA,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,MAAqB,mBAAmB;AAAA,IACxE;AAEA,WAAO;AAAA,MACN,KAAK;AAAA,MACL,MAAM,UAAU,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,oBAAoB,CAAC,CAAC;AAAA,MACjE,KAAK;AAAA,IACN;AAAA,EACD;AAAA,EAEA,OAAO,mBAAmE;AACzE,UAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,UAAM,OAAoB,EAAE,KAAK,KAAK,MAAM,KAAK,MAAM,OAAiB;AACxE,YAAQ,KAAK,KAAK,KAAK,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,KAAK,MAAM,IAAI;AAAA,EAG7F;AAAA;AAAA,EAGA,wBAAiC;AAChC,WAAO,KAAK;AAAA,EACb;AACD;AAEA,SAAS,aAAa,KAAU;AAK/B,SAAO,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,KAA0B,QAAQ;AACjE,QAAI,OAAO,UAAU,qBAAqB,KAAK,KAAK,GAAG,GAAG;AACzD,UAAI,GAAG,IAAI,IAAI,GAAG;AAAA,IACnB;AACA,WAAO;AAAA,EACR,GAAG,CAAC,CAAC;AACN;AAEA,SAAS,oBAAoB,OAAgB;AAC5C,MAAI,OAAO,gBAAgB,eAAe,iBAAiB,aAAa;AACvE,QAAI,OAAO,WAAW,aAAa;AAClC,UAAI,EAAE,iBAAiB,SAAS;AAC/B,eAAO,OAAO,KAAK,KAAK;AAAA,MACzB;AACA,aAAO;AAAA,IACR;AACA,QAAI,OAAO,gBAAgB,aAAa;AACvC,aAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AAAA,IACtC;AACA,UAAM,IAAI,MAAM,qFAAqF;AAAA,EACtG;AACA,SAAO;AACR;","names":["rows"]}
1
+ {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\tasync migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.migrate(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TSchema>('async', this.dialect, session, this.schema);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(transaction: (tx: LibSQLTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
package/migrator.cjs CHANGED
@@ -33,19 +33,8 @@ __export(migrator_exports, {
33
33
  module.exports = __toCommonJS(migrator_exports);
34
34
  var import_node_crypto = __toESM(require("node:crypto"), 1);
35
35
  var import_node_fs = __toESM(require("node:fs"), 1);
36
- var import_node_path = __toESM(require("node:path"), 1);
37
36
  function readMigrationFiles(config) {
38
- let migrationFolderTo;
39
- if (typeof config === "string") {
40
- const configAsString = import_node_fs.default.readFileSync(import_node_path.default.resolve(".", config), "utf8");
41
- const jsonConfig = JSON.parse(configAsString);
42
- migrationFolderTo = jsonConfig.out;
43
- } else {
44
- migrationFolderTo = config.migrationsFolder;
45
- }
46
- if (!migrationFolderTo) {
47
- throw new Error("no migration folder defined");
48
- }
37
+ const migrationFolderTo = config.migrationsFolder;
49
38
  const migrationQueries = [];
50
39
  const journalPath = `${migrationFolderTo}/meta/_journal.json`;
51
40
  if (!import_node_fs.default.existsSync(journalPath)) {
package/migrator.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[] {\n\tlet migrationFolderTo: string | undefined;\n\tif (typeof config === 'string') {\n\t\tconst configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');\n\t\tconst jsonConfig = JSON.parse(configAsString) as KitConfig;\n\t\tmigrationFolderTo = jsonConfig.out;\n\t} else {\n\t\tmigrationFolderTo = config.migrationsFolder;\n\t}\n\n\tif (!migrationFolderTo) {\n\t\tthrow new Error('no migration folder defined');\n\t}\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAmB;AACnB,qBAAe;AACf,uBAAiB;AAoBV,SAAS,mBAAmB,QAAmD;AACrF,MAAI;AACJ,MAAI,OAAO,WAAW,UAAU;AAC/B,UAAM,iBAAiB,eAAAA,QAAG,aAAa,iBAAAC,QAAK,QAAQ,KAAK,MAAM,GAAG,MAAM;AACxE,UAAM,aAAa,KAAK,MAAM,cAAc;AAC5C,wBAAoB,WAAW;AAAA,EAChC,OAAO;AACN,wBAAoB,OAAO;AAAA,EAC5B;AAEA,MAAI,CAAC,mBAAmB;AACvB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC9C;AAEA,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,eAAAD,QAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,eAAAA,QAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,eAAAA,QAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,mBAAAE,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":["fs","path","crypto"]}
1
+ {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAmB;AACnB,qBAAe;AAoBR,SAAS,mBAAmB,QAA0C;AAC5E,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,eAAAA,QAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,eAAAA,QAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,eAAAA,QAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,mBAAAC,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":["fs","crypto"]}
package/migrator.d.cts CHANGED
@@ -13,4 +13,4 @@ export interface MigrationMeta {
13
13
  hash: string;
14
14
  bps: boolean;
15
15
  }
16
- export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
16
+ export declare function readMigrationFiles(config: MigrationConfig): MigrationMeta[];
package/migrator.d.ts CHANGED
@@ -13,4 +13,4 @@ export interface MigrationMeta {
13
13
  hash: string;
14
14
  bps: boolean;
15
15
  }
16
- export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
16
+ export declare function readMigrationFiles(config: MigrationConfig): MigrationMeta[];
package/migrator.js CHANGED
@@ -1,18 +1,7 @@
1
1
  import crypto from "node:crypto";
2
2
  import fs from "node:fs";
3
- import path from "node:path";
4
3
  function readMigrationFiles(config) {
5
- let migrationFolderTo;
6
- if (typeof config === "string") {
7
- const configAsString = fs.readFileSync(path.resolve(".", config), "utf8");
8
- const jsonConfig = JSON.parse(configAsString);
9
- migrationFolderTo = jsonConfig.out;
10
- } else {
11
- migrationFolderTo = config.migrationsFolder;
12
- }
13
- if (!migrationFolderTo) {
14
- throw new Error("no migration folder defined");
15
- }
4
+ const migrationFolderTo = config.migrationsFolder;
16
5
  const migrationQueries = [];
17
6
  const journalPath = `${migrationFolderTo}/meta/_journal.json`;
18
7
  if (!fs.existsSync(journalPath)) {
package/migrator.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[] {\n\tlet migrationFolderTo: string | undefined;\n\tif (typeof config === 'string') {\n\t\tconst configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');\n\t\tconst jsonConfig = JSON.parse(configAsString) as KitConfig;\n\t\tmigrationFolderTo = jsonConfig.out;\n\t} else {\n\t\tmigrationFolderTo = config.migrationsFolder;\n\t}\n\n\tif (!migrationFolderTo) {\n\t\tthrow new Error('no migration folder defined');\n\t}\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,OAAO,QAAQ;AACf,OAAO,UAAU;AAoBV,SAAS,mBAAmB,QAAmD;AACrF,MAAI;AACJ,MAAI,OAAO,WAAW,UAAU;AAC/B,UAAM,iBAAiB,GAAG,aAAa,KAAK,QAAQ,KAAK,MAAM,GAAG,MAAM;AACxE,UAAM,aAAa,KAAK,MAAM,cAAc;AAC5C,wBAAoB,WAAW;AAAA,EAChC,OAAO;AACN,wBAAoB,OAAO;AAAA,EAC5B;AAEA,MAAI,CAAC,mBAAmB;AACvB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC9C;AAEA,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,GAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\tif (!fs.existsSync(journalPath)) {\n\t\tthrow new Error(`Can't find meta/_journal.json file`);\n\t}\n\n\tconst journalAsString = fs.readFileSync(`${migrationFolderTo}/meta/_journal.json`).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,OAAO,QAAQ;AAoBR,SAAS,mBAAmB,QAA0C;AAC5E,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AACxC,MAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACrD;AAEA,QAAM,kBAAkB,GAAG,aAAa,GAAG,iBAAiB,qBAAqB,EAAE,SAAS;AAE5F,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
package/monodriver.cjs ADDED
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
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
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var monodriver_exports = {};
30
+ __export(monodriver_exports, {
31
+ drizzle: () => drizzle
32
+ });
33
+ module.exports = __toCommonJS(monodriver_exports);
34
+ const importError = (libName) => {
35
+ throw new Error(
36
+ `Please install '${libName}' to allow Drizzle ORM to connect to the database`
37
+ );
38
+ };
39
+ function assertUnreachable(_) {
40
+ throw new Error("Didn't expect to get here");
41
+ }
42
+ async function drizzle(client, ...params) {
43
+ switch (client) {
44
+ case "node-postgres": {
45
+ const defpg = await import("pg").catch(() => importError("pg"));
46
+ const { drizzle: drizzle2 } = await import("./node-postgres");
47
+ if (typeof params[0] === "object") {
48
+ const { connection, ...drizzleConfig } = params[0];
49
+ const instance2 = typeof connection === "string" ? new defpg.default.Pool({
50
+ connectionString: connection
51
+ }) : new defpg.default.Pool(connection);
52
+ const db2 = drizzle2(instance2, drizzleConfig);
53
+ return db2;
54
+ }
55
+ const instance = typeof params[0] === "string" ? new defpg.default.Pool({
56
+ connectionString: params[0]
57
+ }) : new defpg.default.Pool(params[0]);
58
+ const db = drizzle2(instance);
59
+ return db;
60
+ }
61
+ case "aws-data-api-pg": {
62
+ const { connection, ...drizzleConfig } = params[0];
63
+ const { resourceArn, database, secretArn, ...rdsConfig } = connection;
64
+ const { RDSDataClient } = await import("@aws-sdk/client-rds-data").catch(
65
+ () => importError("@aws-sdk/client-rds-data")
66
+ );
67
+ const { drizzle: drizzle2 } = await import("./aws-data-api/pg");
68
+ const instance = new RDSDataClient(rdsConfig);
69
+ const db = drizzle2(instance, { resourceArn, database, secretArn, ...drizzleConfig });
70
+ return db;
71
+ }
72
+ case "better-sqlite3": {
73
+ const { default: Client } = await import("better-sqlite3").catch(() => importError("better-sqlite3"));
74
+ const { drizzle: drizzle2 } = await import("./better-sqlite3");
75
+ if (typeof params[0] === "object") {
76
+ const { connection, ...drizzleConfig } = params[0];
77
+ if (typeof connection === "object") {
78
+ const { source, ...options } = connection;
79
+ const instance3 = new Client(source, options);
80
+ const db3 = drizzle2(instance3, drizzleConfig);
81
+ return db3;
82
+ }
83
+ const instance2 = new Client(connection);
84
+ const db2 = drizzle2(instance2, drizzleConfig);
85
+ return db2;
86
+ }
87
+ const instance = new Client(params[0]);
88
+ const db = drizzle2(instance);
89
+ return db;
90
+ }
91
+ case "bun:sqlite": {
92
+ const { Database: Client } = await import("bun:sqlite").catch(() => {
93
+ throw new Error(`Please use bun to use 'bun:sqlite' for Drizzle ORM to connect to database`);
94
+ });
95
+ const { drizzle: drizzle2 } = await import("./bun-sqlite");
96
+ if (typeof params[0] === "object") {
97
+ const { connection, ...drizzleConfig } = params[0];
98
+ if (typeof connection === "object") {
99
+ const { source, ...opts } = connection;
100
+ const options = Object.values(opts).filter((v) => v !== void 0).length ? opts : void 0;
101
+ const instance3 = new Client(source, options);
102
+ const db3 = drizzle2(instance3, drizzleConfig);
103
+ return db3;
104
+ }
105
+ const instance2 = new Client(connection);
106
+ const db2 = drizzle2(instance2, drizzleConfig);
107
+ return db2;
108
+ }
109
+ const instance = new Client(params[0]);
110
+ const db = drizzle2(instance);
111
+ return db;
112
+ }
113
+ case "d1": {
114
+ const { connection, ...drizzleConfig } = params[0];
115
+ const { drizzle: drizzle2 } = await import("./d1");
116
+ const db = drizzle2(connection, drizzleConfig);
117
+ return db;
118
+ }
119
+ case "libsql":
120
+ case "turso": {
121
+ const { createClient } = await import("@libsql/client").catch(() => importError("@libsql/client"));
122
+ const { drizzle: drizzle2 } = await import("./libsql");
123
+ if (typeof params[0] === "string") {
124
+ const instance2 = createClient({
125
+ url: params[0]
126
+ });
127
+ const db2 = drizzle2(instance2);
128
+ return db2;
129
+ }
130
+ const { connection, ...drizzleConfig } = params[0];
131
+ const instance = typeof connection === "string" ? createClient({ url: connection }) : createClient(connection);
132
+ const db = drizzle2(instance, drizzleConfig);
133
+ return db;
134
+ }
135
+ case "mysql2": {
136
+ const { createPool } = await import("mysql2/promise").catch(() => importError("mysql2"));
137
+ const { drizzle: drizzle2 } = await import("./mysql2");
138
+ if (typeof params[0] === "object") {
139
+ const { connection, ...drizzleConfig } = params[0];
140
+ const instance2 = createPool(connection);
141
+ const db2 = drizzle2(instance2, drizzleConfig);
142
+ return db2;
143
+ }
144
+ const connectionString = params[0];
145
+ const instance = createPool(connectionString);
146
+ const db = drizzle2(instance);
147
+ return db;
148
+ }
149
+ case "neon-http": {
150
+ const { neon } = await import("@neondatabase/serverless").catch(() => importError("@neondatabase/serverless"));
151
+ const { drizzle: drizzle2 } = await import("./neon-http");
152
+ if (typeof params[0] === "object") {
153
+ const { connection, ...drizzleConfig } = params[0];
154
+ if (typeof connection === "object") {
155
+ const { connectionString, ...options } = connection;
156
+ const instance3 = neon(connectionString, options);
157
+ const db3 = drizzle2(instance3, drizzleConfig);
158
+ return db3;
159
+ }
160
+ const instance2 = neon(connection);
161
+ const db2 = drizzle2(instance2, drizzleConfig);
162
+ return db2;
163
+ }
164
+ const instance = neon(params[0]);
165
+ const db = drizzle2(instance);
166
+ return db;
167
+ }
168
+ case "neon-websocket": {
169
+ const { Pool, neonConfig } = await import("@neondatabase/serverless").catch(
170
+ () => importError("@neondatabase/serverless")
171
+ );
172
+ const { drizzle: drizzle2 } = await import("./neon-serverless");
173
+ if (typeof params[0] === "string") {
174
+ const instance2 = new Pool({
175
+ connectionString: params[0]
176
+ });
177
+ const db2 = drizzle2(instance2);
178
+ return db2;
179
+ }
180
+ if (typeof params[0] === "object") {
181
+ const { connection, ws, ...drizzleConfig } = params[0];
182
+ if (ws) {
183
+ neonConfig.webSocketConstructor = ws;
184
+ }
185
+ const instance2 = typeof connection === "string" ? new Pool({
186
+ connectionString: connection
187
+ }) : new Pool(connection);
188
+ const db2 = drizzle2(instance2, drizzleConfig);
189
+ return db2;
190
+ }
191
+ const instance = new Pool();
192
+ const db = drizzle2(instance);
193
+ return db;
194
+ }
195
+ case "planetscale": {
196
+ const { Client } = await import("@planetscale/database").catch(() => importError("@planetscale/database"));
197
+ const { drizzle: drizzle2 } = await import("./planetscale-serverless");
198
+ if (typeof params[0] === "object") {
199
+ const { connection, ...drizzleConfig } = params[0];
200
+ const instance2 = typeof connection === "string" ? new Client({
201
+ url: connection
202
+ }) : new Client(
203
+ connection
204
+ );
205
+ const db2 = drizzle2(instance2, drizzleConfig);
206
+ return db2;
207
+ }
208
+ const instance = new Client({
209
+ url: params[0]
210
+ });
211
+ const db = drizzle2(instance);
212
+ return db;
213
+ }
214
+ case "postgres-js": {
215
+ const { default: client2 } = await import("postgres").catch(() => importError("postgres"));
216
+ const { drizzle: drizzle2 } = await import("./postgres-js");
217
+ if (typeof params[0] === "object") {
218
+ const { connection, ...drizzleConfig } = params[0];
219
+ if (typeof connection === "object" && connection.url !== void 0) {
220
+ const { url, ...config } = connection;
221
+ const instance3 = client2(url, config);
222
+ const db3 = drizzle2(instance3, drizzleConfig);
223
+ return db3;
224
+ }
225
+ const instance2 = client2(connection);
226
+ const db2 = drizzle2(instance2, drizzleConfig);
227
+ return db2;
228
+ }
229
+ const instance = client2(params[0]);
230
+ const db = drizzle2(instance);
231
+ return db;
232
+ }
233
+ case "tidb-serverless": {
234
+ const { connect } = await import("@tidbcloud/serverless").catch(() => importError("@tidbcloud/serverless"));
235
+ const { drizzle: drizzle2 } = await import("./tidb-serverless");
236
+ if (typeof params[0] === "string") {
237
+ const instance2 = connect({
238
+ url: params[0]
239
+ });
240
+ const db2 = drizzle2(instance2);
241
+ return db2;
242
+ }
243
+ const { connection, ...drizzleConfig } = params[0];
244
+ const instance = typeof connection === "string" ? connect({
245
+ url: connection
246
+ }) : connect(connection);
247
+ const db = drizzle2(instance, drizzleConfig);
248
+ return db;
249
+ }
250
+ case "vercel-postgres": {
251
+ const drizzleConfig = params[0];
252
+ const { sql } = await import("@vercel/postgres").catch(() => importError("@vercel/postgres"));
253
+ const { drizzle: drizzle2 } = await import("./vercel-postgres");
254
+ const db = drizzle2(sql, drizzleConfig);
255
+ return db;
256
+ }
257
+ case "pglite": {
258
+ const { PGlite } = await import("@electric-sql/pglite").catch(() => importError("@electric-sql/pglite"));
259
+ const { drizzle: drizzle2 } = await import("./pglite");
260
+ if (typeof params[0] === "object") {
261
+ const { connection, ...drizzleConfig } = params[0];
262
+ if (typeof connection === "object") {
263
+ const { dataDir, ...options } = connection;
264
+ const instance3 = new PGlite(dataDir, options);
265
+ const db3 = drizzle2(instance3, drizzleConfig);
266
+ return db3;
267
+ }
268
+ const instance2 = new PGlite(connection);
269
+ const db2 = drizzle2(instance2, drizzleConfig);
270
+ return db2;
271
+ }
272
+ const instance = new PGlite(params[0]);
273
+ const db = drizzle2(instance);
274
+ return db;
275
+ }
276
+ }
277
+ assertUnreachable(client);
278
+ }
279
+ // Annotate the CommonJS export names for ESM import in node:
280
+ 0 && (module.exports = {
281
+ drizzle
282
+ });
283
+ //# sourceMappingURL=monodriver.cjs.map