drizzle-orm 1.0.0-beta.22-eaa25cd → 1.0.0-beta.22-46020ee

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 (431) hide show
  1. package/aws-data-api/common/index.d.cts +1 -1
  2. package/aws-data-api/common/index.d.ts +1 -1
  3. package/aws-data-api/pg/codecs.cjs +162 -0
  4. package/aws-data-api/pg/codecs.cjs.map +1 -0
  5. package/aws-data-api/pg/codecs.d.cts +9 -0
  6. package/aws-data-api/pg/codecs.d.ts +9 -0
  7. package/aws-data-api/pg/codecs.js +160 -0
  8. package/aws-data-api/pg/codecs.js.map +1 -0
  9. package/aws-data-api/pg/driver.cjs +4 -157
  10. package/aws-data-api/pg/driver.cjs.map +1 -1
  11. package/aws-data-api/pg/driver.d.cts +1 -5
  12. package/aws-data-api/pg/driver.d.ts +1 -5
  13. package/aws-data-api/pg/driver.js +4 -156
  14. package/aws-data-api/pg/driver.js.map +1 -1
  15. package/aws-data-api/pg/index.cjs +2 -1
  16. package/aws-data-api/pg/index.d.cts +2 -1
  17. package/aws-data-api/pg/index.d.ts +2 -1
  18. package/aws-data-api/pg/index.js +2 -1
  19. package/better-sqlite3/driver.cjs +2 -1
  20. package/better-sqlite3/driver.cjs.map +1 -1
  21. package/better-sqlite3/driver.js +2 -1
  22. package/better-sqlite3/driver.js.map +1 -1
  23. package/better-sqlite3/session.cjs +8 -8
  24. package/better-sqlite3/session.cjs.map +1 -1
  25. package/better-sqlite3/session.d.cts +3 -3
  26. package/better-sqlite3/session.d.ts +3 -3
  27. package/better-sqlite3/session.js +8 -8
  28. package/better-sqlite3/session.js.map +1 -1
  29. package/bun-sql/mysql/driver.cjs +2 -1
  30. package/bun-sql/mysql/driver.cjs.map +1 -1
  31. package/bun-sql/mysql/driver.js +2 -1
  32. package/bun-sql/mysql/driver.js.map +1 -1
  33. package/bun-sql/mysql/session.cjs +8 -8
  34. package/bun-sql/mysql/session.cjs.map +1 -1
  35. package/bun-sql/mysql/session.d.cts +3 -3
  36. package/bun-sql/mysql/session.d.ts +3 -3
  37. package/bun-sql/mysql/session.js +8 -8
  38. package/bun-sql/mysql/session.js.map +1 -1
  39. package/bun-sql/postgres/codecs.cjs +176 -0
  40. package/bun-sql/postgres/codecs.cjs.map +1 -0
  41. package/bun-sql/postgres/codecs.d.cts +9 -0
  42. package/bun-sql/postgres/codecs.d.ts +9 -0
  43. package/bun-sql/postgres/codecs.js +174 -0
  44. package/bun-sql/postgres/codecs.js.map +1 -0
  45. package/bun-sql/postgres/driver.cjs +4 -171
  46. package/bun-sql/postgres/driver.cjs.map +1 -1
  47. package/bun-sql/postgres/driver.d.cts +1 -5
  48. package/bun-sql/postgres/driver.d.ts +1 -5
  49. package/bun-sql/postgres/driver.js +4 -170
  50. package/bun-sql/postgres/driver.js.map +1 -1
  51. package/bun-sql/postgres/index.cjs +2 -1
  52. package/bun-sql/postgres/index.d.cts +2 -1
  53. package/bun-sql/postgres/index.d.ts +2 -1
  54. package/bun-sql/postgres/index.js +2 -1
  55. package/bun-sql/sqlite/driver.cjs +2 -1
  56. package/bun-sql/sqlite/driver.cjs.map +1 -1
  57. package/bun-sql/sqlite/driver.js +2 -1
  58. package/bun-sql/sqlite/driver.js.map +1 -1
  59. package/bun-sql/sqlite/session.cjs +8 -8
  60. package/bun-sql/sqlite/session.cjs.map +1 -1
  61. package/bun-sql/sqlite/session.d.cts +3 -3
  62. package/bun-sql/sqlite/session.d.ts +3 -3
  63. package/bun-sql/sqlite/session.js +8 -8
  64. package/bun-sql/sqlite/session.js.map +1 -1
  65. package/bun-sqlite/driver.cjs +2 -1
  66. package/bun-sqlite/driver.cjs.map +1 -1
  67. package/bun-sqlite/driver.js +2 -1
  68. package/bun-sqlite/driver.js.map +1 -1
  69. package/bun-sqlite/session.cjs +8 -8
  70. package/bun-sqlite/session.cjs.map +1 -1
  71. package/bun-sqlite/session.d.cts +3 -3
  72. package/bun-sqlite/session.d.ts +3 -3
  73. package/bun-sqlite/session.js +8 -8
  74. package/bun-sqlite/session.js.map +1 -1
  75. package/cockroach/driver.cjs +3 -2
  76. package/cockroach/driver.cjs.map +1 -1
  77. package/cockroach/driver.d.cts +1 -1
  78. package/cockroach/driver.d.ts +1 -1
  79. package/cockroach/driver.js +3 -2
  80. package/cockroach/driver.js.map +1 -1
  81. package/cockroach/session.cjs +4 -4
  82. package/cockroach/session.cjs.map +1 -1
  83. package/cockroach/session.d.cts +3 -3
  84. package/cockroach/session.d.ts +3 -3
  85. package/cockroach/session.js +4 -4
  86. package/cockroach/session.js.map +1 -1
  87. package/durable-sqlite/driver.cjs +2 -1
  88. package/durable-sqlite/driver.cjs.map +1 -1
  89. package/durable-sqlite/driver.js +2 -1
  90. package/durable-sqlite/driver.js.map +1 -1
  91. package/durable-sqlite/session.cjs +8 -8
  92. package/durable-sqlite/session.cjs.map +1 -1
  93. package/durable-sqlite/session.d.cts +3 -3
  94. package/durable-sqlite/session.d.ts +3 -3
  95. package/durable-sqlite/session.js +8 -8
  96. package/durable-sqlite/session.js.map +1 -1
  97. package/effect-postgres/codecs.cjs +175 -0
  98. package/effect-postgres/codecs.cjs.map +1 -0
  99. package/effect-postgres/codecs.d.cts +9 -0
  100. package/effect-postgres/codecs.d.ts +9 -0
  101. package/effect-postgres/codecs.js +173 -0
  102. package/effect-postgres/codecs.js.map +1 -0
  103. package/effect-postgres/driver.cjs +5 -171
  104. package/effect-postgres/driver.cjs.map +1 -1
  105. package/effect-postgres/driver.d.cts +3 -7
  106. package/effect-postgres/driver.d.ts +3 -7
  107. package/effect-postgres/driver.js +5 -170
  108. package/effect-postgres/driver.js.map +1 -1
  109. package/effect-postgres/index.cjs +2 -1
  110. package/effect-postgres/index.d.cts +2 -1
  111. package/effect-postgres/index.d.ts +2 -1
  112. package/effect-postgres/index.js +2 -1
  113. package/effect-postgres/migrator.d.cts +1 -1
  114. package/effect-postgres/migrator.d.ts +1 -1
  115. package/effect-postgres/session.cjs.map +1 -1
  116. package/effect-postgres/session.d.cts +1 -1
  117. package/effect-postgres/session.d.ts +1 -1
  118. package/effect-postgres/session.js.map +1 -1
  119. package/expo-sqlite/driver.cjs +2 -1
  120. package/expo-sqlite/driver.cjs.map +1 -1
  121. package/expo-sqlite/driver.js +2 -1
  122. package/expo-sqlite/driver.js.map +1 -1
  123. package/expo-sqlite/session.cjs +8 -8
  124. package/expo-sqlite/session.cjs.map +1 -1
  125. package/expo-sqlite/session.d.cts +3 -3
  126. package/expo-sqlite/session.d.ts +3 -3
  127. package/expo-sqlite/session.js +8 -8
  128. package/expo-sqlite/session.js.map +1 -1
  129. package/index.cjs +1 -0
  130. package/index.js +2 -2
  131. package/libsql/driver-core.cjs +2 -1
  132. package/libsql/driver-core.cjs.map +1 -1
  133. package/libsql/driver-core.js +2 -1
  134. package/libsql/driver-core.js.map +1 -1
  135. package/libsql/session.cjs +8 -8
  136. package/libsql/session.cjs.map +1 -1
  137. package/libsql/session.d.cts +3 -3
  138. package/libsql/session.d.ts +3 -3
  139. package/libsql/session.js +8 -8
  140. package/libsql/session.js.map +1 -1
  141. package/mysql-proxy/driver.cjs +2 -1
  142. package/mysql-proxy/driver.cjs.map +1 -1
  143. package/mysql-proxy/driver.js +2 -1
  144. package/mysql-proxy/driver.js.map +1 -1
  145. package/mysql-proxy/session.cjs +6 -6
  146. package/mysql-proxy/session.cjs.map +1 -1
  147. package/mysql-proxy/session.d.cts +3 -3
  148. package/mysql-proxy/session.d.ts +3 -3
  149. package/mysql-proxy/session.js +6 -6
  150. package/mysql-proxy/session.js.map +1 -1
  151. package/mysql2/driver.cjs +2 -1
  152. package/mysql2/driver.cjs.map +1 -1
  153. package/mysql2/driver.d.cts +1 -1
  154. package/mysql2/driver.d.ts +1 -1
  155. package/mysql2/driver.js +2 -1
  156. package/mysql2/driver.js.map +1 -1
  157. package/mysql2/session.cjs +7 -7
  158. package/mysql2/session.cjs.map +1 -1
  159. package/mysql2/session.d.cts +3 -3
  160. package/mysql2/session.d.ts +3 -3
  161. package/mysql2/session.js +7 -7
  162. package/mysql2/session.js.map +1 -1
  163. package/neon-http/codecs.cjs +66 -0
  164. package/neon-http/codecs.cjs.map +1 -0
  165. package/neon-http/codecs.d.cts +9 -0
  166. package/neon-http/codecs.d.ts +9 -0
  167. package/neon-http/codecs.js +64 -0
  168. package/neon-http/codecs.js.map +1 -0
  169. package/neon-http/driver.cjs +4 -61
  170. package/neon-http/driver.cjs.map +1 -1
  171. package/neon-http/driver.d.cts +1 -5
  172. package/neon-http/driver.d.ts +1 -5
  173. package/neon-http/driver.js +4 -60
  174. package/neon-http/driver.js.map +1 -1
  175. package/neon-http/index.cjs +2 -1
  176. package/neon-http/index.d.cts +2 -1
  177. package/neon-http/index.d.ts +2 -1
  178. package/neon-http/index.js +2 -1
  179. package/neon-serverless/codecs.cjs +65 -0
  180. package/neon-serverless/codecs.cjs.map +1 -0
  181. package/neon-serverless/codecs.d.cts +9 -0
  182. package/neon-serverless/codecs.d.ts +9 -0
  183. package/neon-serverless/codecs.js +63 -0
  184. package/neon-serverless/codecs.js.map +1 -0
  185. package/neon-serverless/driver.cjs +4 -60
  186. package/neon-serverless/driver.cjs.map +1 -1
  187. package/neon-serverless/driver.d.cts +2 -6
  188. package/neon-serverless/driver.d.ts +2 -6
  189. package/neon-serverless/driver.js +4 -59
  190. package/neon-serverless/driver.js.map +1 -1
  191. package/neon-serverless/index.cjs +2 -1
  192. package/neon-serverless/index.d.cts +2 -1
  193. package/neon-serverless/index.d.ts +2 -1
  194. package/neon-serverless/index.js +2 -1
  195. package/netlify-db/codecs.cjs +122 -0
  196. package/netlify-db/codecs.cjs.map +1 -0
  197. package/netlify-db/codecs.d.cts +10 -0
  198. package/netlify-db/codecs.d.ts +10 -0
  199. package/netlify-db/codecs.js +119 -0
  200. package/netlify-db/codecs.js.map +1 -0
  201. package/netlify-db/driver.cjs +4 -118
  202. package/netlify-db/driver.cjs.map +1 -1
  203. package/netlify-db/driver.d.cts +1 -6
  204. package/netlify-db/driver.d.ts +1 -6
  205. package/netlify-db/driver.js +4 -116
  206. package/netlify-db/driver.js.map +1 -1
  207. package/netlify-db/index.cjs +3 -2
  208. package/netlify-db/index.d.cts +2 -1
  209. package/netlify-db/index.d.ts +2 -1
  210. package/netlify-db/index.js +2 -1
  211. package/netlify-db/session.d.ts +1 -1
  212. package/node-mssql/driver.cjs +3 -2
  213. package/node-mssql/driver.cjs.map +1 -1
  214. package/node-mssql/driver.d.cts +1 -1
  215. package/node-mssql/driver.d.ts +1 -1
  216. package/node-mssql/driver.js +3 -2
  217. package/node-mssql/driver.js.map +1 -1
  218. package/node-mssql/session.cjs +5 -5
  219. package/node-mssql/session.cjs.map +1 -1
  220. package/node-mssql/session.d.cts +3 -3
  221. package/node-mssql/session.d.ts +3 -3
  222. package/node-mssql/session.js +5 -5
  223. package/node-mssql/session.js.map +1 -1
  224. package/node-postgres/codecs.cjs +65 -0
  225. package/node-postgres/codecs.cjs.map +1 -0
  226. package/node-postgres/codecs.d.cts +9 -0
  227. package/node-postgres/codecs.d.ts +9 -0
  228. package/node-postgres/codecs.js +63 -0
  229. package/node-postgres/codecs.js.map +1 -0
  230. package/node-postgres/driver.cjs +4 -60
  231. package/node-postgres/driver.cjs.map +1 -1
  232. package/node-postgres/driver.d.cts +1 -5
  233. package/node-postgres/driver.d.ts +1 -5
  234. package/node-postgres/driver.js +4 -59
  235. package/node-postgres/driver.js.map +1 -1
  236. package/node-postgres/index.cjs +2 -1
  237. package/node-postgres/index.d.cts +2 -1
  238. package/node-postgres/index.d.ts +2 -1
  239. package/node-postgres/index.js +2 -1
  240. package/node-sqlite/driver.cjs +5 -1
  241. package/node-sqlite/driver.cjs.map +1 -1
  242. package/node-sqlite/driver.js +5 -1
  243. package/node-sqlite/driver.js.map +1 -1
  244. package/node-sqlite/session.cjs +14 -8
  245. package/node-sqlite/session.cjs.map +1 -1
  246. package/node-sqlite/session.d.cts +8 -3
  247. package/node-sqlite/session.d.ts +8 -3
  248. package/node-sqlite/session.js +15 -9
  249. package/node-sqlite/session.js.map +1 -1
  250. package/op-sqlite/driver.cjs +2 -1
  251. package/op-sqlite/driver.cjs.map +1 -1
  252. package/op-sqlite/driver.js +2 -1
  253. package/op-sqlite/driver.js.map +1 -1
  254. package/op-sqlite/session.cjs +8 -8
  255. package/op-sqlite/session.cjs.map +1 -1
  256. package/op-sqlite/session.d.cts +3 -3
  257. package/op-sqlite/session.d.ts +3 -3
  258. package/op-sqlite/session.js +8 -8
  259. package/op-sqlite/session.js.map +1 -1
  260. package/package.json +133 -1
  261. package/pg-core/effect/session.d.cts +1 -1
  262. package/pg-core/effect/session.d.ts +1 -1
  263. package/pg-proxy/driver.cjs +4 -4
  264. package/pg-proxy/driver.cjs.map +1 -1
  265. package/pg-proxy/driver.d.ts +1 -1
  266. package/pg-proxy/driver.js +4 -4
  267. package/pg-proxy/driver.js.map +1 -1
  268. package/pg-proxy/session.cjs.map +1 -1
  269. package/pg-proxy/session.d.cts +0 -1
  270. package/pg-proxy/session.d.ts +0 -1
  271. package/pg-proxy/session.js.map +1 -1
  272. package/pglite/codecs.cjs +92 -0
  273. package/pglite/codecs.cjs.map +1 -0
  274. package/pglite/codecs.d.cts +9 -0
  275. package/pglite/codecs.d.ts +9 -0
  276. package/pglite/codecs.js +90 -0
  277. package/pglite/codecs.js.map +1 -0
  278. package/pglite/driver.cjs +3 -86
  279. package/pglite/driver.cjs.map +1 -1
  280. package/pglite/driver.d.cts +1 -5
  281. package/pglite/driver.d.ts +1 -5
  282. package/pglite/driver.js +4 -86
  283. package/pglite/driver.js.map +1 -1
  284. package/pglite/index.cjs +2 -1
  285. package/pglite/index.d.cts +2 -1
  286. package/pglite/index.d.ts +2 -1
  287. package/pglite/index.js +2 -1
  288. package/planetscale-serverless/driver.cjs +2 -1
  289. package/planetscale-serverless/driver.cjs.map +1 -1
  290. package/planetscale-serverless/driver.d.cts +1 -1
  291. package/planetscale-serverless/driver.d.ts +1 -1
  292. package/planetscale-serverless/driver.js +2 -1
  293. package/planetscale-serverless/driver.js.map +1 -1
  294. package/planetscale-serverless/session.cjs +6 -6
  295. package/planetscale-serverless/session.cjs.map +1 -1
  296. package/planetscale-serverless/session.d.cts +3 -3
  297. package/planetscale-serverless/session.d.ts +3 -3
  298. package/planetscale-serverless/session.js +6 -6
  299. package/planetscale-serverless/session.js.map +1 -1
  300. package/postgres-js/codecs.cjs +147 -0
  301. package/postgres-js/codecs.cjs.map +1 -0
  302. package/postgres-js/codecs.d.cts +9 -0
  303. package/postgres-js/codecs.d.ts +9 -0
  304. package/postgres-js/codecs.js +145 -0
  305. package/postgres-js/codecs.js.map +1 -0
  306. package/postgres-js/driver.cjs +4 -142
  307. package/postgres-js/driver.cjs.map +1 -1
  308. package/postgres-js/driver.d.cts +1 -5
  309. package/postgres-js/driver.d.ts +1 -5
  310. package/postgres-js/driver.js +4 -141
  311. package/postgres-js/driver.js.map +1 -1
  312. package/postgres-js/index.cjs +2 -1
  313. package/postgres-js/index.d.cts +2 -1
  314. package/postgres-js/index.d.ts +2 -1
  315. package/postgres-js/index.js +2 -1
  316. package/singlestore/driver.cjs +3 -2
  317. package/singlestore/driver.cjs.map +1 -1
  318. package/singlestore/driver.d.cts +1 -1
  319. package/singlestore/driver.d.ts +1 -1
  320. package/singlestore/driver.js +3 -2
  321. package/singlestore/driver.js.map +1 -1
  322. package/singlestore/session.cjs +7 -7
  323. package/singlestore/session.cjs.map +1 -1
  324. package/singlestore/session.d.cts +3 -3
  325. package/singlestore/session.d.ts +3 -3
  326. package/singlestore/session.js +7 -7
  327. package/singlestore/session.js.map +1 -1
  328. package/singlestore-proxy/driver.cjs +2 -1
  329. package/singlestore-proxy/driver.cjs.map +1 -1
  330. package/singlestore-proxy/driver.js +2 -1
  331. package/singlestore-proxy/driver.js.map +1 -1
  332. package/singlestore-proxy/session.cjs +6 -6
  333. package/singlestore-proxy/session.cjs.map +1 -1
  334. package/singlestore-proxy/session.d.cts +3 -3
  335. package/singlestore-proxy/session.d.ts +3 -3
  336. package/singlestore-proxy/session.js +6 -6
  337. package/singlestore-proxy/session.js.map +1 -1
  338. package/sql-js/driver.cjs +2 -1
  339. package/sql-js/driver.cjs.map +1 -1
  340. package/sql-js/driver.js +2 -1
  341. package/sql-js/driver.js.map +1 -1
  342. package/sql-js/session.cjs +8 -8
  343. package/sql-js/session.cjs.map +1 -1
  344. package/sql-js/session.d.cts +3 -3
  345. package/sql-js/session.d.ts +3 -3
  346. package/sql-js/session.js +8 -8
  347. package/sql-js/session.js.map +1 -1
  348. package/sqlite-cloud/driver.cjs +2 -1
  349. package/sqlite-cloud/driver.cjs.map +1 -1
  350. package/sqlite-cloud/driver.js +2 -1
  351. package/sqlite-cloud/driver.js.map +1 -1
  352. package/sqlite-cloud/session.cjs +8 -8
  353. package/sqlite-cloud/session.cjs.map +1 -1
  354. package/sqlite-cloud/session.d.cts +3 -3
  355. package/sqlite-cloud/session.d.ts +3 -3
  356. package/sqlite-cloud/session.js +8 -8
  357. package/sqlite-cloud/session.js.map +1 -1
  358. package/sqlite-proxy/driver.cjs +2 -1
  359. package/sqlite-proxy/driver.cjs.map +1 -1
  360. package/sqlite-proxy/driver.js +2 -1
  361. package/sqlite-proxy/driver.js.map +1 -1
  362. package/sqlite-proxy/session.cjs +8 -8
  363. package/sqlite-proxy/session.cjs.map +1 -1
  364. package/sqlite-proxy/session.d.cts +3 -3
  365. package/sqlite-proxy/session.d.ts +3 -3
  366. package/sqlite-proxy/session.js +8 -8
  367. package/sqlite-proxy/session.js.map +1 -1
  368. package/tidb-serverless/driver.cjs +2 -1
  369. package/tidb-serverless/driver.cjs.map +1 -1
  370. package/tidb-serverless/driver.d.cts +1 -1
  371. package/tidb-serverless/driver.d.ts +1 -1
  372. package/tidb-serverless/driver.js +2 -1
  373. package/tidb-serverless/driver.js.map +1 -1
  374. package/tidb-serverless/session.cjs +6 -6
  375. package/tidb-serverless/session.cjs.map +1 -1
  376. package/tidb-serverless/session.d.cts +3 -3
  377. package/tidb-serverless/session.d.ts +3 -3
  378. package/tidb-serverless/session.js +6 -6
  379. package/tidb-serverless/session.js.map +1 -1
  380. package/tursodatabase/driver-core.cjs +2 -1
  381. package/tursodatabase/driver-core.cjs.map +1 -1
  382. package/tursodatabase/driver-core.js +2 -1
  383. package/tursodatabase/driver-core.js.map +1 -1
  384. package/tursodatabase/session.cjs +8 -8
  385. package/tursodatabase/session.cjs.map +1 -1
  386. package/tursodatabase/session.d.cts +3 -3
  387. package/tursodatabase/session.d.ts +3 -3
  388. package/tursodatabase/session.js +8 -8
  389. package/tursodatabase/session.js.map +1 -1
  390. package/utils.cjs +17 -0
  391. package/utils.cjs.map +1 -1
  392. package/utils.js +17 -1
  393. package/utils.js.map +1 -1
  394. package/vercel-postgres/codecs.cjs +65 -0
  395. package/vercel-postgres/codecs.cjs.map +1 -0
  396. package/vercel-postgres/codecs.d.cts +9 -0
  397. package/vercel-postgres/codecs.d.ts +9 -0
  398. package/vercel-postgres/codecs.js +63 -0
  399. package/vercel-postgres/codecs.js.map +1 -0
  400. package/vercel-postgres/driver.cjs +3 -60
  401. package/vercel-postgres/driver.cjs.map +1 -1
  402. package/vercel-postgres/driver.d.cts +1 -5
  403. package/vercel-postgres/driver.d.ts +1 -5
  404. package/vercel-postgres/driver.js +4 -60
  405. package/vercel-postgres/driver.js.map +1 -1
  406. package/vercel-postgres/index.cjs +2 -1
  407. package/vercel-postgres/index.d.cts +2 -1
  408. package/vercel-postgres/index.d.ts +2 -1
  409. package/vercel-postgres/index.js +2 -1
  410. package/version.cjs +1 -1
  411. package/version.cjs.map +1 -1
  412. package/version.d.cts +1 -1
  413. package/version.d.ts +1 -1
  414. package/version.js +1 -1
  415. package/version.js.map +1 -1
  416. package/xata-http/codecs.cjs +168 -0
  417. package/xata-http/codecs.cjs.map +1 -0
  418. package/xata-http/codecs.d.cts +9 -0
  419. package/xata-http/codecs.d.ts +9 -0
  420. package/xata-http/codecs.js +166 -0
  421. package/xata-http/codecs.js.map +1 -0
  422. package/xata-http/driver.cjs +4 -163
  423. package/xata-http/driver.cjs.map +1 -1
  424. package/xata-http/driver.d.cts +1 -5
  425. package/xata-http/driver.d.ts +1 -5
  426. package/xata-http/driver.js +4 -162
  427. package/xata-http/driver.js.map +1 -1
  428. package/xata-http/index.cjs +2 -1
  429. package/xata-http/index.d.cts +2 -1
  430. package/xata-http/index.d.ts +2 -1
  431. package/xata-http/index.js +2 -1
