drizzle-orm 1.0.0-beta.1-199e5ec → 1.0.0-beta.1-388a474

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 (674) hide show
  1. package/aws-data-api/pg/driver.cjs +6 -1
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +1 -0
  4. package/aws-data-api/pg/driver.d.ts +1 -0
  5. package/aws-data-api/pg/driver.js +6 -1
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/session.cjs +19 -6
  8. package/aws-data-api/pg/session.cjs.map +1 -1
  9. package/aws-data-api/pg/session.d.cts +13 -2
  10. package/aws-data-api/pg/session.d.ts +13 -2
  11. package/aws-data-api/pg/session.js +19 -6
  12. package/aws-data-api/pg/session.js.map +1 -1
  13. package/better-sqlite3/driver.cjs +1 -2
  14. package/better-sqlite3/driver.cjs.map +1 -1
  15. package/better-sqlite3/driver.js +1 -2
  16. package/better-sqlite3/driver.js.map +1 -1
  17. package/better-sqlite3/session.cjs +15 -9
  18. package/better-sqlite3/session.cjs.map +1 -1
  19. package/better-sqlite3/session.d.cts +12 -2
  20. package/better-sqlite3/session.d.ts +12 -2
  21. package/better-sqlite3/session.js +15 -9
  22. package/better-sqlite3/session.js.map +1 -1
  23. package/bun-sql/driver.cjs +6 -3
  24. package/bun-sql/driver.cjs.map +1 -1
  25. package/bun-sql/driver.js +6 -3
  26. package/bun-sql/driver.js.map +1 -1
  27. package/bun-sql/session.cjs +25 -11
  28. package/bun-sql/session.cjs.map +1 -1
  29. package/bun-sql/session.d.cts +12 -2
  30. package/bun-sql/session.d.ts +12 -2
  31. package/bun-sql/session.js +25 -11
  32. package/bun-sql/session.js.map +1 -1
  33. package/bun-sqlite/driver.cjs +1 -2
  34. package/bun-sqlite/driver.cjs.map +1 -1
  35. package/bun-sqlite/driver.js +1 -2
  36. package/bun-sqlite/driver.js.map +1 -1
  37. package/bun-sqlite/session.cjs +3 -6
  38. package/bun-sqlite/session.cjs.map +1 -1
  39. package/bun-sqlite/session.js +3 -6
  40. package/bun-sqlite/session.js.map +1 -1
  41. package/cache/core/cache.cjs +58 -0
  42. package/cache/core/cache.cjs.map +1 -0
  43. package/cache/core/cache.d.cts +36 -0
  44. package/cache/core/cache.d.ts +36 -0
  45. package/cache/core/cache.js +32 -0
  46. package/cache/core/cache.js.map +1 -0
  47. package/cache/core/index.cjs +23 -0
  48. package/cache/core/index.cjs.map +1 -0
  49. package/cache/core/index.d.cts +1 -0
  50. package/cache/core/index.d.ts +1 -0
  51. package/cache/core/index.js +2 -0
  52. package/cache/core/index.js.map +1 -0
  53. package/cache/core/types.cjs +17 -0
  54. package/cache/core/types.cjs.map +1 -0
  55. package/cache/core/types.d.cts +33 -0
  56. package/cache/core/types.d.ts +33 -0
  57. package/cache/core/types.js +1 -0
  58. package/cache/core/types.js.map +1 -0
  59. package/cache/upstash/cache.cjs +195 -0
  60. package/cache/upstash/cache.cjs.map +1 -0
  61. package/cache/upstash/cache.d.cts +59 -0
  62. package/cache/upstash/cache.d.ts +59 -0
  63. package/cache/upstash/cache.js +170 -0
  64. package/cache/upstash/cache.js.map +1 -0
  65. package/cache/upstash/index.cjs +23 -0
  66. package/cache/upstash/index.cjs.map +1 -0
  67. package/cache/upstash/index.d.cts +1 -0
  68. package/cache/upstash/index.d.ts +1 -0
  69. package/cache/upstash/index.js +2 -0
  70. package/cache/upstash/index.js.map +1 -0
  71. package/casing.cjs +2 -4
  72. package/casing.cjs.map +1 -1
  73. package/casing.js +2 -4
  74. package/casing.js.map +1 -1
  75. package/column-builder.cjs +1 -2
  76. package/column-builder.cjs.map +1 -1
  77. package/column-builder.js +1 -2
  78. package/column-builder.js.map +1 -1
  79. package/d1/driver.cjs +8 -1
  80. package/d1/driver.cjs.map +1 -1
  81. package/d1/driver.js +8 -1
  82. package/d1/driver.js.map +1 -1
  83. package/d1/session.cjs +28 -13
  84. package/d1/session.cjs.map +1 -1
  85. package/d1/session.d.cts +12 -2
  86. package/d1/session.d.ts +12 -2
  87. package/d1/session.js +28 -13
  88. package/d1/session.js.map +1 -1
  89. package/durable-sqlite/session.cjs +3 -5
  90. package/durable-sqlite/session.cjs.map +1 -1
  91. package/durable-sqlite/session.js +3 -5
  92. package/durable-sqlite/session.js.map +1 -1
  93. package/errors.cjs +14 -0
  94. package/errors.cjs.map +1 -1
  95. package/errors.d.cts +7 -0
  96. package/errors.d.ts +7 -0
  97. package/errors.js +13 -0
  98. package/errors.js.map +1 -1
  99. package/expo-sqlite/session.cjs +2 -4
  100. package/expo-sqlite/session.cjs.map +1 -1
  101. package/expo-sqlite/session.js +2 -4
  102. package/expo-sqlite/session.js.map +1 -1
  103. package/gel/driver.cjs +10 -4
  104. package/gel/driver.cjs.map +1 -1
  105. package/gel/driver.d.cts +3 -1
  106. package/gel/driver.d.ts +3 -1
  107. package/gel/driver.js +10 -4
  108. package/gel/driver.js.map +1 -1
  109. package/gel/session.cjs +29 -12
  110. package/gel/session.cjs.map +1 -1
  111. package/gel/session.d.cts +12 -2
  112. package/gel/session.d.ts +12 -2
  113. package/gel/session.js +29 -12
  114. package/gel/session.js.map +1 -1
  115. package/gel-core/columns/custom.cjs +1 -2
  116. package/gel-core/columns/custom.cjs.map +1 -1
  117. package/gel-core/columns/custom.js +1 -2
  118. package/gel-core/columns/custom.js.map +1 -1
  119. package/gel-core/columns/timestamptz.cjs +1 -2
  120. package/gel-core/columns/timestamptz.cjs.map +1 -1
  121. package/gel-core/columns/timestamptz.js +1 -2
  122. package/gel-core/columns/timestamptz.js.map +1 -1
  123. package/gel-core/db.cjs +3 -0
  124. package/gel-core/db.cjs.map +1 -1
  125. package/gel-core/db.d.cts +4 -0
  126. package/gel-core/db.d.ts +4 -0
  127. package/gel-core/db.js +3 -0
  128. package/gel-core/db.js.map +1 -1
  129. package/gel-core/dialect.cjs +9 -16
  130. package/gel-core/dialect.cjs.map +1 -1
  131. package/gel-core/dialect.js +9 -16
  132. package/gel-core/dialect.js.map +1 -1
  133. package/gel-core/query-builders/delete.cjs +5 -1
  134. package/gel-core/query-builders/delete.cjs.map +1 -1
  135. package/gel-core/query-builders/delete.js +5 -1
  136. package/gel-core/query-builders/delete.js.map +1 -1
  137. package/gel-core/query-builders/insert.cjs +5 -1
  138. package/gel-core/query-builders/insert.cjs.map +1 -1
  139. package/gel-core/query-builders/insert.js +5 -1
  140. package/gel-core/query-builders/insert.js.map +1 -1
  141. package/gel-core/query-builders/select.cjs +26 -4
  142. package/gel-core/query-builders/select.cjs.map +1 -1
  143. package/gel-core/query-builders/select.d.cts +18 -9
  144. package/gel-core/query-builders/select.d.ts +18 -9
  145. package/gel-core/query-builders/select.js +26 -4
  146. package/gel-core/query-builders/select.js.map +1 -1
  147. package/gel-core/query-builders/select.types.cjs.map +1 -1
  148. package/gel-core/query-builders/select.types.d.cts +2 -1
  149. package/gel-core/query-builders/select.types.d.ts +2 -1
  150. package/gel-core/query-builders/update.cjs +5 -1
  151. package/gel-core/query-builders/update.cjs.map +1 -1
  152. package/gel-core/query-builders/update.js +5 -1
  153. package/gel-core/query-builders/update.js.map +1 -1
  154. package/gel-core/session.cjs +77 -1
  155. package/gel-core/session.cjs.map +1 -1
  156. package/gel-core/session.d.cts +13 -2
  157. package/gel-core/session.d.ts +13 -2
  158. package/gel-core/session.js +79 -3
  159. package/gel-core/session.js.map +1 -1
  160. package/gel-core/utils.cjs +16 -0
  161. package/gel-core/utils.cjs.map +1 -1
  162. package/gel-core/utils.d.cts +8 -4
  163. package/gel-core/utils.d.ts +8 -4
  164. package/gel-core/utils.js +15 -0
  165. package/gel-core/utils.js.map +1 -1
  166. package/index.cjs +16 -16
  167. package/index.cjs.map +1 -1
  168. package/libsql/driver-core.cjs +5 -1
  169. package/libsql/driver-core.cjs.map +1 -1
  170. package/libsql/driver-core.js +5 -1
  171. package/libsql/driver-core.js.map +1 -1
  172. package/libsql/driver.cjs +1 -2
  173. package/libsql/driver.cjs.map +1 -1
  174. package/libsql/driver.js +1 -2
  175. package/libsql/driver.js.map +1 -1
  176. package/libsql/http/index.cjs +1 -2
  177. package/libsql/http/index.cjs.map +1 -1
  178. package/libsql/http/index.js +1 -2
  179. package/libsql/http/index.js.map +1 -1
  180. package/libsql/node/index.cjs +1 -2
  181. package/libsql/node/index.cjs.map +1 -1
  182. package/libsql/node/index.js +1 -2
  183. package/libsql/node/index.js.map +1 -1
  184. package/libsql/session.cjs +33 -19
  185. package/libsql/session.cjs.map +1 -1
  186. package/libsql/session.d.cts +12 -2
  187. package/libsql/session.d.ts +12 -2
  188. package/libsql/session.js +33 -19
  189. package/libsql/session.js.map +1 -1
  190. package/libsql/sqlite3/index.cjs +1 -2
  191. package/libsql/sqlite3/index.cjs.map +1 -1
  192. package/libsql/sqlite3/index.js +1 -2
  193. package/libsql/sqlite3/index.js.map +1 -1
  194. package/libsql/wasm/index.cjs +1 -2
  195. package/libsql/wasm/index.cjs.map +1 -1
  196. package/libsql/wasm/index.js +1 -2
  197. package/libsql/wasm/index.js.map +1 -1
  198. package/libsql/web/index.cjs +1 -2
  199. package/libsql/web/index.cjs.map +1 -1
  200. package/libsql/web/index.js +1 -2
  201. package/libsql/web/index.js.map +1 -1
  202. package/libsql/ws/index.cjs +1 -2
  203. package/libsql/ws/index.cjs.map +1 -1
  204. package/libsql/ws/index.js +1 -2
  205. package/libsql/ws/index.js.map +1 -1
  206. package/mysql-core/columns/binary.cjs +2 -4
  207. package/mysql-core/columns/binary.cjs.map +1 -1
  208. package/mysql-core/columns/binary.js +2 -4
  209. package/mysql-core/columns/binary.js.map +1 -1
  210. package/mysql-core/columns/custom.cjs +1 -2
  211. package/mysql-core/columns/custom.cjs.map +1 -1
  212. package/mysql-core/columns/custom.js +1 -2
  213. package/mysql-core/columns/custom.js.map +1 -1
  214. package/mysql-core/columns/decimal.cjs +2 -4
  215. package/mysql-core/columns/decimal.cjs.map +1 -1
  216. package/mysql-core/columns/decimal.js +2 -4
  217. package/mysql-core/columns/decimal.js.map +1 -1
  218. package/mysql-core/columns/varbinary.cjs +2 -4
  219. package/mysql-core/columns/varbinary.cjs.map +1 -1
  220. package/mysql-core/columns/varbinary.js +2 -4
  221. package/mysql-core/columns/varbinary.js.map +1 -1
  222. package/mysql-core/db.cjs +17 -0
  223. package/mysql-core/db.cjs.map +1 -1
  224. package/mysql-core/db.d.cts +4 -0
  225. package/mysql-core/db.d.ts +4 -0
  226. package/mysql-core/db.js +17 -0
  227. package/mysql-core/db.js.map +1 -1
  228. package/mysql-core/dialect.cjs +8 -16
  229. package/mysql-core/dialect.cjs.map +1 -1
  230. package/mysql-core/dialect.js +8 -16
  231. package/mysql-core/dialect.js.map +1 -1
  232. package/mysql-core/query-builders/delete.cjs +9 -1
  233. package/mysql-core/query-builders/delete.cjs.map +1 -1
  234. package/mysql-core/query-builders/delete.js +9 -1
  235. package/mysql-core/query-builders/delete.js.map +1 -1
  236. package/mysql-core/query-builders/insert.cjs +8 -1
  237. package/mysql-core/query-builders/insert.cjs.map +1 -1
  238. package/mysql-core/query-builders/insert.d.cts +2 -0
  239. package/mysql-core/query-builders/insert.d.ts +2 -0
  240. package/mysql-core/query-builders/insert.js +8 -1
  241. package/mysql-core/query-builders/insert.js.map +1 -1
  242. package/mysql-core/query-builders/select.cjs +24 -3
  243. package/mysql-core/query-builders/select.cjs.map +1 -1
  244. package/mysql-core/query-builders/select.d.cts +17 -8
  245. package/mysql-core/query-builders/select.d.ts +17 -8
  246. package/mysql-core/query-builders/select.js +25 -4
  247. package/mysql-core/query-builders/select.js.map +1 -1
  248. package/mysql-core/query-builders/select.types.cjs.map +1 -1
  249. package/mysql-core/query-builders/select.types.d.cts +2 -1
  250. package/mysql-core/query-builders/select.types.d.ts +2 -1
  251. package/mysql-core/query-builders/update.cjs +11 -1
  252. package/mysql-core/query-builders/update.cjs.map +1 -1
  253. package/mysql-core/query-builders/update.d.cts +2 -0
  254. package/mysql-core/query-builders/update.d.ts +2 -0
  255. package/mysql-core/query-builders/update.js +11 -1
  256. package/mysql-core/query-builders/update.js.map +1 -1
  257. package/mysql-core/session.cjs +78 -0
  258. package/mysql-core/session.cjs.map +1 -1
  259. package/mysql-core/session.d.cts +14 -1
  260. package/mysql-core/session.d.ts +14 -1
  261. package/mysql-core/session.js +80 -2
  262. package/mysql-core/session.js.map +1 -1
  263. package/mysql-core/utils.cjs +16 -0
  264. package/mysql-core/utils.cjs.map +1 -1
  265. package/mysql-core/utils.d.cts +6 -2
  266. package/mysql-core/utils.d.ts +6 -2
  267. package/mysql-core/utils.js +15 -0
  268. package/mysql-core/utils.js.map +1 -1
  269. package/mysql-proxy/session.cjs +19 -7
  270. package/mysql-proxy/session.cjs.map +1 -1
  271. package/mysql-proxy/session.d.cts +12 -2
  272. package/mysql-proxy/session.d.ts +12 -2
  273. package/mysql-proxy/session.js +19 -7
  274. package/mysql-proxy/session.js.map +1 -1
  275. package/mysql2/driver.cjs +11 -4
  276. package/mysql2/driver.cjs.map +1 -1
  277. package/mysql2/driver.d.cts +3 -1
  278. package/mysql2/driver.d.ts +3 -1
  279. package/mysql2/driver.js +11 -4
  280. package/mysql2/driver.js.map +1 -1
  281. package/mysql2/session.cjs +19 -7
  282. package/mysql2/session.cjs.map +1 -1
  283. package/mysql2/session.d.cts +12 -2
  284. package/mysql2/session.d.ts +12 -2
  285. package/mysql2/session.js +19 -7
  286. package/mysql2/session.js.map +1 -1
  287. package/neon/index.cjs +2 -2
  288. package/neon/index.cjs.map +1 -1
  289. package/neon/index.d.cts +1 -1
  290. package/neon/index.d.ts +1 -1
  291. package/neon/index.js +1 -1
  292. package/neon/index.js.map +1 -1
  293. package/neon/{neon-identity.cjs → neon-auth.cjs} +6 -5
  294. package/neon/neon-auth.cjs.map +1 -0
  295. package/neon/{neon-identity.d.cts → neon-auth.d.cts} +17 -0
  296. package/neon/{neon-identity.d.ts → neon-auth.d.ts} +17 -0
  297. package/neon/{neon-identity.js → neon-auth.js} +3 -2
  298. package/neon/neon-auth.js.map +1 -0
  299. package/neon-http/driver.cjs +11 -10
  300. package/neon-http/driver.cjs.map +1 -1
  301. package/neon-http/driver.d.cts +2 -0
  302. package/neon-http/driver.d.ts +2 -0
  303. package/neon-http/driver.js +11 -10
  304. package/neon-http/driver.js.map +1 -1
  305. package/neon-http/session.cjs +31 -19
  306. package/neon-http/session.cjs.map +1 -1
  307. package/neon-http/session.d.cts +12 -2
  308. package/neon-http/session.d.ts +12 -2
  309. package/neon-http/session.js +31 -19
  310. package/neon-http/session.js.map +1 -1
  311. package/neon-serverless/driver.cjs +10 -4
  312. package/neon-serverless/driver.cjs.map +1 -1
  313. package/neon-serverless/driver.d.cts +3 -1
  314. package/neon-serverless/driver.d.ts +3 -1
  315. package/neon-serverless/driver.js +10 -4
  316. package/neon-serverless/driver.js.map +1 -1
  317. package/neon-serverless/session.cjs +25 -9
  318. package/neon-serverless/session.cjs.map +1 -1
  319. package/neon-serverless/session.d.cts +12 -2
  320. package/neon-serverless/session.d.ts +12 -2
  321. package/neon-serverless/session.js +25 -9
  322. package/neon-serverless/session.js.map +1 -1
  323. package/node-postgres/driver.cjs +10 -4
  324. package/node-postgres/driver.cjs.map +1 -1
  325. package/node-postgres/driver.d.cts +7 -5
  326. package/node-postgres/driver.d.ts +7 -5
  327. package/node-postgres/driver.js +10 -4
  328. package/node-postgres/driver.js.map +1 -1
  329. package/node-postgres/session.cjs +23 -8
  330. package/node-postgres/session.cjs.map +1 -1
  331. package/node-postgres/session.d.cts +13 -2
  332. package/node-postgres/session.d.ts +13 -2
  333. package/node-postgres/session.js +23 -8
  334. package/node-postgres/session.js.map +1 -1
  335. package/op-sqlite/driver.cjs +5 -1
  336. package/op-sqlite/driver.cjs.map +1 -1
  337. package/op-sqlite/driver.js +5 -1
  338. package/op-sqlite/driver.js.map +1 -1
  339. package/op-sqlite/session.cjs +28 -13
  340. package/op-sqlite/session.cjs.map +1 -1
  341. package/op-sqlite/session.d.cts +12 -2
  342. package/op-sqlite/session.d.ts +12 -2
  343. package/op-sqlite/session.js +28 -13
  344. package/op-sqlite/session.js.map +1 -1
  345. package/package.json +78 -13
  346. package/pg-core/columns/bytea.cjs +1 -2
  347. package/pg-core/columns/bytea.cjs.map +1 -1
  348. package/pg-core/columns/bytea.js +1 -2
  349. package/pg-core/columns/bytea.js.map +1 -1
  350. package/pg-core/columns/common.cjs +1 -2
  351. package/pg-core/columns/common.cjs.map +1 -1
  352. package/pg-core/columns/common.js +1 -2
  353. package/pg-core/columns/common.js.map +1 -1
  354. package/pg-core/columns/custom.cjs +1 -2
  355. package/pg-core/columns/custom.cjs.map +1 -1
  356. package/pg-core/columns/custom.js +1 -2
  357. package/pg-core/columns/custom.js.map +1 -1
  358. package/pg-core/columns/numeric.cjs +2 -4
  359. package/pg-core/columns/numeric.cjs.map +1 -1
  360. package/pg-core/columns/numeric.js +2 -4
  361. package/pg-core/columns/numeric.js.map +1 -1
  362. package/pg-core/columns/postgis_extension/geometry.cjs +1 -2
  363. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  364. package/pg-core/columns/postgis_extension/geometry.js +1 -2
  365. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  366. package/pg-core/db.cjs +3 -0
  367. package/pg-core/db.cjs.map +1 -1
  368. package/pg-core/db.d.cts +4 -0
  369. package/pg-core/db.d.ts +4 -0
  370. package/pg-core/db.js +3 -0
  371. package/pg-core/db.js.map +1 -1
  372. package/pg-core/dialect.cjs +8 -16
  373. package/pg-core/dialect.cjs.map +1 -1
  374. package/pg-core/dialect.js +8 -16
  375. package/pg-core/dialect.js.map +1 -1
  376. package/pg-core/query-builders/delete.cjs +6 -1
  377. package/pg-core/query-builders/delete.cjs.map +1 -1
  378. package/pg-core/query-builders/delete.d.cts +3 -1
  379. package/pg-core/query-builders/delete.d.ts +3 -1
  380. package/pg-core/query-builders/delete.js +6 -1
  381. package/pg-core/query-builders/delete.js.map +1 -1
  382. package/pg-core/query-builders/insert.cjs +6 -1
  383. package/pg-core/query-builders/insert.cjs.map +1 -1
  384. package/pg-core/query-builders/insert.d.cts +2 -0
  385. package/pg-core/query-builders/insert.d.ts +2 -0
  386. package/pg-core/query-builders/insert.js +6 -1
  387. package/pg-core/query-builders/insert.js.map +1 -1
  388. package/pg-core/query-builders/select.cjs +28 -5
  389. package/pg-core/query-builders/select.cjs.map +1 -1
  390. package/pg-core/query-builders/select.d.cts +19 -10
  391. package/pg-core/query-builders/select.d.ts +19 -10
  392. package/pg-core/query-builders/select.js +28 -5
  393. package/pg-core/query-builders/select.js.map +1 -1
  394. package/pg-core/query-builders/select.types.cjs.map +1 -1
  395. package/pg-core/query-builders/select.types.d.cts +2 -1
  396. package/pg-core/query-builders/select.types.d.ts +2 -1
  397. package/pg-core/query-builders/update.cjs +6 -1
  398. package/pg-core/query-builders/update.cjs.map +1 -1
  399. package/pg-core/query-builders/update.d.cts +4 -2
  400. package/pg-core/query-builders/update.d.ts +4 -2
  401. package/pg-core/query-builders/update.js +6 -1
  402. package/pg-core/query-builders/update.js.map +1 -1
  403. package/pg-core/session.cjs +77 -1
  404. package/pg-core/session.cjs.map +1 -1
  405. package/pg-core/session.d.cts +13 -2
  406. package/pg-core/session.d.ts +13 -2
  407. package/pg-core/session.js +79 -3
  408. package/pg-core/session.js.map +1 -1
  409. package/pg-core/utils.cjs +16 -0
  410. package/pg-core/utils.cjs.map +1 -1
  411. package/pg-core/utils.d.cts +8 -4
  412. package/pg-core/utils.d.ts +8 -4
  413. package/pg-core/utils.js +16 -1
  414. package/pg-core/utils.js.map +1 -1
  415. package/pg-proxy/driver.cjs +7 -2
  416. package/pg-proxy/driver.cjs.map +1 -1
  417. package/pg-proxy/driver.js +7 -2
  418. package/pg-proxy/driver.js.map +1 -1
  419. package/pg-proxy/session.cjs +19 -7
  420. package/pg-proxy/session.cjs.map +1 -1
  421. package/pg-proxy/session.d.cts +12 -2
  422. package/pg-proxy/session.d.ts +12 -2
  423. package/pg-proxy/session.js +19 -7
  424. package/pg-proxy/session.js.map +1 -1
  425. package/pglite/driver.cjs +10 -4
  426. package/pglite/driver.cjs.map +1 -1
  427. package/pglite/driver.d.cts +2 -0
  428. package/pglite/driver.d.ts +2 -0
  429. package/pglite/driver.js +10 -4
  430. package/pglite/driver.js.map +1 -1
  431. package/pglite/session.cjs +23 -9
  432. package/pglite/session.cjs.map +1 -1
  433. package/pglite/session.d.cts +12 -2
  434. package/pglite/session.d.ts +12 -2
  435. package/pglite/session.js +23 -9
  436. package/pglite/session.js.map +1 -1
  437. package/planetscale-serverless/driver.cjs +9 -3
  438. package/planetscale-serverless/driver.cjs.map +1 -1
  439. package/planetscale-serverless/driver.d.cts +1 -0
  440. package/planetscale-serverless/driver.d.ts +1 -0
  441. package/planetscale-serverless/driver.js +9 -3
  442. package/planetscale-serverless/driver.js.map +1 -1
  443. package/planetscale-serverless/session.cjs +19 -7
  444. package/planetscale-serverless/session.cjs.map +1 -1
  445. package/planetscale-serverless/session.d.cts +12 -2
  446. package/planetscale-serverless/session.d.ts +12 -2
  447. package/planetscale-serverless/session.js +19 -7
  448. package/planetscale-serverless/session.js.map +1 -1
  449. package/postgres-js/driver.cjs +6 -3
  450. package/postgres-js/driver.cjs.map +1 -1
  451. package/postgres-js/driver.js +6 -3
  452. package/postgres-js/driver.js.map +1 -1
  453. package/postgres-js/session.cjs +22 -8
  454. package/postgres-js/session.cjs.map +1 -1
  455. package/postgres-js/session.d.cts +12 -2
  456. package/postgres-js/session.d.ts +12 -2
  457. package/postgres-js/session.js +22 -8
  458. package/postgres-js/session.js.map +1 -1
  459. package/prisma/mysql/session.cjs +1 -1
  460. package/prisma/mysql/session.cjs.map +1 -1
  461. package/prisma/mysql/session.js +1 -1
  462. package/prisma/mysql/session.js.map +1 -1
  463. package/prisma/pg/session.cjs +1 -1
  464. package/prisma/pg/session.cjs.map +1 -1
  465. package/prisma/pg/session.js +1 -1
  466. package/prisma/pg/session.js.map +1 -1
  467. package/query-builders/query-builder.cjs.map +1 -1
  468. package/query-builders/query-builder.d.cts +2 -1
  469. package/query-builders/query-builder.d.ts +2 -1
  470. package/query-builders/query-builder.js.map +1 -1
  471. package/relations.cjs +23 -46
  472. package/relations.cjs.map +1 -1
  473. package/relations.js +23 -46
  474. package/relations.js.map +1 -1
  475. package/singlestore/driver.cjs +24 -19
  476. package/singlestore/driver.cjs.map +1 -1
  477. package/singlestore/driver.d.cts +3 -1
  478. package/singlestore/driver.d.ts +3 -1
  479. package/singlestore/driver.js +24 -19
  480. package/singlestore/driver.js.map +1 -1
  481. package/singlestore/session.cjs +15 -5
  482. package/singlestore/session.cjs.map +1 -1
  483. package/singlestore/session.d.cts +12 -2
  484. package/singlestore/session.d.ts +12 -2
  485. package/singlestore/session.js +15 -5
  486. package/singlestore/session.js.map +1 -1
  487. package/singlestore-core/columns/binary.cjs +2 -4
  488. package/singlestore-core/columns/binary.cjs.map +1 -1
  489. package/singlestore-core/columns/binary.js +2 -4
  490. package/singlestore-core/columns/binary.js.map +1 -1
  491. package/singlestore-core/columns/custom.cjs +1 -2
  492. package/singlestore-core/columns/custom.cjs.map +1 -1
  493. package/singlestore-core/columns/custom.js +1 -2
  494. package/singlestore-core/columns/custom.js.map +1 -1
  495. package/singlestore-core/columns/decimal.cjs +2 -4
  496. package/singlestore-core/columns/decimal.cjs.map +1 -1
  497. package/singlestore-core/columns/decimal.js +2 -4
  498. package/singlestore-core/columns/decimal.js.map +1 -1
  499. package/singlestore-core/columns/enum.cjs +0 -1
  500. package/singlestore-core/columns/enum.cjs.map +1 -1
  501. package/singlestore-core/columns/enum.js +0 -1
  502. package/singlestore-core/columns/enum.js.map +1 -1
  503. package/singlestore-core/columns/varbinary.cjs +2 -4
  504. package/singlestore-core/columns/varbinary.cjs.map +1 -1
  505. package/singlestore-core/columns/varbinary.js +2 -4
  506. package/singlestore-core/columns/varbinary.js.map +1 -1
  507. package/singlestore-core/columns/vector.cjs.map +1 -1
  508. package/singlestore-core/columns/vector.js.map +1 -1
  509. package/singlestore-core/db.cjs +3 -0
  510. package/singlestore-core/db.cjs.map +1 -1
  511. package/singlestore-core/db.d.cts +4 -0
  512. package/singlestore-core/db.d.ts +4 -0
  513. package/singlestore-core/db.js +3 -0
  514. package/singlestore-core/db.js.map +1 -1
  515. package/singlestore-core/dialect.cjs +1 -2
  516. package/singlestore-core/dialect.cjs.map +1 -1
  517. package/singlestore-core/dialect.js +1 -2
  518. package/singlestore-core/dialect.js.map +1 -1
  519. package/singlestore-core/query-builders/delete.cjs +9 -1
  520. package/singlestore-core/query-builders/delete.cjs.map +1 -1
  521. package/singlestore-core/query-builders/delete.js +9 -1
  522. package/singlestore-core/query-builders/delete.js.map +1 -1
  523. package/singlestore-core/query-builders/insert.cjs +6 -1
  524. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  525. package/singlestore-core/query-builders/insert.js +6 -1
  526. package/singlestore-core/query-builders/insert.js.map +1 -1
  527. package/singlestore-core/query-builders/select.cjs +25 -3
  528. package/singlestore-core/query-builders/select.cjs.map +1 -1
  529. package/singlestore-core/query-builders/select.d.cts +18 -9
  530. package/singlestore-core/query-builders/select.d.ts +18 -9
  531. package/singlestore-core/query-builders/select.js +25 -3
  532. package/singlestore-core/query-builders/select.js.map +1 -1
  533. package/singlestore-core/query-builders/select.types.cjs.map +1 -1
  534. package/singlestore-core/query-builders/select.types.d.cts +2 -1
  535. package/singlestore-core/query-builders/select.types.d.ts +2 -1
  536. package/singlestore-core/query-builders/update.cjs +9 -1
  537. package/singlestore-core/query-builders/update.cjs.map +1 -1
  538. package/singlestore-core/query-builders/update.js +9 -1
  539. package/singlestore-core/query-builders/update.js.map +1 -1
  540. package/singlestore-core/session.cjs +78 -0
  541. package/singlestore-core/session.cjs.map +1 -1
  542. package/singlestore-core/session.d.cts +13 -1
  543. package/singlestore-core/session.d.ts +13 -1
  544. package/singlestore-core/session.js +80 -2
  545. package/singlestore-core/session.js.map +1 -1
  546. package/singlestore-core/utils.cjs +16 -0
  547. package/singlestore-core/utils.cjs.map +1 -1
  548. package/singlestore-core/utils.d.cts +3 -0
  549. package/singlestore-core/utils.d.ts +3 -0
  550. package/singlestore-core/utils.js +15 -0
  551. package/singlestore-core/utils.js.map +1 -1
  552. package/sql/sql.cjs +10 -0
  553. package/sql/sql.cjs.map +1 -1
  554. package/sql/sql.js +10 -0
  555. package/sql/sql.js.map +1 -1
  556. package/sql-js/session.cjs +3 -6
  557. package/sql-js/session.cjs.map +1 -1
  558. package/sql-js/session.js +3 -6
  559. package/sql-js/session.js.map +1 -1
  560. package/sqlite-core/columns/custom.cjs +1 -2
  561. package/sqlite-core/columns/custom.cjs.map +1 -1
  562. package/sqlite-core/columns/custom.js +1 -2
  563. package/sqlite-core/columns/custom.js.map +1 -1
  564. package/sqlite-core/columns/numeric.cjs +2 -4
  565. package/sqlite-core/columns/numeric.cjs.map +1 -1
  566. package/sqlite-core/columns/numeric.js +2 -4
  567. package/sqlite-core/columns/numeric.js.map +1 -1
  568. package/sqlite-core/db.cjs +3 -0
  569. package/sqlite-core/db.cjs.map +1 -1
  570. package/sqlite-core/db.d.cts +4 -0
  571. package/sqlite-core/db.d.ts +4 -0
  572. package/sqlite-core/db.js +3 -0
  573. package/sqlite-core/db.js.map +1 -1
  574. package/sqlite-core/dialect.cjs +7 -14
  575. package/sqlite-core/dialect.cjs.map +1 -1
  576. package/sqlite-core/dialect.js +7 -14
  577. package/sqlite-core/dialect.js.map +1 -1
  578. package/sqlite-core/query-builders/delete.cjs +7 -1
  579. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  580. package/sqlite-core/query-builders/delete.js +7 -1
  581. package/sqlite-core/query-builders/delete.js.map +1 -1
  582. package/sqlite-core/query-builders/insert.cjs +9 -5
  583. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  584. package/sqlite-core/query-builders/insert.js +9 -5
  585. package/sqlite-core/query-builders/insert.js.map +1 -1
  586. package/sqlite-core/query-builders/select.cjs +28 -3
  587. package/sqlite-core/query-builders/select.cjs.map +1 -1
  588. package/sqlite-core/query-builders/select.d.cts +15 -6
  589. package/sqlite-core/query-builders/select.d.ts +15 -6
  590. package/sqlite-core/query-builders/select.js +28 -3
  591. package/sqlite-core/query-builders/select.js.map +1 -1
  592. package/sqlite-core/query-builders/select.types.cjs.map +1 -1
  593. package/sqlite-core/query-builders/select.types.d.cts +2 -1
  594. package/sqlite-core/query-builders/select.types.d.ts +2 -1
  595. package/sqlite-core/query-builders/update.cjs +7 -1
  596. package/sqlite-core/query-builders/update.cjs.map +1 -1
  597. package/sqlite-core/query-builders/update.js +7 -1
  598. package/sqlite-core/query-builders/update.js.map +1 -1
  599. package/sqlite-core/session.cjs +87 -3
  600. package/sqlite-core/session.cjs.map +1 -1
  601. package/sqlite-core/session.d.cts +17 -3
  602. package/sqlite-core/session.d.ts +17 -3
  603. package/sqlite-core/session.js +89 -5
  604. package/sqlite-core/session.js.map +1 -1
  605. package/sqlite-core/utils.cjs +16 -0
  606. package/sqlite-core/utils.cjs.map +1 -1
  607. package/sqlite-core/utils.d.cts +6 -2
  608. package/sqlite-core/utils.d.ts +6 -2
  609. package/sqlite-core/utils.js +15 -0
  610. package/sqlite-core/utils.js.map +1 -1
  611. package/sqlite-proxy/driver.cjs +9 -2
  612. package/sqlite-proxy/driver.cjs.map +1 -1
  613. package/sqlite-proxy/driver.js +9 -2
  614. package/sqlite-proxy/driver.js.map +1 -1
  615. package/sqlite-proxy/session.cjs +27 -12
  616. package/sqlite-proxy/session.cjs.map +1 -1
  617. package/sqlite-proxy/session.d.cts +12 -2
  618. package/sqlite-proxy/session.d.ts +12 -2
  619. package/sqlite-proxy/session.js +27 -12
  620. package/sqlite-proxy/session.js.map +1 -1
  621. package/subquery.cjs +4 -3
  622. package/subquery.cjs.map +1 -1
  623. package/subquery.d.cts +2 -1
  624. package/subquery.d.ts +2 -1
  625. package/subquery.js +4 -3
  626. package/subquery.js.map +1 -1
  627. package/tidb-serverless/driver.cjs +9 -3
  628. package/tidb-serverless/driver.cjs.map +1 -1
  629. package/tidb-serverless/driver.d.cts +1 -0
  630. package/tidb-serverless/driver.d.ts +1 -0
  631. package/tidb-serverless/driver.js +9 -3
  632. package/tidb-serverless/driver.js.map +1 -1
  633. package/tidb-serverless/session.cjs +19 -7
  634. package/tidb-serverless/session.cjs.map +1 -1
  635. package/tidb-serverless/session.d.cts +12 -2
  636. package/tidb-serverless/session.d.ts +12 -2
  637. package/tidb-serverless/session.js +19 -7
  638. package/tidb-serverless/session.js.map +1 -1
  639. package/utils.cjs +10 -20
  640. package/utils.cjs.map +1 -1
  641. package/utils.d.cts +2 -0
  642. package/utils.d.ts +2 -0
  643. package/utils.js +10 -20
  644. package/utils.js.map +1 -1
  645. package/vercel-postgres/driver.cjs +9 -2
  646. package/vercel-postgres/driver.cjs.map +1 -1
  647. package/vercel-postgres/driver.d.cts +3 -1
  648. package/vercel-postgres/driver.d.ts +3 -1
  649. package/vercel-postgres/driver.js +9 -2
  650. package/vercel-postgres/driver.js.map +1 -1
  651. package/vercel-postgres/session.cjs +25 -9
  652. package/vercel-postgres/session.cjs.map +1 -1
  653. package/vercel-postgres/session.d.cts +12 -2
  654. package/vercel-postgres/session.d.ts +12 -2
  655. package/vercel-postgres/session.js +25 -9
  656. package/vercel-postgres/session.js.map +1 -1
  657. package/version.cjs +1 -1
  658. package/version.d.cts +1 -1
  659. package/version.d.ts +1 -1
  660. package/version.js +1 -1
  661. package/xata-http/driver.cjs +7 -2
  662. package/xata-http/driver.cjs.map +1 -1
  663. package/xata-http/driver.d.cts +2 -0
  664. package/xata-http/driver.d.ts +2 -0
  665. package/xata-http/driver.js +7 -2
  666. package/xata-http/driver.js.map +1 -1
  667. package/xata-http/session.cjs +27 -13
  668. package/xata-http/session.cjs.map +1 -1
  669. package/xata-http/session.d.cts +12 -2
  670. package/xata-http/session.d.ts +12 -2
  671. package/xata-http/session.js +27 -13
  672. package/xata-http/session.js.map +1 -1
  673. package/neon/neon-identity.cjs.map +0 -1
  674. package/neon/neon-identity.js.map +0 -1