@@ -1,7 +1,8 @@
1
1
  import { entityKind } from "../entity.js";
2
- import { mapResultRow } from "../utils.js";
2
+ import { makeJitQueryMapper, mapResultRow } from "../utils.js";
3
3
  import { fillPlaceholders, sql } from "../sql/sql.js";
4
4
  import { NoopLogger } from "../logger.js";
5
+ import { makeJitRqbMapper } from "../relations.js";
5
6
  import { SQLiteTransaction } from "../sqlite-core/index.js";
6
7
  import { SQLitePreparedQuery, SQLiteSession } from "../sqlite-core/session.js";
7
8
 
@@ -14,13 +15,14 @@ var NodeSQLiteSession = class extends SQLiteSession {
14
15
  this.client = client;
15
16
  this.relations = relations;
16
17
  this.schema = schema;
18
+ this.options = options;
17
19
  this.logger = options.logger ?? new NoopLogger();
18
20
  }
19
21
  prepareQuery(query, fields, executeMethod, customResultMapper) {
20
- return new NodeSQLitePreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, customResultMapper);
22
+ return new NodeSQLitePreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, this.options.useJitMappers, customResultMapper);
21
23
  }
22
- prepareRelationalQuery(query, fields, executeMethod, customResultMapper) {
23
- return new NodeSQLitePreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, customResultMapper, true);
24
+ prepareRelationalQuery(query, fields, executeMethod, customResultMapper, config) {
25
+ return new NodeSQLitePreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, this.options.useJitMappers, customResultMapper, true, config);
24
26
  }
25
27
  transaction(transaction, config = {}) {
26
28
  const tx = new NodeSQLiteTransaction("sync", this.dialect, this, this.relations, this.schema);
@@ -53,13 +55,16 @@ var NodeSQLiteTransaction = class NodeSQLiteTransaction extends SQLiteTransactio
53
55
  };
54
56
  var NodeSQLitePreparedQuery = class extends SQLitePreparedQuery {
55
57
  static [entityKind] = "SQLJsPreparedQuery";
56
- constructor(stmt, query, logger, fields, executeMethod, customResultMapper, isRqbV2Query) {
58
+ jitMapper;
59
+ constructor(stmt, query, logger, fields, executeMethod, useJitMappers, customResultMapper, isRqbV2Query, rqbConfig) {
57
60
  super("sync", executeMethod, query);
58
61
  this.stmt = stmt;
59
62
  this.logger = logger;
60
63
  this.fields = fields;
64
+ this.useJitMappers = useJitMappers;
61
65
  this.customResultMapper = customResultMapper;
62
66
  this.isRqbV2Query = isRqbV2Query;
67
+ this.rqbConfig = rqbConfig;
63
68
  }
64
69
  run(placeholderValues = {}) {
65
70
  const { stmt } = this;
@@ -80,7 +85,7 @@ var NodeSQLitePreparedQuery = class extends SQLitePreparedQuery {
80
85
  stmt.setReturnArrays(true);
81
86
  const rows = this.values(placeholderValues);
82
87
  if (customResultMapper) return customResultMapper(rows);
83
- return rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
88
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
84
89
  }
85
90
  allRqbV2(placeholderValues = {}) {
86
91
  const { stmt } = this;
@@ -88,7 +93,8 @@ var NodeSQLitePreparedQuery = class extends SQLitePreparedQuery {
88
93
  const params = fillPlaceholders(query.params, placeholderValues);
89
94
  logger.logQuery(query.sql, params);
90
95
  stmt.setReturnArrays(false);
91
- return customResultMapper(stmt.all(...params).map((row) => ({ ...row })));
96
+ const rows = stmt.all(...params).map((row) => ({ ...row }));
97
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))(rows) : customResultMapper(rows);
92
98
  }
93
99
  get(placeholderValues = {}) {
94
100
  if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
@@ -104,7 +110,7 @@ var NodeSQLitePreparedQuery = class extends SQLitePreparedQuery {
104
110
  const row = stmt.get(...params);
105
111
  if (!row) return;
106
112
  if (customResultMapper) return customResultMapper([row]);
107
- return mapResultRow(fields, row, joinsNotNullableMap);
113
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))([row])[0] : mapResultRow(fields, row, joinsNotNullableMap);
108
114
  }
109
115
  getRqbV2(placeholderValues = {}) {
110
116
  const { stmt } = this;
@@ -114,7 +120,7 @@ var NodeSQLitePreparedQuery = class extends SQLitePreparedQuery {
114
120
  stmt.setReturnArrays(false);
115
121
  const row = stmt.get(...params);
116
122
  if (!row) return;
117
- return customResultMapper([{ ...row }]);
123
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))([row]) : customResultMapper([{ ...row }]);
118
124
  }