@@ -23,6 +23,7 @@ __export(session_exports, {
23
23
  LibSQLTransaction: () => LibSQLTransaction
24
24
  });
25
25
  module.exports = __toCommonJS(session_exports);
26
+ var import_core = require("../cache/core/index.cjs");
26
27
  var import_entity = require("../entity.cjs");
27
28
  var import_logger = require("../logger.cjs");
28
29
  var import_sql = require("../sql/sql.cjs");
@@ -38,14 +39,19 @@ class LibSQLSession extends import_session.SQLiteSession {
38
39
  this.options = options;
39
40
  this.tx = tx;
40
41
  this.logger = options.logger ?? new import_logger.NoopLogger();
42
+ this.cache = options.cache ?? new import_core.NoopCache();
41
43
  }
42
44
  static [import_entity.entityKind] = "LibSQLSession";
43
45
  logger;
44
- prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper) {
46
+ cache;
47
+ prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
45
48
  return new LibSQLPreparedQuery(
46
49
  this.client,
47
50
  query,
48
51
  this.logger,
52
+ this.cache,
53
+ queryMetadata,
54
+ cacheConfig,
49
55
  fields,
50
56
  this.tx,
51
57
  executeMethod,
@@ -58,6 +64,9 @@ class LibSQLSession extends import_session.SQLiteSession {
58
64
  this.client,
59
65
  query,
60
66
  this.logger,
67
+ this.cache,
68
+ void 0,
69
+ void 0,
61
70
  fields,
62
71
  this.tx,
63
72
  executeMethod,
@@ -150,8 +159,8 @@ class LibSQLTransaction extends import_sqlite_core.SQLiteTransaction {
150
159
  }
151
160
  }
152
161
  class LibSQLPreparedQuery extends import_session.SQLitePreparedQuery {
153
- constructor(client, query, logger, fields, tx, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
154
- super("async", executeMethod, query);
162
+ constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, tx, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
163
+ super("async", executeMethod, query, cache, queryMetadata, cacheConfig);
155
164
  this.client = client;
156
165
  this.logger = logger;
157
166
  this.fields = fields;
@@ -163,21 +172,24 @@ class LibSQLPreparedQuery extends import_session.SQLitePreparedQuery {
163
172
  this.fields = fields;
164
173
  }
165
174
  static [import_entity.entityKind] = "LibSQLPreparedQuery";
166
- run(placeholderValues) {
175
+ async run(placeholderValues) {
167
176
  const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
168
177
  this.logger.logQuery(this.query.sql, params);
169
- const stmt = { sql: this.query.sql, args: params };
170
- return this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);
178
+ return await this.queryWithCache(this.query.sql, params, async () => {
179
+ const stmt = { sql: this.query.sql, args: params };
180
+ return this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);
181
+ });
171
182
  }
172
183
  async all(placeholderValues) {
173
- if (this.isRqbV2Query)
174
- return this.allRqbV2(placeholderValues);
184
+ if (this.isRqbV2Query) return this.allRqbV2(placeholderValues);
175
185
  const { fields, logger, query, tx, client, customResultMapper } = this;
176
186
  if (!fields && !customResultMapper) {
177
187
  const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
178
188
  logger.logQuery(query.sql, params);
179
- const stmt = { sql: query.sql, args: params };
180
- return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapAllResult(rows2));
189
+ return await this.queryWithCache(query.sql, params, async () => {
190
+ const stmt = { sql: query.sql, args: params };
191
+ return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapAllResult(rows2));
192
+ });
181
193
  }
182
194
  const rows = await this.values(placeholderValues);
183
195
  return this.mapAllResult(rows);
@@ -209,14 +221,15 @@ class LibSQLPreparedQuery extends import_session.SQLitePreparedQuery {
209
221
  });
210
222
  }