119
125
  values(placeholderValues = {}) {
120
126
  const { stmt } = this;
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","names":["PreparedQueryBase"],"sources":["../../src/node-sqlite/session.ts"],"sourcesContent":["import type { DatabaseSync, SQLInputValue, StatementResultingChanges, StatementSync } from 'node:sqlite';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } 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 as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, mapResultRow } from '~/utils.ts';\n\nexport interface NodeSQLiteSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class NodeSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', StatementResultingChanges, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: DatabaseSync,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: NodeSQLiteSessionOptions = {},\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\tcustomResultMapper: (rows: unknown[][]) => unknown,\n\t): NodeSQLitePreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new NodeSQLitePreparedQuery(stmt, query, this.logger, fields, executeMethod, customResultMapper);\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): NodeSQLitePreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new NodeSQLitePreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: NodeSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new NodeSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config.behavior ? ` ${config.behavior}` : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class NodeSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', StatementResultingChanges, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: NodeSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NodeSQLiteTransaction(\n\t\t\t'sync',\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\ttx.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\ttx.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\ttx.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class NodeSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends PreparedQueryBase<\n\t{ type: 'sync'; run: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLJsPreparedQuery';\n\n\tconstructor(\n\t\tprivate stmt: StatementSync,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\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('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues: Record<string, unknown> = {}): StatementResultingChanges {\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst result = stmt.run(...params as SQLInputValue[]);\n\n\t\treturn result;\n\t}\n\n\tall(placeholderValues: Record<string, unknown> = {}): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\t\tconst { stmt } = this;\n\n\t\tconst { fields, joinsNotNullableMap, logger, query, 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\n\t\t\tstmt.setReturnArrays(false);\n\t\t\tconst rows = stmt.all(...params as SQLInputValue[]);\n\n\t\t\treturn rows;\n\t\t}\n\n\t\tstmt.setReturnArrays(true);\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate allRqbV2(placeholderValues: Record<string, unknown> = {}): T['all'] {\n\t\tconst { stmt } = this;\n\n\t\tconst { logger, query, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tstmt.setReturnArrays(false);\n\t\tconst rows = stmt.all(...params as SQLInputValue[]).map((row) => ({ ...row })); // [Object: null prototype] => Object\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 T['all'];\n\t}\n\n\tget(placeholderValues: Record<string, unknown> = {}): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tstmt.setReturnArrays(false);\n\t\t\tconst result = stmt.get(...params as SQLInputValue[]);\n\n\t\t\treturn result;\n\t\t}\n\n\t\tstmt.setReturnArrays(true);\n\t\tconst row = stmt.get(...params as SQLInputValue[]) as any as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate getRqbV2(placeholderValues: Record<string, unknown> = {}): T['get'] {\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { customResultMapper } = this;\n\n\t\tstmt.setReturnArrays(false);\n\t\tconst row = stmt.get(...params as SQLInputValue[]);\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\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 T['get']; // [Object: null prototype] => Object\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> = {}): T['values'] {\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tstmt.setReturnArrays(true);\n\t\treturn stmt.all(...params as SQLInputValue[]);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"session.js","names":["PreparedQueryBase"],"sources":["../../src/node-sqlite/session.ts"],"sourcesContent":["import type { DatabaseSync, SQLInputValue, StatementResultingChanges, StatementSync } from 'node:sqlite';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } 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 as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface NodeSQLiteSessionOptions {\n\tlogger?: Logger;\n\tuseJitMappers?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class NodeSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', StatementResultingChanges, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: DatabaseSync,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NodeSQLiteSessionOptions = {},\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\tcustomResultMapper: (rows: unknown[][]) => unknown,\n\t): NodeSQLitePreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new NodeSQLitePreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\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\tconfig: RelationalQueryMapperConfig,\n\t): NodeSQLitePreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new NodeSQLitePreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: NodeSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new NodeSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config.behavior ? ` ${config.behavior}` : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class NodeSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', StatementResultingChanges, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: NodeSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NodeSQLiteTransaction(\n\t\t\t'sync',\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\ttx.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\ttx.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\ttx.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class NodeSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends PreparedQueryBase<\n\t{ type: 'sync'; run: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLJsPreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate stmt: StatementSync,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMappers: boolean | undefined,\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\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues: Record<string, unknown> = {}): StatementResultingChanges {\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst result = stmt.run(...params as SQLInputValue[]);\n\n\t\treturn result;\n\t}\n\n\tall(placeholderValues: Record<string, unknown> = {}): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\t\tconst { stmt } = this;\n\n\t\tconst { fields, joinsNotNullableMap, logger, query, 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\n\t\t\tstmt.setReturnArrays(false);\n\t\t\tconst rows = stmt.all(...params as SQLInputValue[]);\n\n\t\t\treturn rows;\n\t\t}\n\n\t\tstmt.setReturnArrays(true);\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate allRqbV2(placeholderValues: Record<string, unknown> = {}): T['all'] {\n\t\tconst { stmt } = this;\n\n\t\tconst { logger, query, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tstmt.setReturnArrays(false);\n\t\tconst rows = stmt.all(...params as SQLInputValue[]).map((row) => ({ ...row })); // [Object: null prototype] => Object\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows);\n\t}\n\n\tget(placeholderValues: Record<string, unknown> = {}): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tstmt.setReturnArrays(false);\n\t\t\tconst result = stmt.get(...params as SQLInputValue[]);\n\n\t\t\treturn result;\n\t\t}\n\n\t\tstmt.setReturnArrays(true);\n\t\tconst row = stmt.get(...params as SQLInputValue[]) as any as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate getRqbV2(placeholderValues: Record<string, unknown> = {}): T['get'] {\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { customResultMapper } = this;\n\n\t\tstmt.setReturnArrays(false);\n\t\tconst row = stmt.get(...params as SQLInputValue[]);\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!))([row])\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\t[{ ...row }], // [Object: null prototype] => Object\n\t\t\t);\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> = {}): T['values'] {\n\t\tconst { stmt } = this;\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tstmt.setReturnArrays(true);\n\t\treturn stmt.all(...params as SQLInputValue[]);\n\t}\n}\n"],"mappings":";;;;;;;;;AA8BA,IAAa,oBAAb,cAIU,cAAmF;CAC5F,QAA0B,cAAsB;CAEhD,AAAQ;CAER,YACC,AAAQ,QACR,SACA,AAAQ,WACR,AAAQ,QACR,AAAQ,UAAoC,EAAE,EAC7C;AACD,QAAM,QAAQ;EANN;EAEA;EACA;EACA;AAGR,OAAK,SAAS,QAAQ,UAAU,IAAI,YAAY;;CAGjD,aACC,OACA,QACA,eACA,oBAC6B;AAE7B,SAAO,IAAI,wBADE,KAAK,OAAO,QAAQ,MAAM,IAAI,EAG1C,OACA,KAAK,QACL,QACA,eACA,KAAK,QAAQ,eACb,mBACA;;CAGF,uBACC,OACA,QACA,eACA,oBACA,QACmC;AAEnC,SAAO,IAAI,wBADE,KAAK,OAAO,QAAQ,MAAM,IAAI,EAG1C,OACA,KAAK,QACL,QACA,eACA,KAAK,QAAQ,eACb,oBACA,MACA,OACA;;CAGF,AAAS,YACR,aACA,SAAkC,EAAE,EAChC;EACJ,MAAM,KAAK,IAAI,sBAAsB,QAAQ,KAAK,SAAS,MAAM,KAAK,WAAW,KAAK,OAAO;AAC7F,OAAK,IAAI,IAAI,IAAI,QAAQ,OAAO,WAAW,IAAI,OAAO,aAAa,KAAK,CAAC;AACzE,MAAI;GACH,MAAM,SAAS,YAAY,GAAG;AAC9B,QAAK,IAAI,GAAG,SAAS;AACrB,UAAO;WACC,KAAK;AACb,QAAK,IAAI,GAAG,WAAW;AACvB,SAAM;;;;AAKT,IAAa,wBAAb,MAAa,8BAIH,kBAAuF;CAChG,QAA0B,cAAsB;CAEhD,AAAS,YACR,aAII;EACJ,MAAM,gBAAgB,KAAK,KAAK,cAAc;EAC9C,MAAM,KAAK,IAAI,sBACd,QACA,KAAK,SACL,KAAK,SACL,KAAK,WACL,KAAK,QACL,KAAK,cAAc,EACnB;AACD,KAAG,IAAI,IAAI,IAAI,aAAa,gBAAgB,CAAC;AAC7C,MAAI;GACH,MAAM,SAAS,YAAY,GAAG;AAC9B,MAAG,IAAI,IAAI,IAAI,qBAAqB,gBAAgB,CAAC;AACrD,UAAO;WACC,KAAK;AACb,MAAG,IAAI,IAAI,IAAI,yBAAyB,gBAAgB,CAAC;AACzD,SAAM;;;;AAKT,IAAa,0BAAb,cAGUA,oBAER;CACD,QAA0B,cAAsB;CAChD,AAAQ;CAER,YACC,AAAQ,MACR,OACA,AAAQ,QACR,AAAQ,QACR,eACA,AAAQ,eACR,AAAQ,oBAIR,AAAQ,cACR,AAAQ,WACP;AACD,QAAM,QAAQ,eAAe,MAAM;EAb3B;EAEA;EACA;EAEA;EACA;EAIA;EACA;;CAKT,IAAI,oBAA6C,EAAE,EAA6B;EAC/E,MAAM,EAAE,SAAS;EAEjB,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,kBAAkB;AACrE,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;AAI5C,SAFe,KAAK,IAAI,GAAG,OAA0B;;CAKtD,IAAI,oBAA6C,EAAE,EAAY;AAC9D,MAAI,KAAK,aAAc,QAAO,KAAK,SAAS,kBAAkB;EAC9D,MAAM,EAAE,SAAS;EAEjB,MAAM,EAAE,QAAQ,qBAAqB,QAAQ,OAAO,uBAAuB;AAC3E,MAAI,CAAC,UAAU,CAAC,oBAAoB;GACnC,MAAM,SAAS,iBAAiB,MAAM,QAAQ,kBAAkB;AAChE,UAAO,SAAS,MAAM,KAAK,OAAO;AAElC,QAAK,gBAAgB,MAAM;AAG3B,UAFa,KAAK,IAAI,GAAG,OAA0B;;AAKpD,OAAK,gBAAgB,KAAK;EAC1B,MAAM,OAAO,KAAK,OAAO,kBAAkB;AAE3C,MAAI,mBACH,QAAQ,mBAGM,KAAK;AAGpB,SAAO,KAAK,iBACR,KAAK,YAAY,KAAK,aACrB,mBAA6B,QAAS,oBAAoB,EAAE,KAAK,GACnE,KAAK,KAAK,QAAQ,aAAa,QAAS,KAAK,oBAAoB,CAAC;;CAGtE,AAAQ,SAAS,oBAA6C,EAAE,EAAY;EAC3E,MAAM,EAAE,SAAS;EAEjB,MAAM,EAAE,QAAQ,OAAO,uBAAuB;EAC9C,MAAM,SAAS,iBAAiB,MAAM,QAAQ,kBAAkB;AAChE,SAAO,SAAS,MAAM,KAAK,OAAO;AAElC,OAAK,gBAAgB,MAAM;EAC3B,MAAM,OAAO,KAAK,IAAI,GAAG,OAA0B,CAAC,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE;AAE9E,SAAO,KAAK,iBACR,KAAK,YAAY,KAAK,aACrB,iBAA2B,KAAK,UAAW,EAAE,KAAK,GACnD,mBAAoE,KAAK;;CAG9E,IAAI,oBAA6C,EAAE,EAAY;AAC9D,MAAI,KAAK,aAAc,QAAO,KAAK,SAAS,kBAAkB;EAC9D,MAAM,EAAE,SAAS;EAEjB,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,kBAAkB;AACrE,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;EAE5C,MAAM,EAAE,QAAQ,qBAAqB,uBAAuB;AAC5D,MAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,QAAK,gBAAgB,MAAM;AAG3B,UAFe,KAAK,IAAI,GAAG,OAA0B;;AAKtD,OAAK,gBAAgB,KAAK;EAC1B,MAAM,MAAM,KAAK,IAAI,GAAG,OAA0B;AAElD,MAAI,CAAC,IACJ;AAGD,MAAI,mBACH,QAAQ,mBAGM,CAAC,IAAI,CAAC;AAGrB,SAAO,KAAK,iBACR,KAAK,YAAY,KAAK,aACrB,mBAA+B,QAAS,oBAAoB,EAC9D,CAAC,IAAI,CACL,CAAC,KACD,aAAa,QAAS,KAAK,oBAAoB;;CAGnD,AAAQ,SAAS,oBAA6C,EAAE,EAAY;EAC3E,MAAM,EAAE,SAAS;EAEjB,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,kBAAkB;AACrE,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;EAE5C,MAAM,EAAE,uBAAuB;AAE/B,OAAK,gBAAgB,MAAM;EAC3B,MAAM,MAAM,KAAK,IAAI,GAAG,OAA0B;AAElD,MAAI,CAAC,IACJ;AAGD,SAAO,KAAK,iBACR,KAAK,YAAY,KAAK,aACrB,iBAA6B,KAAK,UAAW,EAAE,CAAC,IAAI,CAAC,GACtD,mBACF,CAAC,EAAE,GAAG,KAAK,CAAC,CACZ;;CAGH,OAAO,oBAA6C,EAAE,EAAe;EACpE,MAAM,EAAE,SAAS;EAEjB,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,kBAAkB;AACrE,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;AAE5C,OAAK,gBAAgB,KAAK;AAC1B,SAAO,KAAK,IAAI,GAAG,OAA0B"}
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
3
  const require_op_sqlite_session = require('./session.cjs');
4
4
  let __entity_ts = require("../entity.cjs");
5
+ let __utils_ts = require("../utils.cjs");
5
6
  let __logger_ts = require("../logger.cjs");
6
7
  let ___relations_ts = require("../_relations.cjs");
7
8
  ___relations_ts = require_runtime.__toESM(___relations_ts);
@@ -30,7 +31,7 @@ function drizzle(client, config = {}) {
30
31
  const db = new OPSQLiteDatabase("async", dialect, new require_op_sqlite_session.OPSQLiteSession(client, dialect, relations, schema, {
31
32
  logger,
32
33
  cache: config.cache,
33
- useJitMapper: config.useJitMappers
34
+ useJitMappers: (0, __utils_ts.jitCompatCheck)(config.useJitMappers)
34
35
  }), relations, schema);
35
36
  db.$client = client;
36
37
  db.$cache = config.cache;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.cjs","names":["BaseSQLiteDatabase","entityKind","SQLiteAsyncDialect","DefaultLogger","V1","OPSQLiteSession"],"sources":["../../src/op-sqlite/driver.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { OPSQLiteSession } from './session.ts';\n\nexport class OPSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'async', QueryResult, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteDatabase';\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: OPSQLiteConnection,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): OPSQLiteDatabase<TSchema, TRelations> & {\n\t$client: OPSQLiteConnection;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new OPSQLiteSession(client, dialect, relations, schema, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMapper: config.useJitMappers,\n\t});\n\tconst db = new OPSQLiteDatabase(\n\t\t'async',\n\t\tdialect,\n\t\tsession as OPSQLiteDatabase<Record<string, any>, AnyRelations>['session'],\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as OPSQLiteDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;AAUA,IAAa,mBAAb,cAGUA,uCAA8D;CACvE,QAA0BC,0BAAsB;;AAGjD,SAAgB,QAIf,QACA,SAA6C,EAAE,EAG9C;CACD,MAAM,UAAU,IAAIC,6CAAoB;CACxC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAIC,2BAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAeC,gBAAG,8BACvB,OAAO,QACPA,gBAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAGF,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,iBACd,SACA,SAPe,IAAIC,0CAAgB,QAAQ,SAAS,WAAW,QAAQ;EACvE;EACA,OAAO,OAAO;EACd,cAAc,OAAO;EACrB,CAAC,EAKD,WACA,OACA;AAID,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO"}
1
+ {"version":3,"file":"driver.cjs","names":["BaseSQLiteDatabase","entityKind","SQLiteAsyncDialect","DefaultLogger","V1","OPSQLiteSession"],"sources":["../../src/op-sqlite/driver.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, jitCompatCheck } from '~/utils.ts';\nimport { OPSQLiteSession } from './session.ts';\n\nexport class OPSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'async', QueryResult, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteDatabase';\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: OPSQLiteConnection,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): OPSQLiteDatabase<TSchema, TRelations> & {\n\t$client: OPSQLiteConnection;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new OPSQLiteSession(client, dialect, relations, schema, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMappers: jitCompatCheck(config.useJitMappers),\n\t});\n\tconst db = new OPSQLiteDatabase(\n\t\t'async',\n\t\tdialect,\n\t\tsession as OPSQLiteDatabase<Record<string, any>, AnyRelations>['session'],\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as OPSQLiteDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;AAUA,IAAa,mBAAb,cAGUA,uCAA8D;CACvE,QAA0BC,0BAAsB;;AAGjD,SAAgB,QAIf,QACA,SAA6C,EAAE,EAG9C;CACD,MAAM,UAAU,IAAIC,6CAAoB;CACxC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAIC,2BAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAeC,gBAAG,8BACvB,OAAO,QACPA,gBAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAGF,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,iBACd,SACA,SAPe,IAAIC,0CAAgB,QAAQ,SAAS,WAAW,QAAQ;EACvE;EACA,OAAO,OAAO;EACd,8CAA8B,OAAO,cAAc;EACnD,CAAC,EAKD,WACA,OACA;AAID,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO"}
@@ -1,5 +1,6 @@
1
1
  import { OPSQLiteSession } from "./session.js";
2
2
  import { entityKind } from "../entity.js";
3
+ import { jitCompatCheck } from "../utils.js";
3
4
  import { DefaultLogger } from "../logger.js";
4
5
  import * as V1 from "../_relations.js";
5
6
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
@@ -27,7 +28,7 @@ function drizzle(client, config = {}) {
27
28
  const db = new OPSQLiteDatabase("async", dialect, new OPSQLiteSession(client, dialect, relations, schema, {
28
29
  logger,
29
30
  cache: config.cache,
30
- useJitMapper: config.useJitMappers
31
+ useJitMappers: jitCompatCheck(config.useJitMappers)
31
32
  }), relations, schema);
32
33
  db.$client = client;
33
34
  db.$cache = config.cache;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","names":[],"sources":["../../src/op-sqlite/driver.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { OPSQLiteSession } from './session.ts';\n\nexport class OPSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'async', QueryResult, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteDatabase';\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: OPSQLiteConnection,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): OPSQLiteDatabase<TSchema, TRelations> & {\n\t$client: OPSQLiteConnection;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new OPSQLiteSession(client, dialect, relations, schema, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMapper: config.useJitMappers,\n\t});\n\tconst db = new OPSQLiteDatabase(\n\t\t'async',\n\t\tdialect,\n\t\tsession as OPSQLiteDatabase<Record<string, any>, AnyRelations>['session'],\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as OPSQLiteDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;AAUA,IAAa,mBAAb,cAGU,mBAA8D;CACvE,QAA0B,cAAsB;;AAGjD,SAAgB,QAIf,QACA,SAA6C,EAAE,EAG9C;CACD,MAAM,UAAU,IAAI,oBAAoB;CACxC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAI,eAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAe,GAAG,8BACvB,OAAO,QACP,GAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAGF,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,iBACd,SACA,SAPe,IAAI,gBAAgB,QAAQ,SAAS,WAAW,QAAQ;EACvE;EACA,OAAO,OAAO;EACd,cAAc,OAAO;EACrB,CAAC,EAKD,WACA,OACA;AAID,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO"}
1
+ {"version":3,"file":"driver.js","names":[],"sources":["../../src/op-sqlite/driver.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, jitCompatCheck } from '~/utils.ts';\nimport { OPSQLiteSession } from './session.ts';\n\nexport class OPSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'async', QueryResult, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteDatabase';\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: OPSQLiteConnection,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): OPSQLiteDatabase<TSchema, TRelations> & {\n\t$client: OPSQLiteConnection;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new OPSQLiteSession(client, dialect, relations, schema, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMappers: jitCompatCheck(config.useJitMappers),\n\t});\n\tconst db = new OPSQLiteDatabase(\n\t\t'async',\n\t\tdialect,\n\t\tsession as OPSQLiteDatabase<Record<string, any>, AnyRelations>['session'],\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as OPSQLiteDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,mBAAb,cAGU,mBAA8D;CACvE,QAA0B,cAAsB;;AAGjD,SAAgB,QAIf,QACA,SAA6C,EAAE,EAG9C;CACD,MAAM,UAAU,IAAI,oBAAoB;CACxC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAI,eAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAe,GAAG,8BACvB,OAAO,QACP,GAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAGF,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,iBACd,SACA,SAPe,IAAI,gBAAgB,QAAQ,SAAS,WAAW,QAAQ;EACvE;EACA,OAAO,OAAO;EACd,eAAe,eAAe,OAAO,cAAc;EACnD,CAAC,EAKD,WACA,OACA;AAID,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAGjD,QAAO"}
@@ -24,10 +24,10 @@ var OPSQLiteSession = class extends __sqlite_core_session_ts.SQLiteSession {
24
24
  this.cache = options.cache ?? new __cache_core_index_ts.NoopCache();
25
25
  }
26
26
  prepareQuery(query, fields, executeMethod, customResultMapper, queryMetadata, cacheConfig) {
27
- return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, executeMethod, this.options.useJitMapper, customResultMapper);
27
+ return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, executeMethod, this.options.useJitMappers, customResultMapper);
28
28
  }
29
29
  prepareRelationalQuery(query, fields, executeMethod, customResultMapper, config) {
30
- return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, executeMethod, this.options.useJitMapper, customResultMapper, true, config);
30
+ return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, executeMethod, this.options.useJitMappers, customResultMapper, true, config);
31
31
  }
32
32
  transaction(transaction, config = {}) {
33
33
  const tx = new OPSQLiteTransaction("async", this.dialect, this, this.relations, this.schema);
@@ -61,12 +61,12 @@ var OPSQLiteTransaction = class OPSQLiteTransaction extends __sqlite_core_index_
61
61
  var OPSQLitePreparedQuery = class extends __sqlite_core_session_ts.SQLitePreparedQuery {
62
62
  static [__entity_ts.entityKind] = "OPSQLitePreparedQuery";
63
63
  jitMapper;
64
- constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, executeMethod, useJitMapper, customResultMapper, isRqbV2Query, rqbConfig) {
64
+ constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, executeMethod, useJitMappers, customResultMapper, isRqbV2Query, rqbConfig) {
65
65
  super("sync", executeMethod, query, cache, queryMetadata, cacheConfig);
66
66
  this.client = client;
67
67
  this.logger = logger;
68
68
  this.fields = fields;
69
- this.useJitMapper = useJitMapper;
69
+ this.useJitMappers = useJitMappers;
70
70
  this.customResultMapper = customResultMapper;
71
71
  this.isRqbV2Query = isRqbV2Query;
72
72
  this.rqbConfig = rqbConfig;
@@ -90,14 +90,14 @@ var OPSQLitePreparedQuery = class extends __sqlite_core_session_ts.SQLitePrepare
90
90
  }
91
91
  const rows = await this.values(placeholderValues);
92
92
  if (customResultMapper) return customResultMapper(rows);
93
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? (0, __utils_ts.makeJitQueryMapper)(fields, joinsNotNullableMap))(rows) : rows.map((row) => (0, __utils_ts.mapResultRow)(fields, row, joinsNotNullableMap));
93
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __utils_ts.makeJitQueryMapper)(fields, joinsNotNullableMap))(rows) : rows.map((row) => (0, __utils_ts.mapResultRow)(fields, row, joinsNotNullableMap));
94
94
  }
95
95
  async allRqbV2(placeholderValues) {
96
96
  const { query, logger, customResultMapper, client } = this;
97
97
  const params = (0, __sql_sql_ts.fillPlaceholders)(query.params, placeholderValues ?? {});
98
98
  logger.logQuery(query.sql, params);
99
99
  const rows = client.execute(query.sql, params).rows?._array || [];
100
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? (0, __relations_ts.makeJitRqbMapper)(this.rqbConfig))(rows) : customResultMapper(rows);
100
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __relations_ts.makeJitRqbMapper)(this.rqbConfig))(rows) : customResultMapper(rows);
101
101
  }
102
102
  async get(placeholderValues) {
103
103
  if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
@@ -111,7 +111,7 @@ var OPSQLitePreparedQuery = class extends __sqlite_core_session_ts.SQLitePrepare
111
111
  const row = rows[0];
112
112
  if (!row) return;
113
113
  if (customResultMapper) return customResultMapper(rows);
114
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? (0, __utils_ts.makeJitQueryMapper)(fields, joinsNotNullableMap))([row])[0] : (0, __utils_ts.mapResultRow)(fields, row, joinsNotNullableMap);
114
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __utils_ts.makeJitQueryMapper)(fields, joinsNotNullableMap))([row])[0] : (0, __utils_ts.mapResultRow)(fields, row, joinsNotNullableMap);
115
115
  }