211
223
  async get(placeholderValues) {
212
- if (this.isRqbV2Query)
213
- return this.getRqbV2(placeholderValues);
224
+ if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
214
225
  const { fields, logger, query, tx, client, customResultMapper } = this;
215
226
  if (!fields && !customResultMapper) {
216
227
  const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
217
228
  logger.logQuery(query.sql, params);
218
- const stmt = { sql: query.sql, args: params };
219
- return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapGetResult(rows2));
229
+ return await this.queryWithCache(query.sql, params, async () => {
230
+ const stmt = { sql: query.sql, args: params };
231
+ return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapGetResult(rows2));
232
+ });
220
233
  }
221
234
  const rows = await this.values(placeholderValues);
222
235
  return this.mapGetResult(rows);
@@ -227,8 +240,7 @@ class LibSQLPreparedQuery extends import_session.SQLitePreparedQuery {
227
240
  logger.logQuery(query.sql, params);
228
241
  const stmt = { sql: query.sql, args: params };
229
242
  const { rows } = await (tx ?? client).execute(stmt);
230
- if (rows[0] === void 0)
231
- return;
243
+ if (rows[0] === void 0) return;
232
244
  const row = normalizeRow(rows[0]);
233
245
  return customResultMapper([row], normalizeFieldValue);
234
246
  }
@@ -252,11 +264,13 @@ class LibSQLPreparedQuery extends import_session.SQLitePreparedQuery {
252
264
  this.joinsNotNullableMap
253
265
  );
254
266
  }
255
- values(placeholderValues) {
267
+ async values(placeholderValues) {
256
268
  const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
257
269
  this.logger.logQuery(this.query.sql, params);
258
- const stmt = { sql: this.query.sql, args: params };
259
- return (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows);
270
+ return await this.queryWithCache(this.query.sql, params, async () => {
271
+ const stmt = { sql: this.query.sql, args: params };
272
+ return (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows);
273
+ });
260
274
  }
261
275
  /** @internal */
262
276
  isResponseInArrayMode() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type * as V1 from '~/_relations.ts';\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 { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.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\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): LibSQLPreparedQuery<T, true> {\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\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: 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, TRelations, TTablesConfig, 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, TRelations, TTablesConfig, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t);\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\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override 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\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\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\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\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\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst rows = await (tx ?? client).execute(stmt).then(({ rows }) => rows.map((row) => normalizeRow(row)));\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue) as T['all'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(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\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\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\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>) {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst { rows } = await (tx ?? client).execute(stmt);\n\t\tif (rows[0] === undefined) return;\n\n\t\tconst row = normalizeRow((rows as unknown[])[0]);\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row] as Record<string, unknown>[], normalizeFieldValue) as T['get'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
1
+ {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.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\tthis.cache = options.cache ?? new NoopCache();\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\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\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\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\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\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): LibSQLPreparedQuery<T, true> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: 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, TRelations, TTablesConfig, 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, TRelations, TTablesConfig, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t);\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\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\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\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('async', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\tasync run(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\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, 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\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t\t});\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\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst rows = await (tx ?? client).execute(stmt).then(({ rows }) => rows.map((row) => normalizeRow(row)));\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue) as T['all'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(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\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\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\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t\t});\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\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>) {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst { rows } = await (tx ?? client).execute(stmt);\n\t\tif (rows[0] === undefined) return;\n\n\t\tconst row = normalizeRow((rows as unknown[])[0]);\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row] as Record<string, unknown>[], normalizeFieldValue) as T['get'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(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\tasync values(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\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\t\tT['values']\n\t\t\t>;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
@@ -1,6 +1,8 @@
1
1
  import type { Client, ResultSet, Transaction } from '@libsql/client';
2
2
  import type * as V1 from "../_relations.cjs";
3
3
  import type { BatchItem as BatchItem } from "../batch.cjs";
4
+ import { type Cache } from "../cache/core/index.cjs";
5
+ import type { WithCacheConfig } from "../cache/core/types.cjs";
4
6
  import { entityKind } from "../entity.cjs";
5
7
  import type { Logger } from "../logger.cjs";
6
8
  import type { AnyRelations, TablesRelationalConfig } from "../relations.cjs";
@@ -12,6 +14,7 @@ import type { PreparedQueryConfig as PreparedQueryConfigBase, SQLiteExecuteMetho
12
14
  import { SQLitePreparedQuery, SQLiteSession } from "../sqlite-core/session.cjs";
13
15
  export interface LibSQLSessionOptions {
14
16
  logger?: Logger;
17
+ cache?: Cache;
15
18
  }
16
19
  type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
17
20
  export declare class LibSQLSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {
@@ -22,8 +25,12 @@ export declare class LibSQLSession<TFullSchema extends Record<string, unknown>,
22
25
  private tx;
23
26
  static readonly [entityKind]: string;
24
27
  private logger;
28
+ private cache;
25
29
  constructor(client: Client, dialect: SQLiteAsyncDialect, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options: LibSQLSessionOptions, tx: Transaction | undefined);
26
- prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): LibSQLPreparedQuery<T>;
30
+ prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown, queryMetadata?: {
31
+ type: 'select' | 'update' | 'delete' | 'insert';
32
+ tables: string[];
33
+ }, cacheConfig?: WithCacheConfig): LibSQLPreparedQuery<T>;
27
34
  prepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper: (rows: Record<string, unknown>[]) => unknown): LibSQLPreparedQuery<T, true>;
28
35
  batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
29
36
  migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
@@ -51,7 +58,10 @@ export declare class LibSQLPreparedQuery<T extends PreparedQueryConfig = Prepare
51
58
  private customResultMapper?;
52
59
  private isRqbV2Query?;
53
60
  static readonly [entityKind]: string;
54
- constructor(client: Client, query: Query, logger: Logger,
61
+ constructor(client: Client, query: Query, logger: Logger, cache: Cache, queryMetadata: {
62
+ type: 'select' | 'update' | 'delete' | 'insert';
63
+ tables: string[];
64
+ } | undefined, cacheConfig: WithCacheConfig | undefined,
55
65
  /** @internal */ fields: SelectedFieldsOrdered | undefined, tx: Transaction | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
56
66
  run(placeholderValues?: Record<string, unknown>): Promise<ResultSet>;
57
67
  all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
@@ -1,6 +1,8 @@
1
1
  import type { Client, ResultSet, Transaction } from '@libsql/client';
2
2
  import type * as V1 from "../_relations.js";
3
3
  import type { BatchItem as BatchItem } from "../batch.js";
4
+ import { type Cache } from "../cache/core/index.js";
5
+ import type { WithCacheConfig } from "../cache/core/types.js";
4
6
  import { entityKind } from "../entity.js";
5
7
  import type { Logger } from "../logger.js";
6
8
  import type { AnyRelations, TablesRelationalConfig } from "../relations.js";
@@ -12,6 +14,7 @@ import type { PreparedQueryConfig as PreparedQueryConfigBase, SQLiteExecuteMetho
12
14
  import { SQLitePreparedQuery, SQLiteSession } from "../sqlite-core/session.js";
13
15
  export interface LibSQLSessionOptions {
14
16
  logger?: Logger;
17
+ cache?: Cache;
15
18
  }
16
19
  type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
17
20
  export declare class LibSQLSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {
@@ -22,8 +25,12 @@ export declare class LibSQLSession<TFullSchema extends Record<string, unknown>,
22
25
  private tx;
23
26
  static readonly [entityKind]: string;
24
27
  private logger;
28
+ private cache;
25
29
  constructor(client: Client, dialect: SQLiteAsyncDialect, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options: LibSQLSessionOptions, tx: Transaction | undefined);
26
- prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): LibSQLPreparedQuery<T>;
30
+ prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown, queryMetadata?: {
31
+ type: 'select' | 'update' | 'delete' | 'insert';
32
+ tables: string[];
33
+ }, cacheConfig?: WithCacheConfig): LibSQLPreparedQuery<T>;
27
34
  prepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper: (rows: Record<string, unknown>[]) => unknown): LibSQLPreparedQuery<T, true>;
28
35
  batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
29
36
  migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T): Promise<unknown[]>;
@@ -51,7 +58,10 @@ export declare class LibSQLPreparedQuery<T extends PreparedQueryConfig = Prepare
51
58
  private customResultMapper?;
52
59
  private isRqbV2Query?;
53
60
  static readonly [entityKind]: string;
54
- constructor(client: Client, query: Query, logger: Logger,
61
+ constructor(client: Client, query: Query, logger: Logger, cache: Cache, queryMetadata: {
62
+ type: 'select' | 'update' | 'delete' | 'insert';
63
+ tables: string[];
64
+ } | undefined, cacheConfig: WithCacheConfig | undefined,
55
65
  /** @internal */ fields: SelectedFieldsOrdered | undefined, tx: Transaction | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
56
66
  run(placeholderValues?: Record<string, unknown>): Promise<ResultSet>;
57
67
  all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
package/libsql/session.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { NoopCache } from "../cache/core/index.js";
1
2
  import { entityKind } from "../entity.js";
2
3
  import { NoopLogger } from "../logger.js";
3
4
  import { fillPlaceholders, sql } from "../sql/sql.js";
@@ -13,14 +14,19 @@ class LibSQLSession extends SQLiteSession {
13
14
  this.options = options;
14
15
  this.tx = tx;
15
16
  this.logger = options.logger ?? new NoopLogger();
17
+ this.cache = options.cache ?? new NoopCache();
16
18
  }
17
19
  static [entityKind] = "LibSQLSession";
18
20
  logger;
19
- prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper) {
21
+ cache;
22
+ prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
20
23
  return new LibSQLPreparedQuery(
21
24
  this.client,
22
25
  query,
23
26
  this.logger,
27
+ this.cache,
28
+ queryMetadata,
29
+ cacheConfig,
24
30
  fields,
25
31
  this.tx,
26
32
  executeMethod,
@@ -33,6 +39,9 @@ class LibSQLSession extends SQLiteSession {
33
39
  this.client,
34
40
  query,
35
41
  this.logger,
42
+ this.cache,
43
+ void 0,
44
+ void 0,
36
45
  fields,
37
46
  this.tx,
38
47
  executeMethod,
@@ -125,8 +134,8 @@ class LibSQLTransaction extends SQLiteTransaction {
125
134
  }
126
135
  }
127
136
  class LibSQLPreparedQuery extends SQLitePreparedQuery {
128
- constructor(client, query, logger, fields, tx, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
129
- super("async", executeMethod, query);
137
+ constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, tx, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
138
+ super("async", executeMethod, query, cache, queryMetadata, cacheConfig);
130
139
  this.client = client;
131
140
  this.logger = logger;
132
141
  this.fields = fields;
@@ -138,21 +147,24 @@ class LibSQLPreparedQuery extends SQLitePreparedQuery {
138
147
  this.fields = fields;
139
148
  }
140
149
  static [entityKind] = "LibSQLPreparedQuery";
141
- run(placeholderValues) {
150
+ async run(placeholderValues) {
142
151
  const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
143
152
  this.logger.logQuery(this.query.sql, params);
144
- const stmt = { sql: this.query.sql, args: params };
145
- return this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);
153
+ return await this.queryWithCache(this.query.sql, params, async () => {
154
+ const stmt = { sql: this.query.sql, args: params };
155
+ return this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);
156
+ });
146
157
  }
147
158
  async all(placeholderValues) {
148
- if (this.isRqbV2Query)
149
- return this.allRqbV2(placeholderValues);
159
+ if (this.isRqbV2Query) return this.allRqbV2(placeholderValues);
150
160
  const { fields, logger, query, tx, client, customResultMapper } = this;
151
161
  if (!fields && !customResultMapper) {
152
162
  const params = fillPlaceholders(query.params, placeholderValues ?? {});
153
163
  logger.logQuery(query.sql, params);
154
- const stmt = { sql: query.sql, args: params };
155
- return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapAllResult(rows2));
164
+ return await this.queryWithCache(query.sql, params, async () => {
165
+ const stmt = { sql: query.sql, args: params };
166
+ return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapAllResult(rows2));
167
+ });
156
168
  }
157
169
  const rows = await this.values(placeholderValues);
158
170
  return this.mapAllResult(rows);
@@ -184,14 +196,15 @@ class LibSQLPreparedQuery extends SQLitePreparedQuery {
184
196
  });
185
197
  }
186
198
  async get(placeholderValues) {
187
- if (this.isRqbV2Query)
188
- return this.getRqbV2(placeholderValues);
199
+ if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
189
200
  const { fields, logger, query, tx, client, customResultMapper } = this;
190
201
  if (!fields && !customResultMapper) {
191
202
  const params = fillPlaceholders(query.params, placeholderValues ?? {});
192
203
  logger.logQuery(query.sql, params);
193
- const stmt = { sql: query.sql, args: params };
194
- return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapGetResult(rows2));
204
+ return await this.queryWithCache(query.sql, params, async () => {
205
+ const stmt = { sql: query.sql, args: params };
206
+ return (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows: rows2 }) => this.mapGetResult(rows2));
207
+ });
195
208
  }
196
209
  const rows = await this.values(placeholderValues);
197
210
  return this.mapGetResult(rows);
@@ -202,8 +215,7 @@ class LibSQLPreparedQuery extends SQLitePreparedQuery {
202
215
  logger.logQuery(query.sql, params);
203
216
  const stmt = { sql: query.sql, args: params };
204
217
  const { rows } = await (tx ?? client).execute(stmt);
205
- if (rows[0] === void 0)
206
- return;
218
+ if (rows[0] === void 0) return;
207
219
  const row = normalizeRow(rows[0]);
208
220
  return customResultMapper([row], normalizeFieldValue);
209
221
  }
@@ -227,11 +239,13 @@ class LibSQLPreparedQuery extends SQLitePreparedQuery {
227
239
  this.joinsNotNullableMap
228
240
  );
229
241
  }