116
116
  async getRqbV2(placeholderValues) {
117
117
  const { customResultMapper, query, logger, client } = this;
@@ -120,7 +120,7 @@ var OPSQLitePreparedQuery = class extends __sqlite_core_session_ts.SQLitePrepare
120
120
  const rows = client.execute(query.sql, params).rows?._array || [];
121
121
  const row = rows[0];
122
122
  if (!row) return;
123
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? (0, __relations_ts.makeJitRqbMapper)(this.rqbConfig))(rows) : customResultMapper([row]);
123
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __relations_ts.makeJitRqbMapper)(this.rqbConfig))(rows) : customResultMapper([row]);
124
124
  }
125
125
  async values(placeholderValues) {
126
126
  const params = (0, __sql_sql_ts.fillPlaceholders)(this.query.params, placeholderValues ?? {});
@@ -1 +1 @@
1
- {"version":3,"file":"session.cjs","names":["SQLiteSession","entityKind","NoopLogger","NoopCache","sql","SQLiteTransaction","SQLitePreparedQuery"],"sources":["../../src/op-sqlite/session.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport type * as V1 from '~/_relations.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 {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.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 {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface OPSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class OPSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: OPSQLiteSessionOptions = {},\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\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): OPSQLitePreparedQuery<T> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\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\tconfig: RelationalQueryMapperConfig,\n\t): OPSQLitePreparedQuery<T, true> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new OPSQLiteTransaction('async', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new OPSQLiteTransaction(\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\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: QueryResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'OPSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\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\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync run(placeholderValues?: Record<string, unknown>): Promise<QueryResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\treturn this.client.executeAsync(this.query.sql, params);\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, joinsNotNullableMap, query, logger, customResultMapper, client } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, customResultMapper, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['all'];\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst rows = await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t\treturn rows[0];\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { customResultMapper, query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)([row]) as T['get'];\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\treturn await this.client.executeRawAsync(this.query.sql, params);\n\t\t});\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"session.cjs","names":["SQLiteSession","entityKind","NoopLogger","NoopCache","sql","SQLiteTransaction","SQLitePreparedQuery"],"sources":["../../src/op-sqlite/session.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport type * as V1 from '~/_relations.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 {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.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 {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface OPSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMappers?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class OPSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: OPSQLiteSessionOptions = {},\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\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): OPSQLitePreparedQuery<T> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\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\tconfig: RelationalQueryMapperConfig,\n\t): OPSQLitePreparedQuery<T, true> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new OPSQLiteTransaction('async', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new OPSQLiteTransaction(\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\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: QueryResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'OPSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\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\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMappers: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync run(placeholderValues?: Record<string, unknown>): Promise<QueryResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\treturn this.client.executeAsync(this.query.sql, params);\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, joinsNotNullableMap, query, logger, customResultMapper, client } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, customResultMapper, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['all'];\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst rows = await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t\treturn rows[0];\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { customResultMapper, query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)([row]) as T['get'];\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\treturn await this.client.executeRawAsync(this.query.sql, params);\n\t\t});\n\t}\n}\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ import { OPSQLiteConnection, QueryResult } from "@op-engineering/op-sqlite";
15
15
  interface OPSQLiteSessionOptions {
16
16
  logger?: Logger;
17
17
  cache?: Cache;
18
- useJitMapper?: boolean;
18
+ useJitMappers?: boolean;
19
19
  }