230
- values(placeholderValues) {
242
+ async values(placeholderValues) {
231
243
  const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
232
244
  this.logger.logQuery(this.query.sql, params);
233
- const stmt = { sql: this.query.sql, args: params };
234
- return (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows);
245
+ return await this.queryWithCache(this.query.sql, params, async () => {
246
+ const stmt = { sql: this.query.sql, args: params };
247
+ return (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows);
248
+ });
235
249
  }
236
250
  /** @internal */
237
251
  isResponseInArrayMode() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type * as V1 from '~/_relations.ts';\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 { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.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\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): LibSQLPreparedQuery<T, true> {\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\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: 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, TRelations, TTablesConfig, 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, TRelations, TTablesConfig, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t);\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\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override 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\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\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\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\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\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst rows = await (tx ?? client).execute(stmt).then(({ rows }) => rows.map((row) => normalizeRow(row)));\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue) as T['all'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(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\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\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\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>) {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst { rows } = await (tx ?? client).execute(stmt);\n\t\tif (rows[0] === undefined) return;\n\n\t\tconst row = normalizeRow((rows as unknown[])[0]);\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row] as Record<string, unknown>[], normalizeFieldValue) as T['get'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\tT['values']\n\t\t>;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
1
+ {"version":3,"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.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\tthis.cache = options.cache ?? new NoopCache();\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\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\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\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\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\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): LibSQLPreparedQuery<T, true> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: 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, TRelations, TTablesConfig, 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, TRelations, TTablesConfig, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t);\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\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: LibSQLTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\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\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('async', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\tasync run(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\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, 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\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t\t});\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\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst rows = await (tx ?? client).execute(stmt).then(({ rows }) => rows.map((row) => normalizeRow(row)));\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue) as T['all'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(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\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\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\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t\t});\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\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>) {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst { rows } = await (tx ?? client).execute(stmt);\n\t\tif (rows[0] === undefined) return;\n\n\t\tconst row = normalizeRow((rows as unknown[])[0]);\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row] as Record<string, unknown>[], normalizeFieldValue) as T['get'];\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 as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(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\tasync values(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\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\t\tT['values']\n\t\t\t>;\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":"AAGA,SAAqB,iBAAiB;AAEtC,SAAS,kBAAkB;AAE3B,SAAS,kBAAkB;AAG3B,SAAS,kBAA8B,WAAW;AAElD,SAAS,yBAAyB;AAOlC,SAAS,qBAAqB,qBAAqB;AACnD,SAAS,oBAAoB;AAStB,MAAM,sBAKH,cAAmF;AAAA,EAM5F,YACS,QACR,SACQ,WACA,QACA,SACA,IACP;AACD,UAAM,OAAO;AAPL;AAEA;AACA;AACA;AACA;AAGR,SAAK,SAAS,QAAQ,UAAU,IAAI,WAAW;AAC/C,SAAK,QAAQ,QAAQ,SAAS,IAAI,UAAU;AAAA,EAC7C;AAAA,EAhBA,QAA0B,UAAU,IAAY;AAAA,EAExC;AAAA,EACA;AAAA,EAeR,aACC,OACA,QACA,eACA,uBACA,oBACA,eAIA,aACyB;AACzB,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,uBACC,OACA,QACA,eACA,oBAC+B;AAC/B,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;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,MAAM,QAA0E,SAAY;AAC3F,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,QAAQ,YAAY;AAC3D,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,KAAK;AAAA,MACL;AAAA,IACD;AACA,UAAM,KAAK,IAAI;AAAA,MACd;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,IACN;AACA,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,0BAKH,kBAAuF;AAAA,EAChG,QAA0B,UAAU,IAAY;AAAA,EAEhD,MAAe,YACd,aACa;AACb,UAAM,gBAAgB,KAAK,KAAK,WAAW;AAC3C,UAAM,KAAK,IAAI;AAAA,MACd;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,cAAc;AAAA,IACpB;AACA,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,4BACJ,oBAGT;AAAA,EAGC,YACS,QACR,OACQ,QACR,OACA,eAIA,aACwB,QAChB,IACR,eACQ,wBACA,oBAIA,cACP;AACD,UAAM,SAAS,eAAe,OAAO,OAAO,eAAe,WAAW;AAnB9D;AAEA;AAOgB;AAChB;AAEA;AACA;AAIA;AAGR,SAAK,qBAAqB;AAC1B,SAAK,SAAS;AAAA,EACf;AAAA,EAzBA,QAA0B,UAAU,IAAY;AAAA,EA2BhD,MAAM,IAAI,mBAAiE;AAC1E,UAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,WAAO,MAAM,KAAK,eAAe,KAAK,MAAM,KAAK,QAAQ,YAAY;AACpE,YAAM,OAAoB,EAAE,KAAK,KAAK,MAAM,KAAK,MAAM,OAAiB;AACxE,aAAO,KAAK,KAAK,KAAK,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO,QAAQ,IAAI;AAAA,IAClE,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,QAAI,KAAK,aAAc,QAAO,KAAK,SAAS,iBAAiB;AAE7D,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,aAAO,MAAM,KAAK,eAAe,MAAM,KAAK,QAAQ,YAAY;AAC/D,cAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AACnE,gBAAQ,KAAK,GAAG,QAAQ,IAAI,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,MAAAA,MAAK,MAAM,KAAK,aAAaA,KAAI,CAAC;AAAA,MACjG,CAAC;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,KAAK,OAAO,iBAAiB;AAEhD,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAEA,MAAc,SAAS,mBAAgE;AACtF,UAAM,EAAE,QAAQ,OAAO,IAAI,QAAQ,mBAAmB,IAAI;AAE1D,UAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,WAAO,SAAS,MAAM,KAAK,MAAM;AACjC,UAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AAEnE,UAAM,OAAO,OAAO,MAAM,QAAQ,QAAQ,IAAI,EAAE,KAAK,CAAC,EAAE,MAAAA,MAAK,MAAMA,MAAK,IAAI,CAAC,QAAQ,aAAa,GAAG,CAAC,CAAC;AAEvG,WAAQ,mBAGM,MAAmC,mBAAmB;AAAA,EACrE;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,aAAQ,KAAK,mBAGC,MAAqB,mBAAmB;AAAA,IACvD;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,QAAI,KAAK,aAAc,QAAO,KAAK,SAAS,iBAAiB;AAE7D,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,aAAO,MAAM,KAAK,eAAe,MAAM,KAAK,QAAQ,YAAY;AAC/D,cAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AACnE,gBAAQ,KAAK,GAAG,QAAQ,IAAI,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,MAAAA,MAAK,MAAM,KAAK,aAAaA,KAAI,CAAC;AAAA,MACjG,CAAC;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,KAAK,OAAO,iBAAiB;AAEhD,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAEA,MAAc,SAAS,mBAA6C;AACnE,UAAM,EAAE,QAAQ,OAAO,IAAI,QAAQ,mBAAmB,IAAI;AAE1D,UAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,WAAO,SAAS,MAAM,KAAK,MAAM;AACjC,UAAM,OAAoB,EAAE,KAAK,MAAM,KAAK,MAAM,OAAiB;AAEnE,UAAM,EAAE,KAAK,IAAI,OAAO,MAAM,QAAQ,QAAQ,IAAI;AAClD,QAAI,KAAK,CAAC,MAAM,OAAW;AAE3B,UAAM,MAAM,aAAc,KAAmB,CAAC,CAAC;AAE/C,WAAQ,mBAGM,CAAC,GAAG,GAAgC,mBAAmB;AAAA,EACtE;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,aAAQ,KAAK,mBAGC,MAAqB,mBAAmB;AAAA,IACvD;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,MAAM,OAAO,mBAAmE;AAC/E,UAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,WAAO,MAAM,KAAK,eAAe,KAAK,MAAM,KAAK,QAAQ,YAAY;AACpE,YAAM,OAAoB,EAAE,KAAK,KAAK,MAAM,KAAK,MAAM,OAAiB;AACxE,cAAQ,KAAK,KAAK,KAAK,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE,KAAK,MAAM,IAAI;AAAA,IAG7F,CAAC;AAAA,EACF;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"]}
@@ -33,8 +33,7 @@ function drizzle(...params) {
33
33
  }