20
20
  type PreparedQueryConfig$1 = Omit<PreparedQueryConfig, 'statement' | 'run'>;
21
21
  declare class OPSQLiteSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', QueryResult, TFullSchema, TRelations, TSchema> {
@@ -49,7 +49,7 @@ declare class OPSQLitePreparedQuery<T extends PreparedQueryConfig$1 = PreparedQu
49
49
  private client;
50
50
  private logger;
51
51
  private fields;
52
- private useJitMapper;
52
+ private useJitMappers;
53
53
  private customResultMapper?;
54
54
  private isRqbV2Query?;
55
55
  private rqbConfig?;
@@ -58,7 +58,7 @@ declare class OPSQLitePreparedQuery<T extends PreparedQueryConfig$1 = PreparedQu
58
58
  constructor(client: OPSQLiteConnection, query: Query, logger: Logger, cache: Cache, queryMetadata: {
59
59
  type: 'select' | 'update' | 'delete' | 'insert';
60
60
  tables: string[];
61
- } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, useJitMapper: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
61
+ } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, useJitMappers: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
62
62
  run(placeholderValues?: Record<string, unknown>): Promise<QueryResult>;
63
63
  all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
64
64
  private allRqbV2;
@@ -15,7 +15,7 @@ import { OPSQLiteConnection, QueryResult } from "@op-engineering/op-sqlite";
15
15
  interface OPSQLiteSessionOptions {
16
16
  logger?: Logger;
17
17
  cache?: Cache;
18
- useJitMapper?: boolean;
18
+ useJitMappers?: boolean;
19
19
  }