34
34
  if ((0, import_utils.isConfig)(params[0])) {
35
35
  const { connection, client, ...drizzleConfig } = params[0];
36
- if (client)
37
- return (0, import_driver_core.construct)(client, drizzleConfig);
36
+ if (client) return (0, import_driver_core.construct)(client, drizzleConfig);
38
37
  const instance = typeof connection === "string" ? (0, import_sqlite3.createClient)({ url: connection }) : (0, import_sqlite3.createClient)(connection);
39
38
  return (0, import_driver_core.construct)(instance, drizzleConfig);
40
39
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/libsql/sqlite3/index.ts"],"sourcesContent":["import { type Client, type Config, createClient } from '@libsql/client/sqlite3';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { construct, type LibSQLDatabase } from '../driver-core.ts';\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): LibSQLDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = createClient({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config; client?: TClient }\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection!);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): LibSQLDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuD;AAEvD,mBAA6C;AAC7C,yBAA+C;AAExC,SAAS,WAKZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,eAAW,6BAAa;AAAA,MAC7B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,eAAO,8BAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,iBAAO,8BAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,eAAW,6BAAa,EAAE,KAAK,WAAW,CAAC,QAAI,6BAAa,UAAW;AAE9G,eAAO,8BAAU,UAAU,aAAa;AAAA,EACzC;AAEA,aAAO,8BAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAmD;AACnG;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KAIf,QAGC;AACD,eAAO,8BAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
1
+ {"version":3,"sources":["../../../src/libsql/sqlite3/index.ts"],"sourcesContent":["import { type Client, type Config, createClient } from '@libsql/client/sqlite3';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { construct, type LibSQLDatabase } from '../driver-core.ts';\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): LibSQLDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = createClient({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config; client?: TClient }\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection!);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): LibSQLDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuD;AAEvD,mBAA6C;AAC7C,yBAA+C;AAExC,SAAS,WAKZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,eAAW,6BAAa;AAAA,MAC7B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,eAAO,8BAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI,OAAQ,YAAO,8BAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,eAAW,6BAAa,EAAE,KAAK,WAAW,CAAC,QAAI,6BAAa,UAAW;AAE9G,eAAO,8BAAU,UAAU,aAAa;AAAA,EACzC;AAEA,aAAO,8BAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAmD;AACnG;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KAIf,QAGC;AACD,eAAO,8BAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
@@ -10,8 +10,7 @@ function drizzle(...params) {
10
10
  }
11
11
  if (isConfig(params[0])) {
12
12
  const { connection, client, ...drizzleConfig } = params[0];
13
- if (client)
14
- return construct(client, drizzleConfig);
13
+ if (client) return construct(client, drizzleConfig);
15
14
  const instance = typeof connection === "string" ? createClient({ url: connection }) : createClient(connection);
16
15
  return construct(instance, drizzleConfig);
17
16
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/libsql/sqlite3/index.ts"],"sourcesContent":["import { type Client, type Config, createClient } from '@libsql/client/sqlite3';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { construct, type LibSQLDatabase } from '../driver-core.ts';\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): LibSQLDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = createClient({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config; client?: TClient }\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection!);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): LibSQLDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AAAA,SAAmC,oBAAoB;AAEvD,SAA6B,gBAAgB;AAC7C,SAAS,iBAAsC;AAExC,SAAS,WAKZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,aAAa;AAAA,MAC7B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,EAAE,KAAK,WAAW,CAAC,IAAI,aAAa,UAAW;AAE9G,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAmD;AACnG;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
1
+ {"version":3,"sources":["../../../src/libsql/sqlite3/index.ts"],"sourcesContent":["import { type Client, type Config, createClient } from '@libsql/client/sqlite3';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { construct, type LibSQLDatabase } from '../driver-core.ts';\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): LibSQLDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = createClient({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config; client?: TClient }\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection!);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): LibSQLDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AAAA,SAAmC,oBAAoB;AAEvD,SAA6B,gBAAgB;AAC7C,SAAS,iBAAsC;AAExC,SAAS,WAKZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,aAAa;AAAA,MAC7B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,EAAE,KAAK,WAAW,CAAC,IAAI,aAAa,UAAW;AAE9G,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAmD;AACnG;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
@@ -33,8 +33,7 @@ function drizzle(...params) {
33
33
  }
34
34
  if ((0, import_utils.isConfig)(params[0])) {
35
35
  const { connection, client, ...drizzleConfig } = params[0];
36
- if (client)
37
- return (0, import_driver_core.construct)(client, drizzleConfig);
36
+ if (client) return (0, import_driver_core.construct)(client, drizzleConfig);
38
37
  const instance = typeof connection === "string" ? (0, import_client_wasm.createClient)({ url: connection }) : (0, import_client_wasm.createClient)(connection);
39
38
  return (0, import_driver_core.construct)(instance, drizzleConfig);
40
39
  }