20
20
  type PreparedQueryConfig$1 = Omit<PreparedQueryConfig, 'statement' | 'run'>;
21
21
  declare class OPSQLiteSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', QueryResult, TFullSchema, TRelations, TSchema> {
@@ -49,7 +49,7 @@ declare class OPSQLitePreparedQuery<T extends PreparedQueryConfig$1 = PreparedQu
49
49
  private client;
50
50
  private logger;
51
51
  private fields;
52
- private useJitMapper;
52
+ private useJitMappers;
53
53
  private customResultMapper?;
54
54
  private isRqbV2Query?;
55
55
  private rqbConfig?;
@@ -58,7 +58,7 @@ declare class OPSQLitePreparedQuery<T extends PreparedQueryConfig$1 = PreparedQu
58
58
  constructor(client: OPSQLiteConnection, query: Query, logger: Logger, cache: Cache, queryMetadata: {
59
59
  type: 'select' | 'update' | 'delete' | 'insert';
60
60
  tables: string[];
61
- } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, useJitMapper: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
61
+ } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, useJitMappers: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
62
62
  run(placeholderValues?: Record<string, unknown>): Promise<QueryResult>;
63
63
  all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
64
64
  private allRqbV2;
@@ -22,10 +22,10 @@ var OPSQLiteSession = class extends SQLiteSession {
22
22
  this.cache = options.cache ?? new NoopCache();
23
23
  }
24
24
  prepareQuery(query, fields, executeMethod, customResultMapper, queryMetadata, cacheConfig) {
25
- return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, executeMethod, this.options.useJitMapper, customResultMapper);
25
+ return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, executeMethod, this.options.useJitMappers, customResultMapper);
26
26
  }
27
27
  prepareRelationalQuery(query, fields, executeMethod, customResultMapper, config) {
28
- return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, executeMethod, this.options.useJitMapper, customResultMapper, true, config);
28
+ return new OPSQLitePreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, executeMethod, this.options.useJitMappers, customResultMapper, true, config);
29
29
  }
30
30
  transaction(transaction, config = {}) {
31
31
  const tx = new OPSQLiteTransaction("async", this.dialect, this, this.relations, this.schema);
@@ -59,12 +59,12 @@ var OPSQLiteTransaction = class OPSQLiteTransaction extends SQLiteTransaction {
59
59
  var OPSQLitePreparedQuery = class extends SQLitePreparedQuery {
60
60
  static [entityKind] = "OPSQLitePreparedQuery";
61
61
  jitMapper;
62
- constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, executeMethod, useJitMapper, customResultMapper, isRqbV2Query, rqbConfig) {
62
+ constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, executeMethod, useJitMappers, customResultMapper, isRqbV2Query, rqbConfig) {
63
63
  super("sync", executeMethod, query, cache, queryMetadata, cacheConfig);
64
64
  this.client = client;
65
65
  this.logger = logger;
66
66
  this.fields = fields;
67
- this.useJitMapper = useJitMapper;
67
+ this.useJitMappers = useJitMappers;
68
68
  this.customResultMapper = customResultMapper;
69
69
  this.isRqbV2Query = isRqbV2Query;
70
70
  this.rqbConfig = rqbConfig;
@@ -88,14 +88,14 @@ var OPSQLitePreparedQuery = class extends SQLitePreparedQuery {
88
88
  }
89
89
  const rows = await this.values(placeholderValues);
90
90
  if (customResultMapper) return customResultMapper(rows);
91
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
91
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
92
92
  }
93
93
  async allRqbV2(placeholderValues) {
94
94
  const { query, logger, customResultMapper, client } = this;
95
95
  const params = fillPlaceholders(query.params, placeholderValues ?? {});
96
96
  logger.logQuery(query.sql, params);
97
97
  const rows = client.execute(query.sql, params).rows?._array || [];
98
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))(rows) : customResultMapper(rows);
98
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))(rows) : customResultMapper(rows);
99
99
  }
100
100
  async get(placeholderValues) {
101
101
  if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
@@ -109,7 +109,7 @@ var OPSQLitePreparedQuery = class extends SQLitePreparedQuery {
109
109
  const row = rows[0];
110
110
  if (!row) return;
111
111
  if (customResultMapper) return customResultMapper(rows);
112
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))([row])[0] : mapResultRow(fields, row, joinsNotNullableMap);
112
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))([row])[0] : mapResultRow(fields, row, joinsNotNullableMap);
113
113
  }
114
114
  async getRqbV2(placeholderValues) {
115
115
  const { customResultMapper, query, logger, client } = this;
@@ -118,7 +118,7 @@ var OPSQLitePreparedQuery = class extends SQLitePreparedQuery {
118
118
  const rows = client.execute(query.sql, params).rows?._array || [];
119
119
  const row = rows[0];
120
120
  if (!row) return;
121
- return this.useJitMapper ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))(rows) : customResultMapper([row]);
121
+ return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))(rows) : customResultMapper([row]);
122
122
  }
123
123
  async values(placeholderValues) {
124
124
  const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","names":[],"sources":["../../src/op-sqlite/session.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport type * as V1 from '~/_relations.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 {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.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 {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface OPSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class OPSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: OPSQLiteSessionOptions = {},\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\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): OPSQLitePreparedQuery<T> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\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\tconfig: RelationalQueryMapperConfig,\n\t): OPSQLitePreparedQuery<T, true> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new OPSQLiteTransaction('async', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new OPSQLiteTransaction(\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\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: QueryResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'OPSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\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\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync run(placeholderValues?: Record<string, unknown>): Promise<QueryResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\treturn this.client.executeAsync(this.query.sql, params);\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, joinsNotNullableMap, query, logger, customResultMapper, client } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, customResultMapper, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['all'];\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst rows = await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t\treturn rows[0];\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { customResultMapper, query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)([row]) as T['get'];\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\treturn await this.client.executeRawAsync(this.query.sql, params);\n\t\t});\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"session.js","names":[],"sources":["../../src/op-sqlite/session.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport type * as V1 from '~/_relations.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 {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.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 {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface OPSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMappers?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class OPSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: OPSQLiteSessionOptions = {},\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\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): OPSQLitePreparedQuery<T> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\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\tconfig: RelationalQueryMapperConfig,\n\t): OPSQLitePreparedQuery<T, true> {\n\t\treturn new OPSQLitePreparedQuery(\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\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new OPSQLiteTransaction('async', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'OPSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: OPSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new OPSQLiteTransaction(\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\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class OPSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: QueryResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'OPSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate client: OPSQLiteConnection,\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\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMappers: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync run(placeholderValues?: Record<string, unknown>): Promise<QueryResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\treturn this.client.executeAsync(this.query.sql, params);\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, joinsNotNullableMap, query, logger, customResultMapper, client } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, customResultMapper, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['all'];\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst rows = await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\treturn client.execute(query.sql, params).rows?._array || [];\n\t\t\t});\n\t\t\treturn rows[0];\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { customResultMapper, query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = client.execute(query.sql, params).rows?._array || [];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)([row]) as T['get'];\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\treturn await this.client.executeRawAsync(this.query.sql, params);\n\t\t});\n\t}\n}\n"],"mappings":"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"}