drizzle-orm 0.43.1-b08434e → 0.43.1-e3d1c4f

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 (777) hide show
  1. package/aws-data-api/pg/driver.cjs +7 -6
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +4 -3
  4. package/aws-data-api/pg/driver.d.ts +4 -3
  5. package/aws-data-api/pg/driver.js +7 -6
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/session.cjs +26 -9
  8. package/aws-data-api/pg/session.cjs.map +1 -1
  9. package/aws-data-api/pg/session.d.cts +5 -4
  10. package/aws-data-api/pg/session.d.ts +5 -4
  11. package/aws-data-api/pg/session.js +26 -9
  12. package/aws-data-api/pg/session.js.map +1 -1
  13. package/better-sqlite3/driver.cjs.map +1 -1
  14. package/better-sqlite3/driver.d.cts +4 -3
  15. package/better-sqlite3/driver.d.ts +4 -3
  16. package/better-sqlite3/driver.js.map +1 -1
  17. package/better-sqlite3/session.cjs +5 -5
  18. package/better-sqlite3/session.cjs.map +1 -1
  19. package/better-sqlite3/session.d.cts +5 -5
  20. package/better-sqlite3/session.d.ts +5 -5
  21. package/better-sqlite3/session.js +5 -5
  22. package/better-sqlite3/session.js.map +1 -1
  23. package/bun-sql/driver.cjs +3 -2
  24. package/bun-sql/driver.cjs.map +1 -1
  25. package/bun-sql/driver.d.cts +4 -3
  26. package/bun-sql/driver.d.ts +4 -3
  27. package/bun-sql/driver.js +3 -2
  28. package/bun-sql/driver.js.map +1 -1
  29. package/bun-sql/session.cjs +20 -11
  30. package/bun-sql/session.cjs.map +1 -1
  31. package/bun-sql/session.d.cts +6 -5
  32. package/bun-sql/session.d.ts +6 -5
  33. package/bun-sql/session.js +20 -11
  34. package/bun-sql/session.js.map +1 -1
  35. package/bun-sqlite/driver.cjs.map +1 -1
  36. package/bun-sqlite/driver.d.cts +4 -3
  37. package/bun-sqlite/driver.d.ts +4 -3
  38. package/bun-sqlite/driver.js.map +1 -1
  39. package/bun-sqlite/session.cjs +5 -5
  40. package/bun-sqlite/session.cjs.map +1 -1
  41. package/bun-sqlite/session.d.cts +5 -5
  42. package/bun-sqlite/session.d.ts +5 -5
  43. package/bun-sqlite/session.js +5 -5
  44. package/bun-sqlite/session.js.map +1 -1
  45. package/column-builder.cjs.map +1 -1
  46. package/column-builder.d.cts +7 -2
  47. package/column-builder.d.ts +7 -2
  48. package/column-builder.js.map +1 -1
  49. package/column.cjs +2 -0
  50. package/column.cjs.map +1 -1
  51. package/column.d.cts +6 -0
  52. package/column.d.ts +6 -0
  53. package/column.js +2 -0
  54. package/column.js.map +1 -1
  55. package/d1/driver.cjs +3 -2
  56. package/d1/driver.cjs.map +1 -1
  57. package/d1/driver.d.cts +2 -1
  58. package/d1/driver.d.ts +2 -1
  59. package/d1/driver.js +3 -2
  60. package/d1/driver.js.map +1 -1
  61. package/d1/session.cjs +20 -11
  62. package/d1/session.cjs.map +1 -1
  63. package/d1/session.d.cts +8 -7
  64. package/d1/session.d.ts +8 -7
  65. package/d1/session.js +20 -11
  66. package/d1/session.js.map +1 -1
  67. package/durable-sqlite/driver.cjs.map +1 -1
  68. package/durable-sqlite/driver.d.cts +2 -1
  69. package/durable-sqlite/driver.d.ts +2 -1
  70. package/durable-sqlite/driver.js.map +1 -1
  71. package/durable-sqlite/session.cjs +5 -5
  72. package/durable-sqlite/session.cjs.map +1 -1
  73. package/durable-sqlite/session.d.cts +5 -5
  74. package/durable-sqlite/session.d.ts +5 -5
  75. package/durable-sqlite/session.js +5 -5
  76. package/durable-sqlite/session.js.map +1 -1
  77. package/expo-sqlite/driver.cjs.map +1 -1
  78. package/expo-sqlite/driver.d.cts +2 -1
  79. package/expo-sqlite/driver.d.ts +2 -1
  80. package/expo-sqlite/driver.js.map +1 -1
  81. package/expo-sqlite/session.cjs +5 -5
  82. package/expo-sqlite/session.cjs.map +1 -1
  83. package/expo-sqlite/session.d.cts +5 -5
  84. package/expo-sqlite/session.d.ts +5 -5
  85. package/expo-sqlite/session.js +5 -5
  86. package/expo-sqlite/session.js.map +1 -1
  87. package/extension-core/gel/index.cjs +33 -0
  88. package/extension-core/gel/index.cjs.map +1 -0
  89. package/extension-core/gel/index.d.cts +67 -0
  90. package/extension-core/gel/index.d.ts +67 -0
  91. package/extension-core/gel/index.js +9 -0
  92. package/extension-core/gel/index.js.map +1 -0
  93. package/extension-core/index.cjs +42 -0
  94. package/extension-core/index.cjs.map +1 -0
  95. package/extension-core/index.d.cts +9 -0
  96. package/extension-core/index.d.ts +9 -0
  97. package/extension-core/index.js +15 -0
  98. package/extension-core/index.js.map +1 -0
  99. package/extension-core/mysql/index.cjs +33 -0
  100. package/extension-core/mysql/index.cjs.map +1 -0
  101. package/extension-core/mysql/index.d.cts +69 -0
  102. package/extension-core/mysql/index.d.ts +69 -0
  103. package/extension-core/mysql/index.js +9 -0
  104. package/extension-core/mysql/index.js.map +1 -0
  105. package/extension-core/pg/index.cjs +33 -0
  106. package/extension-core/pg/index.cjs.map +1 -0
  107. package/extension-core/pg/index.d.cts +67 -0
  108. package/extension-core/pg/index.d.ts +67 -0
  109. package/extension-core/pg/index.js +9 -0
  110. package/extension-core/pg/index.js.map +1 -0
  111. package/extension-core/singlestore/index.cjs +33 -0
  112. package/extension-core/singlestore/index.cjs.map +1 -0
  113. package/extension-core/singlestore/index.d.cts +67 -0
  114. package/extension-core/singlestore/index.d.ts +67 -0
  115. package/extension-core/singlestore/index.js +9 -0
  116. package/extension-core/singlestore/index.js.map +1 -0
  117. package/extension-core/sqlite/index.cjs +33 -0
  118. package/extension-core/sqlite/index.cjs.map +1 -0
  119. package/extension-core/sqlite/index.d.cts +68 -0
  120. package/extension-core/sqlite/index.d.ts +68 -0
  121. package/extension-core/sqlite/index.js +9 -0
  122. package/extension-core/sqlite/index.js.map +1 -0
  123. package/extensions/hook/gel/index.cjs +47 -0
  124. package/extensions/hook/gel/index.cjs.map +1 -0
  125. package/extensions/hook/gel/index.d.cts +11 -0
  126. package/extensions/hook/gel/index.d.ts +11 -0
  127. package/extensions/hook/gel/index.js +22 -0
  128. package/extensions/hook/gel/index.js.map +1 -0
  129. package/extensions/hook/mysql/index.cjs +47 -0
  130. package/extensions/hook/mysql/index.cjs.map +1 -0
  131. package/extensions/hook/mysql/index.d.cts +11 -0
  132. package/extensions/hook/mysql/index.d.ts +11 -0
  133. package/extensions/hook/mysql/index.js +22 -0
  134. package/extensions/hook/mysql/index.js.map +1 -0
  135. package/extensions/hook/pg/index.cjs +47 -0
  136. package/extensions/hook/pg/index.cjs.map +1 -0
  137. package/extensions/hook/pg/index.d.cts +11 -0
  138. package/extensions/hook/pg/index.d.ts +11 -0
  139. package/extensions/hook/pg/index.js +22 -0
  140. package/extensions/hook/pg/index.js.map +1 -0
  141. package/extensions/hook/singlestore/index.cjs +47 -0
  142. package/extensions/hook/singlestore/index.cjs.map +1 -0
  143. package/extensions/hook/singlestore/index.d.cts +11 -0
  144. package/extensions/hook/singlestore/index.d.ts +11 -0
  145. package/extensions/hook/singlestore/index.js +22 -0
  146. package/extensions/hook/singlestore/index.js.map +1 -0
  147. package/extensions/hook/sqlite/index.cjs +47 -0
  148. package/extensions/hook/sqlite/index.cjs.map +1 -0
  149. package/extensions/hook/sqlite/index.d.cts +11 -0
  150. package/extensions/hook/sqlite/index.d.ts +11 -0
  151. package/extensions/hook/sqlite/index.js +22 -0
  152. package/extensions/hook/sqlite/index.js.map +1 -0
  153. package/extensions/s3-file/common.cjs +321 -0
  154. package/extensions/s3-file/common.cjs.map +1 -0
  155. package/extensions/s3-file/common.d.cts +88 -0
  156. package/extensions/s3-file/common.d.ts +88 -0
  157. package/extensions/s3-file/common.js +288 -0
  158. package/extensions/s3-file/common.js.map +1 -0
  159. package/extensions/s3-file/gel/column.cjs +124 -0
  160. package/extensions/s3-file/gel/column.cjs.map +1 -0
  161. package/extensions/s3-file/gel/column.d.cts +105 -0
  162. package/extensions/s3-file/gel/column.d.ts +105 -0
  163. package/extensions/s3-file/gel/column.js +103 -0
  164. package/extensions/s3-file/gel/column.js.map +1 -0
  165. package/extensions/s3-file/gel/extension.cjs +271 -0
  166. package/extensions/s3-file/gel/extension.cjs.map +1 -0
  167. package/extensions/s3-file/gel/extension.d.cts +18 -0
  168. package/extensions/s3-file/gel/extension.d.ts +18 -0
  169. package/extensions/s3-file/gel/extension.js +257 -0
  170. package/extensions/s3-file/gel/extension.js.map +1 -0
  171. package/extensions/s3-file/gel/index.cjs +25 -0
  172. package/extensions/s3-file/gel/index.cjs.map +1 -0
  173. package/extensions/s3-file/gel/index.d.cts +2 -0
  174. package/extensions/s3-file/gel/index.d.ts +2 -0
  175. package/extensions/s3-file/gel/index.js +3 -0
  176. package/extensions/s3-file/gel/index.js.map +1 -0
  177. package/extensions/s3-file/index.cjs +23 -0
  178. package/extensions/s3-file/index.cjs.map +1 -0
  179. package/extensions/s3-file/index.d.cts +1 -0
  180. package/extensions/s3-file/index.d.ts +1 -0
  181. package/extensions/s3-file/index.js +2 -0
  182. package/extensions/s3-file/index.js.map +1 -0
  183. package/extensions/s3-file/mysql/column.cjs +121 -0
  184. package/extensions/s3-file/mysql/column.cjs.map +1 -0
  185. package/extensions/s3-file/mysql/column.d.cts +63 -0
  186. package/extensions/s3-file/mysql/column.d.ts +63 -0
  187. package/extensions/s3-file/mysql/column.js +97 -0
  188. package/extensions/s3-file/mysql/column.js.map +1 -0
  189. package/extensions/s3-file/mysql/extension.cjs +250 -0
  190. package/extensions/s3-file/mysql/extension.cjs.map +1 -0
  191. package/extensions/s3-file/mysql/extension.d.cts +18 -0
  192. package/extensions/s3-file/mysql/extension.d.ts +18 -0
  193. package/extensions/s3-file/mysql/extension.js +236 -0
  194. package/extensions/s3-file/mysql/extension.js.map +1 -0
  195. package/extensions/s3-file/mysql/index.cjs +25 -0
  196. package/extensions/s3-file/mysql/index.cjs.map +1 -0
  197. package/extensions/s3-file/mysql/index.d.cts +2 -0
  198. package/extensions/s3-file/mysql/index.d.ts +2 -0
  199. package/extensions/s3-file/mysql/index.js +3 -0
  200. package/extensions/s3-file/mysql/index.js.map +1 -0
  201. package/extensions/s3-file/pg/column.cjs +124 -0
  202. package/extensions/s3-file/pg/column.cjs.map +1 -0
  203. package/extensions/s3-file/pg/column.d.cts +105 -0
  204. package/extensions/s3-file/pg/column.d.ts +105 -0
  205. package/extensions/s3-file/pg/column.js +103 -0
  206. package/extensions/s3-file/pg/column.js.map +1 -0
  207. package/extensions/s3-file/pg/extension.cjs +272 -0
  208. package/extensions/s3-file/pg/extension.cjs.map +1 -0
  209. package/extensions/s3-file/pg/extension.d.cts +18 -0
  210. package/extensions/s3-file/pg/extension.d.ts +18 -0
  211. package/extensions/s3-file/pg/extension.js +258 -0
  212. package/extensions/s3-file/pg/extension.js.map +1 -0
  213. package/extensions/s3-file/pg/index.cjs +25 -0
  214. package/extensions/s3-file/pg/index.cjs.map +1 -0
  215. package/extensions/s3-file/pg/index.d.cts +2 -0
  216. package/extensions/s3-file/pg/index.d.ts +2 -0
  217. package/extensions/s3-file/pg/index.js +3 -0
  218. package/extensions/s3-file/pg/index.js.map +1 -0
  219. package/extensions/s3-file/singlestore/column.cjs +121 -0
  220. package/extensions/s3-file/singlestore/column.cjs.map +1 -0
  221. package/extensions/s3-file/singlestore/column.d.cts +63 -0
  222. package/extensions/s3-file/singlestore/column.d.ts +63 -0
  223. package/extensions/s3-file/singlestore/column.js +97 -0
  224. package/extensions/s3-file/singlestore/column.js.map +1 -0
  225. package/extensions/s3-file/singlestore/extension.cjs +247 -0
  226. package/extensions/s3-file/singlestore/extension.cjs.map +1 -0
  227. package/extensions/s3-file/singlestore/extension.d.cts +18 -0
  228. package/extensions/s3-file/singlestore/extension.d.ts +18 -0
  229. package/extensions/s3-file/singlestore/extension.js +233 -0
  230. package/extensions/s3-file/singlestore/extension.js.map +1 -0
  231. package/extensions/s3-file/singlestore/index.cjs +25 -0
  232. package/extensions/s3-file/singlestore/index.cjs.map +1 -0
  233. package/extensions/s3-file/singlestore/index.d.cts +2 -0
  234. package/extensions/s3-file/singlestore/index.d.ts +2 -0
  235. package/extensions/s3-file/singlestore/index.js +3 -0
  236. package/extensions/s3-file/singlestore/index.js.map +1 -0
  237. package/extensions/s3-file/sqlite/column.cjs +121 -0
  238. package/extensions/s3-file/sqlite/column.cjs.map +1 -0
  239. package/extensions/s3-file/sqlite/column.d.cts +63 -0
  240. package/extensions/s3-file/sqlite/column.d.ts +63 -0
  241. package/extensions/s3-file/sqlite/column.js +97 -0
  242. package/extensions/s3-file/sqlite/column.js.map +1 -0
  243. package/extensions/s3-file/sqlite/extension.cjs +250 -0
  244. package/extensions/s3-file/sqlite/extension.cjs.map +1 -0
  245. package/extensions/s3-file/sqlite/extension.d.cts +18 -0
  246. package/extensions/s3-file/sqlite/extension.d.ts +18 -0
  247. package/extensions/s3-file/sqlite/extension.js +236 -0
  248. package/extensions/s3-file/sqlite/extension.js.map +1 -0
  249. package/extensions/s3-file/sqlite/index.cjs +25 -0
  250. package/extensions/s3-file/sqlite/index.cjs.map +1 -0
  251. package/extensions/s3-file/sqlite/index.d.cts +2 -0
  252. package/extensions/s3-file/sqlite/index.d.ts +2 -0
  253. package/extensions/s3-file/sqlite/index.js +3 -0
  254. package/extensions/s3-file/sqlite/index.js.map +1 -0
  255. package/gel/driver.cjs +6 -4
  256. package/gel/driver.cjs.map +1 -1
  257. package/gel/driver.d.cts +6 -4
  258. package/gel/driver.d.ts +6 -4
  259. package/gel/driver.js +6 -4
  260. package/gel/driver.js.map +1 -1
  261. package/gel/session.cjs +12 -9
  262. package/gel/session.cjs.map +1 -1
  263. package/gel/session.d.cts +5 -4
  264. package/gel/session.d.ts +5 -4
  265. package/gel/session.js +12 -9
  266. package/gel/session.js.map +1 -1
  267. package/gel-core/columns/common.cjs +8 -0
  268. package/gel-core/columns/common.cjs.map +1 -1
  269. package/gel-core/columns/common.d.cts +2 -0
  270. package/gel-core/columns/common.d.ts +2 -0
  271. package/gel-core/columns/common.js +8 -0
  272. package/gel-core/columns/common.js.map +1 -1
  273. package/gel-core/db.cjs +5 -3
  274. package/gel-core/db.cjs.map +1 -1
  275. package/gel-core/db.d.cts +3 -1
  276. package/gel-core/db.d.ts +3 -1
  277. package/gel-core/db.js +5 -3
  278. package/gel-core/db.js.map +1 -1
  279. package/gel-core/dialect.cjs +25 -19
  280. package/gel-core/dialect.cjs.map +1 -1
  281. package/gel-core/dialect.d.cts +7 -6
  282. package/gel-core/dialect.d.ts +7 -6
  283. package/gel-core/dialect.js +26 -20
  284. package/gel-core/dialect.js.map +1 -1
  285. package/gel-core/query-builders/delete.cjs +7 -2
  286. package/gel-core/query-builders/delete.cjs.map +1 -1
  287. package/gel-core/query-builders/delete.js +7 -2
  288. package/gel-core/query-builders/delete.js.map +1 -1
  289. package/gel-core/query-builders/insert.cjs +32 -6
  290. package/gel-core/query-builders/insert.cjs.map +1 -1
  291. package/gel-core/query-builders/insert.js +34 -8
  292. package/gel-core/query-builders/insert.js.map +1 -1
  293. package/gel-core/query-builders/query.cjs +12 -1
  294. package/gel-core/query-builders/query.cjs.map +1 -1
  295. package/gel-core/query-builders/query.js +12 -1
  296. package/gel-core/query-builders/query.js.map +1 -1
  297. package/gel-core/query-builders/select.cjs +9 -2
  298. package/gel-core/query-builders/select.cjs.map +1 -1
  299. package/gel-core/query-builders/select.js +9 -2
  300. package/gel-core/query-builders/select.js.map +1 -1
  301. package/gel-core/query-builders/update.cjs +8 -3
  302. package/gel-core/query-builders/update.cjs.map +1 -1
  303. package/gel-core/query-builders/update.js +8 -3
  304. package/gel-core/query-builders/update.js.map +1 -1
  305. package/gel-core/session.cjs +48 -4
  306. package/gel-core/session.cjs.map +1 -1
  307. package/gel-core/session.d.cts +11 -5
  308. package/gel-core/session.d.ts +11 -5
  309. package/gel-core/session.js +48 -4
  310. package/gel-core/session.js.map +1 -1
  311. package/libsql/driver-core.cjs +3 -2
  312. package/libsql/driver-core.cjs.map +1 -1
  313. package/libsql/driver-core.js +3 -2
  314. package/libsql/driver-core.js.map +1 -1
  315. package/libsql/driver.cjs +4 -1
  316. package/libsql/driver.cjs.map +1 -1
  317. package/libsql/driver.d.cts +4 -3
  318. package/libsql/driver.d.ts +4 -3
  319. package/libsql/driver.js +4 -1
  320. package/libsql/driver.js.map +1 -1
  321. package/libsql/http/index.cjs +4 -1
  322. package/libsql/http/index.cjs.map +1 -1
  323. package/libsql/http/index.d.cts +4 -3
  324. package/libsql/http/index.d.ts +4 -3
  325. package/libsql/http/index.js +4 -1
  326. package/libsql/http/index.js.map +1 -1
  327. package/libsql/node/index.cjs +4 -1
  328. package/libsql/node/index.cjs.map +1 -1
  329. package/libsql/node/index.d.cts +4 -3
  330. package/libsql/node/index.d.ts +4 -3
  331. package/libsql/node/index.js +4 -1
  332. package/libsql/node/index.js.map +1 -1
  333. package/libsql/session.cjs +29 -12
  334. package/libsql/session.cjs.map +1 -1
  335. package/libsql/session.d.cts +8 -7
  336. package/libsql/session.d.ts +8 -7
  337. package/libsql/session.js +29 -12
  338. package/libsql/session.js.map +1 -1
  339. package/libsql/sqlite3/index.cjs +4 -1
  340. package/libsql/sqlite3/index.cjs.map +1 -1
  341. package/libsql/sqlite3/index.d.cts +4 -3
  342. package/libsql/sqlite3/index.d.ts +4 -3
  343. package/libsql/sqlite3/index.js +4 -1
  344. package/libsql/sqlite3/index.js.map +1 -1
  345. package/libsql/wasm/index.cjs +4 -1
  346. package/libsql/wasm/index.cjs.map +1 -1
  347. package/libsql/wasm/index.d.cts +4 -3
  348. package/libsql/wasm/index.d.ts +4 -3
  349. package/libsql/wasm/index.js +4 -1
  350. package/libsql/wasm/index.js.map +1 -1
  351. package/libsql/web/index.cjs +4 -1
  352. package/libsql/web/index.cjs.map +1 -1
  353. package/libsql/web/index.d.cts +4 -3
  354. package/libsql/web/index.d.ts +4 -3
  355. package/libsql/web/index.js +4 -1
  356. package/libsql/web/index.js.map +1 -1
  357. package/libsql/ws/index.cjs +4 -1
  358. package/libsql/ws/index.cjs.map +1 -1
  359. package/libsql/ws/index.d.cts +4 -3
  360. package/libsql/ws/index.d.ts +4 -3
  361. package/libsql/ws/index.js +4 -1
  362. package/libsql/ws/index.js.map +1 -1
  363. package/mysql-core/db.cjs +5 -3
  364. package/mysql-core/db.cjs.map +1 -1
  365. package/mysql-core/db.d.cts +3 -1
  366. package/mysql-core/db.d.ts +3 -1
  367. package/mysql-core/db.js +5 -3
  368. package/mysql-core/db.js.map +1 -1
  369. package/mysql-core/dialect.cjs +30 -23
  370. package/mysql-core/dialect.cjs.map +1 -1
  371. package/mysql-core/dialect.d.cts +8 -7
  372. package/mysql-core/dialect.d.ts +8 -7
  373. package/mysql-core/dialect.js +31 -24
  374. package/mysql-core/dialect.js.map +1 -1
  375. package/mysql-core/query-builders/delete.cjs +8 -2
  376. package/mysql-core/query-builders/delete.cjs.map +1 -1
  377. package/mysql-core/query-builders/delete.js +8 -2
  378. package/mysql-core/query-builders/delete.js.map +1 -1
  379. package/mysql-core/query-builders/insert.cjs +29 -5
  380. package/mysql-core/query-builders/insert.cjs.map +1 -1
  381. package/mysql-core/query-builders/insert.js +31 -7
  382. package/mysql-core/query-builders/insert.js.map +1 -1
  383. package/mysql-core/query-builders/query.cjs +14 -2
  384. package/mysql-core/query-builders/query.cjs.map +1 -1
  385. package/mysql-core/query-builders/query.js +14 -2
  386. package/mysql-core/query-builders/query.js.map +1 -1
  387. package/mysql-core/query-builders/select.cjs +12 -4
  388. package/mysql-core/query-builders/select.cjs.map +1 -1
  389. package/mysql-core/query-builders/select.js +12 -4
  390. package/mysql-core/query-builders/select.js.map +1 -1
  391. package/mysql-core/query-builders/update.cjs +15 -3
  392. package/mysql-core/query-builders/update.cjs.map +1 -1
  393. package/mysql-core/query-builders/update.js +15 -3
  394. package/mysql-core/query-builders/update.js.map +1 -1
  395. package/mysql-core/session.cjs +45 -3
  396. package/mysql-core/session.cjs.map +1 -1
  397. package/mysql-core/session.d.cts +13 -4
  398. package/mysql-core/session.d.ts +13 -4
  399. package/mysql-core/session.js +45 -3
  400. package/mysql-core/session.js.map +1 -1
  401. package/mysql-proxy/driver.cjs +3 -2
  402. package/mysql-proxy/driver.cjs.map +1 -1
  403. package/mysql-proxy/driver.d.cts +2 -1
  404. package/mysql-proxy/driver.d.ts +2 -1
  405. package/mysql-proxy/driver.js +3 -2
  406. package/mysql-proxy/driver.js.map +1 -1
  407. package/mysql-proxy/session.cjs +8 -8
  408. package/mysql-proxy/session.cjs.map +1 -1
  409. package/mysql-proxy/session.d.cts +5 -6
  410. package/mysql-proxy/session.d.ts +5 -6
  411. package/mysql-proxy/session.js +8 -8
  412. package/mysql-proxy/session.js.map +1 -1
  413. package/mysql2/driver.cjs +6 -4
  414. package/mysql2/driver.cjs.map +1 -1
  415. package/mysql2/driver.d.cts +4 -2
  416. package/mysql2/driver.d.ts +4 -2
  417. package/mysql2/driver.js +6 -4
  418. package/mysql2/driver.js.map +1 -1
  419. package/mysql2/session.cjs +14 -10
  420. package/mysql2/session.cjs.map +1 -1
  421. package/mysql2/session.d.cts +5 -5
  422. package/mysql2/session.d.ts +5 -5
  423. package/mysql2/session.js +14 -10
  424. package/mysql2/session.js.map +1 -1
  425. package/neon-http/driver.cjs +5 -3
  426. package/neon-http/driver.cjs.map +1 -1
  427. package/neon-http/driver.d.cts +6 -4
  428. package/neon-http/driver.d.ts +6 -4
  429. package/neon-http/driver.js +5 -3
  430. package/neon-http/driver.js.map +1 -1
  431. package/neon-http/session.cjs +8 -6
  432. package/neon-http/session.cjs.map +1 -1
  433. package/neon-http/session.d.cts +5 -4
  434. package/neon-http/session.d.ts +5 -4
  435. package/neon-http/session.js +8 -6
  436. package/neon-http/session.js.map +1 -1
  437. package/neon-serverless/driver.cjs +6 -4
  438. package/neon-serverless/driver.cjs.map +1 -1
  439. package/neon-serverless/driver.d.cts +6 -4
  440. package/neon-serverless/driver.d.ts +6 -4
  441. package/neon-serverless/driver.js +6 -4
  442. package/neon-serverless/driver.js.map +1 -1
  443. package/neon-serverless/session.cjs +23 -9
  444. package/neon-serverless/session.cjs.map +1 -1
  445. package/neon-serverless/session.d.cts +5 -4
  446. package/neon-serverless/session.d.ts +5 -4
  447. package/neon-serverless/session.js +23 -9
  448. package/neon-serverless/session.js.map +1 -1
  449. package/node-postgres/driver.cjs +6 -4
  450. package/node-postgres/driver.cjs.map +1 -1
  451. package/node-postgres/driver.d.cts +6 -4
  452. package/node-postgres/driver.d.ts +6 -4
  453. package/node-postgres/driver.js +6 -4
  454. package/node-postgres/driver.js.map +1 -1
  455. package/node-postgres/session.cjs +18 -9
  456. package/node-postgres/session.cjs.map +1 -1
  457. package/node-postgres/session.d.cts +5 -4
  458. package/node-postgres/session.d.ts +5 -4
  459. package/node-postgres/session.js +18 -9
  460. package/node-postgres/session.js.map +1 -1
  461. package/op-sqlite/driver.cjs.map +1 -1
  462. package/op-sqlite/driver.d.cts +2 -1
  463. package/op-sqlite/driver.d.ts +2 -1
  464. package/op-sqlite/driver.js.map +1 -1
  465. package/op-sqlite/session.cjs +5 -5
  466. package/op-sqlite/session.cjs.map +1 -1
  467. package/op-sqlite/session.d.cts +5 -5
  468. package/op-sqlite/session.d.ts +5 -5
  469. package/op-sqlite/session.js +5 -5
  470. package/op-sqlite/session.js.map +1 -1
  471. package/package.json +347 -1
  472. package/pg-core/columns/common.cjs +2 -0
  473. package/pg-core/columns/common.cjs.map +1 -1
  474. package/pg-core/columns/common.js +2 -0
  475. package/pg-core/columns/common.js.map +1 -1
  476. package/pg-core/db.cjs +5 -3
  477. package/pg-core/db.cjs.map +1 -1
  478. package/pg-core/db.d.cts +3 -1
  479. package/pg-core/db.d.ts +3 -1
  480. package/pg-core/db.js +5 -3
  481. package/pg-core/db.js.map +1 -1
  482. package/pg-core/dialect.cjs +26 -19
  483. package/pg-core/dialect.cjs.map +1 -1
  484. package/pg-core/dialect.d.cts +7 -6
  485. package/pg-core/dialect.d.ts +7 -6
  486. package/pg-core/dialect.js +27 -20
  487. package/pg-core/dialect.js.map +1 -1
  488. package/pg-core/query-builders/delete.cjs +7 -2
  489. package/pg-core/query-builders/delete.cjs.map +1 -1
  490. package/pg-core/query-builders/delete.d.cts +1 -1
  491. package/pg-core/query-builders/delete.d.ts +1 -1
  492. package/pg-core/query-builders/delete.js +7 -2
  493. package/pg-core/query-builders/delete.js.map +1 -1
  494. package/pg-core/query-builders/insert.cjs +37 -6
  495. package/pg-core/query-builders/insert.cjs.map +1 -1
  496. package/pg-core/query-builders/insert.js +39 -8
  497. package/pg-core/query-builders/insert.js.map +1 -1
  498. package/pg-core/query-builders/query.cjs +12 -1
  499. package/pg-core/query-builders/query.cjs.map +1 -1
  500. package/pg-core/query-builders/query.js +12 -1
  501. package/pg-core/query-builders/query.js.map +1 -1
  502. package/pg-core/query-builders/select.cjs +11 -4
  503. package/pg-core/query-builders/select.cjs.map +1 -1
  504. package/pg-core/query-builders/select.js +11 -4
  505. package/pg-core/query-builders/select.js.map +1 -1
  506. package/pg-core/query-builders/update.cjs +8 -3
  507. package/pg-core/query-builders/update.cjs.map +1 -1
  508. package/pg-core/query-builders/update.d.cts +2 -2
  509. package/pg-core/query-builders/update.d.ts +2 -2
  510. package/pg-core/query-builders/update.js +9 -8
  511. package/pg-core/query-builders/update.js.map +1 -1
  512. package/pg-core/session.cjs +49 -4
  513. package/pg-core/session.cjs.map +1 -1
  514. package/pg-core/session.d.cts +11 -5
  515. package/pg-core/session.d.ts +11 -5
  516. package/pg-core/session.js +49 -4
  517. package/pg-core/session.js.map +1 -1
  518. package/pg-proxy/driver.cjs +3 -2
  519. package/pg-proxy/driver.cjs.map +1 -1
  520. package/pg-proxy/driver.d.cts +2 -1
  521. package/pg-proxy/driver.d.ts +2 -1
  522. package/pg-proxy/driver.js +3 -2
  523. package/pg-proxy/driver.js.map +1 -1
  524. package/pg-proxy/session.cjs +8 -6
  525. package/pg-proxy/session.cjs.map +1 -1
  526. package/pg-proxy/session.d.cts +5 -4
  527. package/pg-proxy/session.d.ts +5 -4
  528. package/pg-proxy/session.js +8 -6
  529. package/pg-proxy/session.js.map +1 -1
  530. package/pglite/driver.cjs +6 -4
  531. package/pglite/driver.cjs.map +1 -1
  532. package/pglite/driver.d.cts +6 -4
  533. package/pglite/driver.d.ts +6 -4
  534. package/pglite/driver.js +6 -4
  535. package/pglite/driver.js.map +1 -1
  536. package/pglite/session.cjs +19 -9
  537. package/pglite/session.cjs.map +1 -1
  538. package/pglite/session.d.cts +5 -4
  539. package/pglite/session.d.ts +5 -4
  540. package/pglite/session.js +19 -9
  541. package/pglite/session.js.map +1 -1
  542. package/planetscale-serverless/driver.cjs +3 -2
  543. package/planetscale-serverless/driver.cjs.map +1 -1
  544. package/planetscale-serverless/driver.d.cts +4 -3
  545. package/planetscale-serverless/driver.d.ts +4 -3
  546. package/planetscale-serverless/driver.js +3 -2
  547. package/planetscale-serverless/driver.js.map +1 -1
  548. package/planetscale-serverless/session.cjs +23 -13
  549. package/planetscale-serverless/session.cjs.map +1 -1
  550. package/planetscale-serverless/session.d.cts +6 -7
  551. package/planetscale-serverless/session.d.ts +6 -7
  552. package/planetscale-serverless/session.js +23 -13
  553. package/planetscale-serverless/session.js.map +1 -1
  554. package/postgres-js/driver.cjs +3 -2
  555. package/postgres-js/driver.cjs.map +1 -1
  556. package/postgres-js/driver.d.cts +4 -3
  557. package/postgres-js/driver.d.ts +4 -3
  558. package/postgres-js/driver.js +3 -2
  559. package/postgres-js/driver.js.map +1 -1
  560. package/postgres-js/session.cjs +27 -16
  561. package/postgres-js/session.cjs.map +1 -1
  562. package/postgres-js/session.d.cts +6 -5
  563. package/postgres-js/session.d.ts +6 -5
  564. package/postgres-js/session.js +27 -16
  565. package/postgres-js/session.js.map +1 -1
  566. package/prisma/mysql/driver.cjs +3 -3
  567. package/prisma/mysql/driver.cjs.map +1 -1
  568. package/prisma/mysql/driver.d.cts +3 -2
  569. package/prisma/mysql/driver.d.ts +3 -2
  570. package/prisma/mysql/driver.js +3 -3
  571. package/prisma/mysql/driver.js.map +1 -1
  572. package/prisma/mysql/session.cjs +10 -11
  573. package/prisma/mysql/session.cjs.map +1 -1
  574. package/prisma/mysql/session.d.cts +7 -6
  575. package/prisma/mysql/session.d.ts +7 -6
  576. package/prisma/mysql/session.js +10 -11
  577. package/prisma/mysql/session.js.map +1 -1
  578. package/prisma/pg/driver.cjs +3 -3
  579. package/prisma/pg/driver.cjs.map +1 -1
  580. package/prisma/pg/driver.d.cts +2 -1
  581. package/prisma/pg/driver.d.ts +2 -1
  582. package/prisma/pg/driver.js +3 -3
  583. package/prisma/pg/driver.js.map +1 -1
  584. package/prisma/pg/session.cjs +7 -7
  585. package/prisma/pg/session.cjs.map +1 -1
  586. package/prisma/pg/session.d.cts +6 -5
  587. package/prisma/pg/session.d.ts +6 -5
  588. package/prisma/pg/session.js +7 -7
  589. package/prisma/pg/session.js.map +1 -1
  590. package/prisma/sqlite/driver.cjs +7 -1
  591. package/prisma/sqlite/driver.cjs.map +1 -1
  592. package/prisma/sqlite/driver.d.cts +2 -1
  593. package/prisma/sqlite/driver.d.ts +2 -1
  594. package/prisma/sqlite/driver.js +7 -1
  595. package/prisma/sqlite/driver.js.map +1 -1
  596. package/prisma/sqlite/session.cjs +6 -6
  597. package/prisma/sqlite/session.cjs.map +1 -1
  598. package/prisma/sqlite/session.d.cts +6 -5
  599. package/prisma/sqlite/session.d.ts +6 -5
  600. package/prisma/sqlite/session.js +6 -6
  601. package/prisma/sqlite/session.js.map +1 -1
  602. package/singlestore/driver.cjs +28 -19
  603. package/singlestore/driver.cjs.map +1 -1
  604. package/singlestore/driver.d.cts +4 -2
  605. package/singlestore/driver.d.ts +4 -2
  606. package/singlestore/driver.js +28 -19
  607. package/singlestore/driver.js.map +1 -1
  608. package/singlestore/session.cjs +14 -10
  609. package/singlestore/session.cjs.map +1 -1
  610. package/singlestore/session.d.cts +5 -5
  611. package/singlestore/session.d.ts +5 -5
  612. package/singlestore/session.js +14 -10
  613. package/singlestore/session.js.map +1 -1
  614. package/singlestore-core/db.cjs +5 -3
  615. package/singlestore-core/db.cjs.map +1 -1
  616. package/singlestore-core/db.d.cts +3 -1
  617. package/singlestore-core/db.d.ts +3 -1
  618. package/singlestore-core/db.js +5 -3
  619. package/singlestore-core/db.js.map +1 -1
  620. package/singlestore-core/dialect.cjs +25 -18
  621. package/singlestore-core/dialect.cjs.map +1 -1
  622. package/singlestore-core/dialect.d.cts +7 -6
  623. package/singlestore-core/dialect.d.ts +7 -6
  624. package/singlestore-core/dialect.js +26 -19
  625. package/singlestore-core/dialect.js.map +1 -1
  626. package/singlestore-core/query-builders/delete.cjs +8 -2
  627. package/singlestore-core/query-builders/delete.cjs.map +1 -1
  628. package/singlestore-core/query-builders/delete.js +8 -2
  629. package/singlestore-core/query-builders/delete.js.map +1 -1
  630. package/singlestore-core/query-builders/insert.cjs +29 -5
  631. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  632. package/singlestore-core/query-builders/insert.js +31 -7
  633. package/singlestore-core/query-builders/insert.js.map +1 -1
  634. package/singlestore-core/query-builders/query.cjs +12 -1
  635. package/singlestore-core/query-builders/query.cjs.map +1 -1
  636. package/singlestore-core/query-builders/query.js +12 -1
  637. package/singlestore-core/query-builders/query.js.map +1 -1
  638. package/singlestore-core/query-builders/select.cjs +12 -4
  639. package/singlestore-core/query-builders/select.cjs.map +1 -1
  640. package/singlestore-core/query-builders/select.js +12 -4
  641. package/singlestore-core/query-builders/select.js.map +1 -1
  642. package/singlestore-core/query-builders/update.cjs +9 -3
  643. package/singlestore-core/query-builders/update.cjs.map +1 -1
  644. package/singlestore-core/query-builders/update.js +9 -3
  645. package/singlestore-core/query-builders/update.js.map +1 -1
  646. package/singlestore-core/session.cjs +45 -3
  647. package/singlestore-core/session.cjs.map +1 -1
  648. package/singlestore-core/session.d.cts +13 -4
  649. package/singlestore-core/session.d.ts +13 -4
  650. package/singlestore-core/session.js +45 -3
  651. package/singlestore-core/session.js.map +1 -1
  652. package/singlestore-proxy/driver.cjs +3 -2
  653. package/singlestore-proxy/driver.cjs.map +1 -1
  654. package/singlestore-proxy/driver.d.cts +2 -1
  655. package/singlestore-proxy/driver.d.ts +2 -1
  656. package/singlestore-proxy/driver.js +3 -2
  657. package/singlestore-proxy/driver.js.map +1 -1
  658. package/singlestore-proxy/session.cjs +8 -8
  659. package/singlestore-proxy/session.cjs.map +1 -1
  660. package/singlestore-proxy/session.d.cts +5 -6
  661. package/singlestore-proxy/session.d.ts +5 -6
  662. package/singlestore-proxy/session.js +8 -8
  663. package/singlestore-proxy/session.js.map +1 -1
  664. package/sql/sql.cjs +24 -2
  665. package/sql/sql.cjs.map +1 -1
  666. package/sql/sql.d.cts +12 -0
  667. package/sql/sql.d.ts +12 -0
  668. package/sql/sql.js +23 -2
  669. package/sql/sql.js.map +1 -1
  670. package/sql-js/driver.cjs.map +1 -1
  671. package/sql-js/driver.d.cts +2 -1
  672. package/sql-js/driver.d.ts +2 -1
  673. package/sql-js/driver.js.map +1 -1
  674. package/sql-js/session.cjs +4 -4
  675. package/sql-js/session.cjs.map +1 -1
  676. package/sql-js/session.d.cts +4 -4
  677. package/sql-js/session.d.ts +4 -4
  678. package/sql-js/session.js +4 -4
  679. package/sql-js/session.js.map +1 -1
  680. package/sqlite-core/db.cjs +5 -3
  681. package/sqlite-core/db.cjs.map +1 -1
  682. package/sqlite-core/db.d.cts +3 -1
  683. package/sqlite-core/db.d.ts +3 -1
  684. package/sqlite-core/db.js +5 -3
  685. package/sqlite-core/db.js.map +1 -1
  686. package/sqlite-core/dialect.cjs +30 -19
  687. package/sqlite-core/dialect.cjs.map +1 -1
  688. package/sqlite-core/dialect.d.cts +7 -6
  689. package/sqlite-core/dialect.d.ts +7 -6
  690. package/sqlite-core/dialect.js +31 -20
  691. package/sqlite-core/dialect.js.map +1 -1
  692. package/sqlite-core/query-builders/delete.cjs +8 -2
  693. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  694. package/sqlite-core/query-builders/delete.js +8 -2
  695. package/sqlite-core/query-builders/delete.js.map +1 -1
  696. package/sqlite-core/query-builders/insert.cjs +28 -5
  697. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  698. package/sqlite-core/query-builders/insert.js +35 -7
  699. package/sqlite-core/query-builders/insert.js.map +1 -1
  700. package/sqlite-core/query-builders/query.cjs +12 -1
  701. package/sqlite-core/query-builders/query.cjs.map +1 -1
  702. package/sqlite-core/query-builders/query.js +12 -1
  703. package/sqlite-core/query-builders/query.js.map +1 -1
  704. package/sqlite-core/query-builders/select.cjs +15 -6
  705. package/sqlite-core/query-builders/select.cjs.map +1 -1
  706. package/sqlite-core/query-builders/select.js +15 -6
  707. package/sqlite-core/query-builders/select.js.map +1 -1
  708. package/sqlite-core/query-builders/update.cjs +9 -3
  709. package/sqlite-core/query-builders/update.cjs.map +1 -1
  710. package/sqlite-core/query-builders/update.js +9 -3
  711. package/sqlite-core/query-builders/update.js.map +1 -1
  712. package/sqlite-core/session.cjs +80 -6
  713. package/sqlite-core/session.cjs.map +1 -1
  714. package/sqlite-core/session.d.cts +19 -9
  715. package/sqlite-core/session.d.ts +19 -9
  716. package/sqlite-core/session.js +80 -6
  717. package/sqlite-core/session.js.map +1 -1
  718. package/sqlite-proxy/driver.cjs +4 -3
  719. package/sqlite-proxy/driver.cjs.map +1 -1
  720. package/sqlite-proxy/driver.d.cts +3 -2
  721. package/sqlite-proxy/driver.d.ts +3 -2
  722. package/sqlite-proxy/driver.js +4 -3
  723. package/sqlite-proxy/driver.js.map +1 -1
  724. package/sqlite-proxy/session.cjs +20 -11
  725. package/sqlite-proxy/session.cjs.map +1 -1
  726. package/sqlite-proxy/session.d.cts +8 -7
  727. package/sqlite-proxy/session.d.ts +8 -7
  728. package/sqlite-proxy/session.js +20 -11
  729. package/sqlite-proxy/session.js.map +1 -1
  730. package/tidb-serverless/driver.cjs +9 -2
  731. package/tidb-serverless/driver.cjs.map +1 -1
  732. package/tidb-serverless/driver.d.cts +4 -3
  733. package/tidb-serverless/driver.d.ts +4 -3
  734. package/tidb-serverless/driver.js +9 -2
  735. package/tidb-serverless/driver.js.map +1 -1
  736. package/tidb-serverless/session.cjs +23 -13
  737. package/tidb-serverless/session.cjs.map +1 -1
  738. package/tidb-serverless/session.d.cts +6 -7
  739. package/tidb-serverless/session.d.ts +6 -7
  740. package/tidb-serverless/session.js +23 -13
  741. package/tidb-serverless/session.js.map +1 -1
  742. package/tracing.cjs.map +1 -1
  743. package/tracing.js.map +1 -1
  744. package/utils.cjs +34 -2
  745. package/utils.cjs.map +1 -1
  746. package/utils.d.cts +5 -1
  747. package/utils.d.ts +5 -1
  748. package/utils.js +35 -4
  749. package/utils.js.map +1 -1
  750. package/vercel-postgres/driver.cjs +10 -5
  751. package/vercel-postgres/driver.cjs.map +1 -1
  752. package/vercel-postgres/driver.d.cts +6 -4
  753. package/vercel-postgres/driver.d.ts +6 -4
  754. package/vercel-postgres/driver.js +10 -5
  755. package/vercel-postgres/driver.js.map +1 -1
  756. package/vercel-postgres/session.cjs +18 -9
  757. package/vercel-postgres/session.cjs.map +1 -1
  758. package/vercel-postgres/session.d.cts +5 -4
  759. package/vercel-postgres/session.d.ts +5 -4
  760. package/vercel-postgres/session.js +18 -9
  761. package/vercel-postgres/session.js.map +1 -1
  762. package/version.cjs +1 -1
  763. package/version.d.cts +1 -1
  764. package/version.d.ts +1 -1
  765. package/version.js +1 -1
  766. package/xata-http/driver.cjs +7 -4
  767. package/xata-http/driver.cjs.map +1 -1
  768. package/xata-http/driver.d.cts +4 -2
  769. package/xata-http/driver.d.ts +4 -2
  770. package/xata-http/driver.js +7 -4
  771. package/xata-http/driver.js.map +1 -1
  772. package/xata-http/session.cjs +8 -6
  773. package/xata-http/session.cjs.map +1 -1
  774. package/xata-http/session.d.cts +5 -4
  775. package/xata-http/session.d.ts +5 -4
  776. package/xata-http/session.js +8 -6
  777. package/xata-http/session.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/neon-http/session.ts"],"sourcesContent":["import type { FullQueryResults, NeonQueryFunction, NeonQueryPromise } from '@neondatabase/serverless';\nimport type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery as PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, type SQL } from '~/sql/sql.ts';\nimport { mapResultRow, type NeonAuthToken } from '~/utils.ts';\n\nexport type NeonHttpClient = NeonQueryFunction<any, any>;\n\nconst rawQueryConfig = {\n\tarrayMode: false,\n\tfullResults: true,\n} as const;\nconst queryConfig = {\n\tarrayMode: true,\n\tfullResults: true,\n} as const;\n\nexport class NeonHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpPreparedQuery';\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper(query);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(\n\t\tplaceholderValues: Record<string, unknown> | undefined = {},\n\t\ttoken: NeonAuthToken | undefined = this.authToken,\n\t): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, clientQuery, query, customResultMapper } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn clientQuery(\n\t\t\t\tquery.sql,\n\t\t\t\tparams,\n\t\t\t\ttoken === undefined\n\t\t\t\t\t? rawQueryConfig\n\t\t\t\t\t: {\n\t\t\t\t\t\t...rawQueryConfig,\n\t\t\t\t\t\tauthToken: token,\n\t\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst result = await clientQuery(\n\t\t\tquery.sql,\n\t\t\tparams,\n\t\t\ttoken === undefined\n\t\t\t\t? queryConfig\n\t\t\t\t: {\n\t\t\t\t\t...queryConfig,\n\t\t\t\t\tauthToken: token,\n\t\t\t\t},\n\t\t);\n\n\t\treturn this.mapResult(result);\n\t}\n\n\toverride mapResult(result: unknown): unknown {\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst rows = (result as FullQueryResults<true>).rows;\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(\n\t\t\tthis.query.sql,\n\t\t\tparams,\n\t\t\tthis.authToken === undefined ? rawQueryConfig : {\n\t\t\t\t...rawQueryConfig,\n\t\t\t\tauthToken: this.authToken,\n\t\t\t},\n\t\t).then((result) => result.rows);\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> | undefined): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined = {}, token?: NeonAuthToken): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(this.query.sql, params, { arrayMode: true, fullResults: true, authToken: token }).then((\n\t\t\tresult,\n\t\t) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode() {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface NeonHttpSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonHttpSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpSession';\n\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NeonHttpSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new NeonHttpPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(\n\t\tqueries: T,\n\t) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: NeonQueryPromise<any, true>[] = [];\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push(\n\t\t\t\tthis.clientQuery(builtQuery.sql, builtQuery.params, {\n\t\t\t\t\tfullResults: true,\n\t\t\t\t\tarrayMode: preparedQuery.isResponseInArrayMode(),\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst batchResults = await this.client.transaction(builtQueries, queryConfig);\n\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true)) as any;\n\t}\n\n\t// change return type to QueryRows<true>\n\tasync query(query: string, params: unknown[]): Promise<FullQueryResults<true>> {\n\t\tthis.logger.logQuery(query, params);\n\t\tconst result = await this.clientQuery(query, params, { arrayMode: true, fullResults: true });\n\t\treturn result;\n\t}\n\n\t// change return type to QueryRows<false>\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<FullQueryResults<false>> {\n\t\treturn this.clientQuery(query, params, { arrayMode: false, fullResults: true });\n\t}\n\n\toverride async count(sql: SQL): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql, token);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\t_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t_config: PgTransactionConfig = {},\n\t): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t}\n}\n\nexport class NeonTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpTransaction';\n\n\toverride async transaction<T>(_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t\t// const savepointName = `sp${this.nestedIndex + 1}`;\n\t\t// const tx = new NeonTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\t// await tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\t// try {\n\t\t// \tconst result = await transaction(tx);\n\t\t// \tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t// \treturn result;\n\t\t// } catch (e) {\n\t\t// \tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t// \tthrow e;\n\t\t// }\n\t}\n}\n\nexport type NeonHttpQueryResult<T> = Omit<FullQueryResults<false>, 'rows'> & { rows: T[] };\n\nexport interface NeonHttpQueryResultHKT extends PgQueryResultHKT {\n\ttype: NeonHttpQueryResult<this['row']>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAE3B,oBAA2B;AAE3B,qBAA8B;AAG9B,qBAA8D;AAG9D,iBAAuD;AACvD,mBAAiD;AAIjD,MAAM,iBAAiB;AAAA,EACtB,WAAW;AAAA,EACX,aAAa;AACd;AACA,MAAM,cAAc;AAAA,EACnB,WAAW;AAAA,EACX,aAAa;AACd;AAEO,MAAM,8BAA6D,+BAAmB;AAAA,EAI5F,YACS,QACR,OACQ,QACA,QACA,wBACA,oBACP;AACD,UAAM,KAAK;AAPH;AAEA;AACA;AACA;AACA;AAMR,SAAK,cAAe,OAAe,SAAS;AAAA,EAC7C;AAAA,EAhBA,QAA0B,wBAAU,IAAY;AAAA,EACxC;AAAA;AAAA,EAqBR,MAAM,QACL,oBAAyD,CAAC,GAC1D,QAAmC,KAAK,WAChB;AACxB,UAAM,aAAS,6BAAiB,KAAK,MAAM,QAAQ,iBAAiB;AAEpE,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAE3C,UAAM,EAAE,QAAQ,aAAa,OAAO,mBAAmB,IAAI;AAE3D,QAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,aAAO;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA,UAAU,SACP,iBACA;AAAA,UACD,GAAG;AAAA,UACH,WAAW;AAAA,QACZ;AAAA,MACF;AAAA,IACD;AAEA,UAAM,SAAS,MAAM;AAAA,MACpB,MAAM;AAAA,MACN;AAAA,MACA,UAAU,SACP,cACA;AAAA,QACD,GAAG;AAAA,QACH,WAAW;AAAA,MACZ;AAAA,IACF;AAEA,WAAO,KAAK,UAAU,MAAM;AAAA,EAC7B;AAAA,EAES,UAAU,QAA0B;AAC5C,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAO;AAAA,IACR;AAEA,UAAM,OAAQ,OAAkC;AAEhD,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,IAAI;AAAA,IACpC;AAEA,WAAO,KAAK,IAAI,CAAC,YAAQ,2BAAa,KAAK,QAAS,KAAK,KAAK,mBAAmB,CAAC;AAAA,EACnF;AAAA,EAEA,IAAI,oBAAyD,CAAC,GAAsB;AACnF,UAAM,aAAS,6BAAiB,KAAK,MAAM,QAAQ,iBAAiB;AACpE,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,WAAO,KAAK;AAAA,MACX,KAAK,MAAM;AAAA,MACX;AAAA,MACA,KAAK,cAAc,SAAY,iBAAiB;AAAA,QAC/C,GAAG;AAAA,QACH,WAAW,KAAK;AAAA,MACjB;AAAA,IACD,EAAE,KAAK,CAAC,WAAW,OAAO,IAAI;AAAA,EAC/B;AAAA;AAAA,EAMA,OAAO,oBAAyD,CAAC,GAAG,OAA6C;AAChH,UAAM,aAAS,6BAAiB,KAAK,MAAM,QAAQ,iBAAiB;AACpE,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,WAAO,KAAK,YAAY,KAAK,MAAM,KAAK,QAAQ,EAAE,WAAW,MAAM,aAAa,MAAM,WAAW,MAAM,CAAC,EAAE,KAAK,CAC9G,WACI,OAAO,IAAI;AAAA,EACjB;AAAA;AAAA,EAGA,wBAAwB;AACvB,WAAO,KAAK;AAAA,EACb;AACD;AAMO,MAAM,wBAGH,yBAAwD;AAAA,EAMjE,YACS,QACR,SACQ,QACA,UAAkC,CAAC,GAC1C;AACD,UAAM,OAAO;AALL;AAEA;AACA;AAMR,SAAK,cAAe,OAAe,SAAS;AAC5C,SAAK,SAAS,QAAQ,UAAU,IAAI,yBAAW;AAAA,EAChD;AAAA,EAjBA,QAA0B,wBAAU,IAAY;AAAA,EAExC;AAAA,EACA;AAAA,EAgBR,aACC,OACA,QACA,MACA,uBACA,oBACqB;AACrB,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,MACL,SACC;AACD,UAAM,kBAAmC,CAAC;AAC1C,UAAM,eAA8C,CAAC;AACrD,eAAW,SAAS,SAAS;AAC5B,YAAM,gBAAgB,MAAM,SAAS;AACrC,YAAM,aAAa,cAAc,SAAS;AAC1C,sBAAgB,KAAK,aAAa;AAClC,mBAAa;AAAA,QACZ,KAAK,YAAY,WAAW,KAAK,WAAW,QAAQ;AAAA,UACnD,aAAa;AAAA,UACb,WAAW,cAAc,sBAAsB;AAAA,QAChD,CAAC;AAAA,MACF;AAAA,IACD;AAEA,UAAM,eAAe,MAAM,KAAK,OAAO,YAAY,cAAc,WAAW;AAE5E,WAAO,aAAa,IAAI,CAAC,QAAQ,MAAM,gBAAgB,CAAC,EAAG,UAAU,QAAQ,IAAI,CAAC;AAAA,EACnF;AAAA;AAAA,EAGA,MAAM,MAAM,OAAe,QAAoD;AAC9E,SAAK,OAAO,SAAS,OAAO,MAAM;AAClC,UAAM,SAAS,MAAM,KAAK,YAAY,OAAO,QAAQ,EAAE,WAAW,MAAM,aAAa,KAAK,CAAC;AAC3F,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,MAAM,aACL,OACA,QACmC;AACnC,WAAO,KAAK,YAAY,OAAO,QAAQ,EAAE,WAAW,OAAO,aAAa,KAAK,CAAC;AAAA,EAC/E;AAAA;AAAA,EAMA,MAAe,MAAM,KAAU,OAAwC;AACtE,UAAM,MAAM,MAAM,KAAK,QAAuC,KAAK,KAAK;AAExE,WAAO;AAAA,MACN,IAAI,MAAM,EAAE,CAAC,EAAE,OAAO;AAAA,IACvB;AAAA,EACD;AAAA,EAEA,MAAe,YACd,cAEA,UAA+B,CAAC,GACnB;AACb,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC9D;AACD;AAEO,MAAM,wBAGH,6BAA4D;AAAA,EACrE,QAA0B,wBAAU,IAAY;AAAA,EAEhD,MAAe,YAAe,cAAqF;AAClH,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAY9D;AACD;","names":[]}
1
+ {"version":3,"sources":["../../src/neon-http/session.ts"],"sourcesContent":["import type { FullQueryResults, NeonQueryFunction, NeonQueryPromise } from '@neondatabase/serverless';\nimport type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { BlankPgHookContext, DrizzlePgExtension } from '~/extension-core/pg/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery as PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, type SQL } from '~/sql/sql.ts';\nimport { mapResultRow, type NeonAuthToken } from '~/utils.ts';\n\nexport type NeonHttpClient = NeonQueryFunction<any, any>;\n\nconst rawQueryConfig = {\n\tarrayMode: false,\n\tfullResults: true,\n} as const;\nconst queryConfig = {\n\tarrayMode: true,\n\tfullResults: true,\n} as const;\n\nexport class NeonHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpPreparedQuery';\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\textensions?: DrizzlePgExtension[],\n\t\thookContext?: BlankPgHookContext,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper(query, extensions, hookContext);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t}\n\n\tasync _execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;\n\t/** @internal */\n\tasync _execute(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tasync _execute(\n\t\tplaceholderValues: Record<string, unknown> | undefined = {},\n\t\ttoken: NeonAuthToken | undefined = this.authToken,\n\t): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, clientQuery, query, customResultMapper } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn clientQuery(\n\t\t\t\tquery.sql,\n\t\t\t\tparams,\n\t\t\t\ttoken === undefined\n\t\t\t\t\t? rawQueryConfig\n\t\t\t\t\t: {\n\t\t\t\t\t\t...rawQueryConfig,\n\t\t\t\t\t\tauthToken: token,\n\t\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst result = await clientQuery(\n\t\t\tquery.sql,\n\t\t\tparams,\n\t\t\ttoken === undefined\n\t\t\t\t? queryConfig\n\t\t\t\t: {\n\t\t\t\t\t...queryConfig,\n\t\t\t\t\tauthToken: token,\n\t\t\t\t},\n\t\t);\n\n\t\treturn this.mapResult(result);\n\t}\n\n\toverride mapResult(result: unknown): unknown {\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst rows = (result as FullQueryResults<true>).rows;\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(\n\t\t\tthis.query.sql,\n\t\t\tparams,\n\t\t\tthis.authToken === undefined ? rawQueryConfig : {\n\t\t\t\t...rawQueryConfig,\n\t\t\t\tauthToken: this.authToken,\n\t\t\t},\n\t\t).then((result) => result.rows);\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> | undefined): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined = {}, token?: NeonAuthToken): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(this.query.sql, params, { arrayMode: true, fullResults: true, authToken: token }).then((\n\t\t\tresult,\n\t\t) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode() {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface NeonHttpSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonHttpSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpSession';\n\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NeonHttpSessionOptions = {},\n\t\textensions?: DrizzlePgExtension[],\n\t) {\n\t\tsuper(dialect, extensions);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\thookContext?: BlankPgHookContext,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new NeonHttpPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tthis.extensions,\n\t\t\thookContext,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(\n\t\tqueries: T,\n\t) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: NeonQueryPromise<any, true>[] = [];\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push(\n\t\t\t\tthis.clientQuery(builtQuery.sql, builtQuery.params, {\n\t\t\t\t\tfullResults: true,\n\t\t\t\t\tarrayMode: preparedQuery.isResponseInArrayMode(),\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst batchResults = await this.client.transaction(builtQueries, queryConfig);\n\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true)) as any;\n\t}\n\n\t// change return type to QueryRows<true>\n\tasync query(query: string, params: unknown[]): Promise<FullQueryResults<true>> {\n\t\tthis.logger.logQuery(query, params);\n\t\tconst result = await this.clientQuery(query, params, { arrayMode: true, fullResults: true });\n\t\treturn result;\n\t}\n\n\t// change return type to QueryRows<false>\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<FullQueryResults<false>> {\n\t\treturn this.clientQuery(query, params, { arrayMode: false, fullResults: true });\n\t}\n\n\toverride async count(sql: SQL): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql, token);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\t_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t_config: PgTransactionConfig = {},\n\t): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t}\n}\n\nexport class NeonTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpTransaction';\n\n\toverride async transaction<T>(_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t\t// const savepointName = `sp${this.nestedIndex + 1}`;\n\t\t// const tx = new NeonTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\t// await tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\t// try {\n\t\t// \tconst result = await transaction(tx);\n\t\t// \tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t// \treturn result;\n\t\t// } catch (e) {\n\t\t// \tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t// \tthrow e;\n\t\t// }\n\t}\n}\n\nexport type NeonHttpQueryResult<T> = Omit<FullQueryResults<false>, 'rows'> & { rows: T[] };\n\nexport interface NeonHttpQueryResultHKT extends PgQueryResultHKT {\n\ttype: NeonHttpQueryResult<this['row']>;\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,7 @@
1
1
  import type { FullQueryResults, NeonQueryFunction } from '@neondatabase/serverless';
2
2
  import type { BatchItem } from "../batch.cjs";
3
3
  import { entityKind } from "../entity.cjs";
4
+ import type { BlankPgHookContext, DrizzlePgExtension } from "../extension-core/pg/index.cjs";
4
5
  import type { Logger } from "../logger.cjs";
5
6
  import type { PgDialect } from "../pg-core/dialect.cjs";
6
7
  import { PgTransaction } from "../pg-core/index.cjs";
@@ -18,8 +19,8 @@ export declare class NeonHttpPreparedQuery<T extends PreparedQueryConfig> extend
18
19
  private customResultMapper?;
19
20
  static readonly [entityKind]: string;
20
21
  private clientQuery;
21
- constructor(client: NeonHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
22
- execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;
22
+ constructor(client: NeonHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, _isResponseInArrayMode: boolean, extensions?: DrizzlePgExtension[], hookContext?: BlankPgHookContext, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
23
+ _execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;
23
24
  mapResult(result: unknown): unknown;
24
25
  all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
25
26
  values(placeholderValues: Record<string, unknown> | undefined): Promise<T['values']>;
@@ -34,8 +35,8 @@ export declare class NeonHttpSession<TFullSchema extends Record<string, unknown>
34
35
  static readonly [entityKind]: string;
35
36
  private clientQuery;
36
37
  private logger;
37
- constructor(client: NeonHttpClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: NeonHttpSessionOptions);
38
- prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
38
+ constructor(client: NeonHttpClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: NeonHttpSessionOptions, extensions?: DrizzlePgExtension[]);
39
+ prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, hookContext?: BlankPgHookContext, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
39
40
  batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(queries: T): Promise<any>;
40
41
  query(query: string, params: unknown[]): Promise<FullQueryResults<true>>;
41
42
  queryObjects(query: string, params: unknown[]): Promise<FullQueryResults<false>>;
@@ -1,6 +1,7 @@
1
1
  import type { FullQueryResults, NeonQueryFunction } from '@neondatabase/serverless';
2
2
  import type { BatchItem } from "../batch.js";
3
3
  import { entityKind } from "../entity.js";
4
+ import type { BlankPgHookContext, DrizzlePgExtension } from "../extension-core/pg/index.js";
4
5
  import type { Logger } from "../logger.js";
5
6
  import type { PgDialect } from "../pg-core/dialect.js";
6
7
  import { PgTransaction } from "../pg-core/index.js";
@@ -18,8 +19,8 @@ export declare class NeonHttpPreparedQuery<T extends PreparedQueryConfig> extend
18
19
  private customResultMapper?;
19
20
  static readonly [entityKind]: string;
20
21
  private clientQuery;
21
- constructor(client: NeonHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
22
- execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;
22
+ constructor(client: NeonHttpClient, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, _isResponseInArrayMode: boolean, extensions?: DrizzlePgExtension[], hookContext?: BlankPgHookContext, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
23
+ _execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;
23
24
  mapResult(result: unknown): unknown;
24
25
  all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
25
26
  values(placeholderValues: Record<string, unknown> | undefined): Promise<T['values']>;
@@ -34,8 +35,8 @@ export declare class NeonHttpSession<TFullSchema extends Record<string, unknown>
34
35
  static readonly [entityKind]: string;
35
36
  private clientQuery;
36
37
  private logger;
37
- constructor(client: NeonHttpClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: NeonHttpSessionOptions);
38
- prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
38
+ constructor(client: NeonHttpClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: NeonHttpSessionOptions, extensions?: DrizzlePgExtension[]);
39
+ prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, hookContext?: BlankPgHookContext, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
39
40
  batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(queries: T): Promise<any>;
40
41
  query(query: string, params: unknown[]): Promise<FullQueryResults<true>>;
41
42
  queryObjects(query: string, params: unknown[]): Promise<FullQueryResults<false>>;
@@ -13,8 +13,8 @@ const queryConfig = {
13
13
  fullResults: true
14
14
  };
15
15
  class NeonHttpPreparedQuery extends PgPreparedQuery {
16
- constructor(client, query, logger, fields, _isResponseInArrayMode, customResultMapper) {
17
- super(query);
16
+ constructor(client, query, logger, fields, _isResponseInArrayMode, extensions, hookContext, customResultMapper) {
17
+ super(query, extensions, hookContext);
18
18
  this.client = client;
19
19
  this.logger = logger;
20
20
  this.fields = fields;
@@ -25,7 +25,7 @@ class NeonHttpPreparedQuery extends PgPreparedQuery {
25
25
  static [entityKind] = "NeonHttpPreparedQuery";
26
26
  clientQuery;
27
27
  /** @internal */
28
- async execute(placeholderValues = {}, token = this.authToken) {
28
+ async _execute(placeholderValues = {}, token = this.authToken) {
29
29
  const params = fillPlaceholders(this.query.params, placeholderValues);
30
30
  this.logger.logQuery(this.query.sql, params);
31
31
  const { fields, clientQuery, query, customResultMapper } = this;
@@ -83,8 +83,8 @@ class NeonHttpPreparedQuery extends PgPreparedQuery {
83
83
  }
84
84
  }
85
85
  class NeonHttpSession extends PgSession {
86
- constructor(client, dialect, schema, options = {}) {
87
- super(dialect);
86
+ constructor(client, dialect, schema, options = {}, extensions) {
87
+ super(dialect, extensions);
88
88
  this.client = client;
89
89
  this.schema = schema;
90
90
  this.options = options;
@@ -94,13 +94,15 @@ class NeonHttpSession extends PgSession {
94
94
  static [entityKind] = "NeonHttpSession";
95
95
  clientQuery;
96
96
  logger;
97
- prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
97
+ prepareQuery(query, fields, name, isResponseInArrayMode, hookContext, customResultMapper) {
98
98
  return new NeonHttpPreparedQuery(
99
99
  this.client,
100
100
  query,
101
101
  this.logger,
102
102
  fields,
103
103
  isResponseInArrayMode,
104
+ this.extensions,
105
+ hookContext,
104
106
  customResultMapper
105
107
  );
106
108
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/neon-http/session.ts"],"sourcesContent":["import type { FullQueryResults, NeonQueryFunction, NeonQueryPromise } from '@neondatabase/serverless';\nimport type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery as PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, type SQL } from '~/sql/sql.ts';\nimport { mapResultRow, type NeonAuthToken } from '~/utils.ts';\n\nexport type NeonHttpClient = NeonQueryFunction<any, any>;\n\nconst rawQueryConfig = {\n\tarrayMode: false,\n\tfullResults: true,\n} as const;\nconst queryConfig = {\n\tarrayMode: true,\n\tfullResults: true,\n} as const;\n\nexport class NeonHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpPreparedQuery';\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper(query);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(\n\t\tplaceholderValues: Record<string, unknown> | undefined = {},\n\t\ttoken: NeonAuthToken | undefined = this.authToken,\n\t): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, clientQuery, query, customResultMapper } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn clientQuery(\n\t\t\t\tquery.sql,\n\t\t\t\tparams,\n\t\t\t\ttoken === undefined\n\t\t\t\t\t? rawQueryConfig\n\t\t\t\t\t: {\n\t\t\t\t\t\t...rawQueryConfig,\n\t\t\t\t\t\tauthToken: token,\n\t\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst result = await clientQuery(\n\t\t\tquery.sql,\n\t\t\tparams,\n\t\t\ttoken === undefined\n\t\t\t\t? queryConfig\n\t\t\t\t: {\n\t\t\t\t\t...queryConfig,\n\t\t\t\t\tauthToken: token,\n\t\t\t\t},\n\t\t);\n\n\t\treturn this.mapResult(result);\n\t}\n\n\toverride mapResult(result: unknown): unknown {\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst rows = (result as FullQueryResults<true>).rows;\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(\n\t\t\tthis.query.sql,\n\t\t\tparams,\n\t\t\tthis.authToken === undefined ? rawQueryConfig : {\n\t\t\t\t...rawQueryConfig,\n\t\t\t\tauthToken: this.authToken,\n\t\t\t},\n\t\t).then((result) => result.rows);\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> | undefined): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined = {}, token?: NeonAuthToken): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(this.query.sql, params, { arrayMode: true, fullResults: true, authToken: token }).then((\n\t\t\tresult,\n\t\t) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode() {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface NeonHttpSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonHttpSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpSession';\n\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NeonHttpSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new NeonHttpPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(\n\t\tqueries: T,\n\t) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: NeonQueryPromise<any, true>[] = [];\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push(\n\t\t\t\tthis.clientQuery(builtQuery.sql, builtQuery.params, {\n\t\t\t\t\tfullResults: true,\n\t\t\t\t\tarrayMode: preparedQuery.isResponseInArrayMode(),\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst batchResults = await this.client.transaction(builtQueries, queryConfig);\n\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true)) as any;\n\t}\n\n\t// change return type to QueryRows<true>\n\tasync query(query: string, params: unknown[]): Promise<FullQueryResults<true>> {\n\t\tthis.logger.logQuery(query, params);\n\t\tconst result = await this.clientQuery(query, params, { arrayMode: true, fullResults: true });\n\t\treturn result;\n\t}\n\n\t// change return type to QueryRows<false>\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<FullQueryResults<false>> {\n\t\treturn this.clientQuery(query, params, { arrayMode: false, fullResults: true });\n\t}\n\n\toverride async count(sql: SQL): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql, token);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\t_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t_config: PgTransactionConfig = {},\n\t): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t}\n}\n\nexport class NeonTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpTransaction';\n\n\toverride async transaction<T>(_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t\t// const savepointName = `sp${this.nestedIndex + 1}`;\n\t\t// const tx = new NeonTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\t// await tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\t// try {\n\t\t// \tconst result = await transaction(tx);\n\t\t// \tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t// \treturn result;\n\t\t// } catch (e) {\n\t\t// \tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t// \tthrow e;\n\t\t// }\n\t}\n}\n\nexport type NeonHttpQueryResult<T> = Omit<FullQueryResults<false>, 'rows'> & { rows: T[] };\n\nexport interface NeonHttpQueryResultHKT extends PgQueryResultHKT {\n\ttype: NeonHttpQueryResult<this['row']>;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/neon-http/session.ts"],"sourcesContent":["import type { FullQueryResults, NeonQueryFunction, NeonQueryPromise } from '@neondatabase/serverless';\nimport type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { BlankPgHookContext, DrizzlePgExtension } from '~/extension-core/pg/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery as PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, type SQL } from '~/sql/sql.ts';\nimport { mapResultRow, type NeonAuthToken } from '~/utils.ts';\n\nexport type NeonHttpClient = NeonQueryFunction<any, any>;\n\nconst rawQueryConfig = {\n\tarrayMode: false,\n\tfullResults: true,\n} as const;\nconst queryConfig = {\n\tarrayMode: true,\n\tfullResults: true,\n} as const;\n\nexport class NeonHttpPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpPreparedQuery';\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\textensions?: DrizzlePgExtension[],\n\t\thookContext?: BlankPgHookContext,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper(query, extensions, hookContext);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t}\n\n\tasync _execute(placeholderValues: Record<string, unknown> | undefined): Promise<T['execute']>;\n\t/** @internal */\n\tasync _execute(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tasync _execute(\n\t\tplaceholderValues: Record<string, unknown> | undefined = {},\n\t\ttoken: NeonAuthToken | undefined = this.authToken,\n\t): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, clientQuery, query, customResultMapper } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn clientQuery(\n\t\t\t\tquery.sql,\n\t\t\t\tparams,\n\t\t\t\ttoken === undefined\n\t\t\t\t\t? rawQueryConfig\n\t\t\t\t\t: {\n\t\t\t\t\t\t...rawQueryConfig,\n\t\t\t\t\t\tauthToken: token,\n\t\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst result = await clientQuery(\n\t\t\tquery.sql,\n\t\t\tparams,\n\t\t\ttoken === undefined\n\t\t\t\t? queryConfig\n\t\t\t\t: {\n\t\t\t\t\t...queryConfig,\n\t\t\t\t\tauthToken: token,\n\t\t\t\t},\n\t\t);\n\n\t\treturn this.mapResult(result);\n\t}\n\n\toverride mapResult(result: unknown): unknown {\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst rows = (result as FullQueryResults<true>).rows;\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(\n\t\t\tthis.query.sql,\n\t\t\tparams,\n\t\t\tthis.authToken === undefined ? rawQueryConfig : {\n\t\t\t\t...rawQueryConfig,\n\t\t\t\tauthToken: this.authToken,\n\t\t\t},\n\t\t).then((result) => result.rows);\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> | undefined): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined, token?: NeonAuthToken): Promise<T['values']>;\n\t/** @internal */\n\tvalues(placeholderValues: Record<string, unknown> | undefined = {}, token?: NeonAuthToken): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues);\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.clientQuery(this.query.sql, params, { arrayMode: true, fullResults: true, authToken: token }).then((\n\t\t\tresult,\n\t\t) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode() {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface NeonHttpSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonHttpSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpSession';\n\n\tprivate clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NeonHttpSessionOptions = {},\n\t\textensions?: DrizzlePgExtension[],\n\t) {\n\t\tsuper(dialect, extensions);\n\t\t// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the\n\t\t// root query function `client` is only usable as a template function;\n\t\t// `client` is a fallback for earlier versions\n\t\tthis.clientQuery = (client as any).query ?? client as any;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\thookContext?: BlankPgHookContext,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new NeonHttpPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tthis.extensions,\n\t\t\thookContext,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(\n\t\tqueries: T,\n\t) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: NeonQueryPromise<any, true>[] = [];\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push(\n\t\t\t\tthis.clientQuery(builtQuery.sql, builtQuery.params, {\n\t\t\t\t\tfullResults: true,\n\t\t\t\t\tarrayMode: preparedQuery.isResponseInArrayMode(),\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst batchResults = await this.client.transaction(builtQueries, queryConfig);\n\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true)) as any;\n\t}\n\n\t// change return type to QueryRows<true>\n\tasync query(query: string, params: unknown[]): Promise<FullQueryResults<true>> {\n\t\tthis.logger.logQuery(query, params);\n\t\tconst result = await this.clientQuery(query, params, { arrayMode: true, fullResults: true });\n\t\treturn result;\n\t}\n\n\t// change return type to QueryRows<false>\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<FullQueryResults<false>> {\n\t\treturn this.clientQuery(query, params, { arrayMode: false, fullResults: true });\n\t}\n\n\toverride async count(sql: SQL): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\toverride async count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql, token);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\t_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t_config: PgTransactionConfig = {},\n\t): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t}\n}\n\nexport class NeonTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<NeonHttpQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpTransaction';\n\n\toverride async transaction<T>(_transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tthrow new Error('No transactions support in neon-http driver');\n\t\t// const savepointName = `sp${this.nestedIndex + 1}`;\n\t\t// const tx = new NeonTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\t// await tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\t// try {\n\t\t// \tconst result = await transaction(tx);\n\t\t// \tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t// \treturn result;\n\t\t// } catch (e) {\n\t\t// \tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t// \tthrow e;\n\t\t// }\n\t}\n}\n\nexport type NeonHttpQueryResult<T> = Omit<FullQueryResults<false>, 'rows'> & { rows: T[] };\n\nexport interface NeonHttpQueryResultHKT extends PgQueryResultHKT {\n\ttype: NeonHttpQueryResult<this['row']>;\n}\n"],"mappings":"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","names":[]}
@@ -32,14 +32,15 @@ var import_relations = require("../relations.cjs");
32
32
  var import_utils = require("../utils.cjs");
33
33
  var import_session = require("./session.cjs");
34
34
  class NeonDriver {
35
- constructor(client, dialect, options = {}) {
35
+ constructor(client, dialect, options = {}, extensions) {
36
36
  this.client = client;
37
37
  this.dialect = dialect;
38
38
  this.options = options;
39
+ this.extensions = extensions;
39
40
  }
40
41
  static [import_entity.entityKind] = "NeonDriver";
41
42
  createSession(schema) {
42
- return new import_session.NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });
43
+ return new import_session.NeonSession(this.client, this.dialect, schema, { logger: this.options.logger }, this.extensions);
43
44
  }
44
45
  }
45
46
  class NeonDatabase extends import_db.PgDatabase {
@@ -65,9 +66,10 @@ function construct(client, config = {}) {
65
66
  tableNamesMap: tablesConfig.tableNamesMap
66
67
  };
67
68
  }
68
- const driver = new NeonDriver(client, dialect, { logger });
69
+ const extensions = config.extensions;
70
+ const driver = new NeonDriver(client, dialect, { logger }, extensions);
69
71
  const session = driver.createSession(schema);
70
- const db = new NeonDatabase(dialect, session, schema);
72
+ const db = new NeonDatabase(dialect, session, schema, extensions);
71
73
  db.$client = client;
72
74
  return db;
73
75
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { neonConfig, Pool, type PoolConfig } from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = NeonClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new NeonDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new NeonDatabase(dialect, session, schema as any) as NeonDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = Pool,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema>\n\t\t\t& ({\n\t\t\t\tconnection: string | PoolConfig;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t\t& {\n\t\t\t\tws?: any;\n\t\t\t}\n\t\t),\n\t]\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ws, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PoolConfig | string;\n\t\t\tws?: any;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema>;\n\n\t\tif (ws) {\n\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t}\n\n\t\tif (client) return construct(client, drizzleConfig);\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Pool({\n\t\t\t\tconnectionString: connection,\n\t\t\t})\n\t\t\t: new Pool(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): NeonDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAkD;AAClD,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AACP,mBAA6C;AAE7C,qBAA4B;AAMrB,MAAM,WAAW;AAAA,EAGvB,YACS,QACA,SACA,UAA6B,CAAC,GACrC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,wBAAU,IAAY;AAAA,EASvC,cACC,QAC+D;AAC/D,WAAO,IAAI,2BAAY,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC1F;AACD;AAEO,MAAM,qBAEH,qBAAwC;AAAA,EACjD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,WAAW,QAAQ,SAAS,EAAE,OAAO,CAAC;AACzD,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,aAAa,SAAS,SAAS,MAAa;AAC3D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAoBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,uBAAK;AAAA,MACzB,kBAAkB,OAAO,CAAC;AAAA,IAC3B,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,IAAI,GAAG,cAAc,IAAI,OAAO,CAAC;AAM7D,QAAI,IAAI;AACP,mCAAW,uBAAuB;AAAA,IACnC;AAEA,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,uBAAK;AAAA,MACV,kBAAkB;AAAA,IACnB,CAAC,IACC,IAAI,uBAAK,UAAU;AAEtB,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AACvF;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
1
+ {"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { neonConfig, Pool, type PoolConfig } from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { DrizzlePgExtension } from '~/extension-core/pg/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t\tprivate extensions?: DrizzlePgExtension[],\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger }, this.extensions);\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = NeonClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema, DrizzlePgExtension> = {},\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst extensions = config.extensions;\n\tconst driver = new NeonDriver(client, dialect, { logger }, extensions);\n\tconst session = driver.createSession(schema);\n\tconst db = new NeonDatabase(dialect, session, schema as any, extensions) as NeonDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = Pool,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, DrizzlePgExtension>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, DrizzlePgExtension>\n\t\t\t& ({\n\t\t\t\tconnection: string | PoolConfig;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t\t& {\n\t\t\t\tws?: any;\n\t\t\t}\n\t\t),\n\t]\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ws, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PoolConfig | string;\n\t\t\tws?: any;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema, DrizzlePgExtension>;\n\n\t\tif (ws) {\n\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t}\n\n\t\tif (client) return construct(client, drizzleConfig);\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Pool({\n\t\t\t\tconnectionString: connection,\n\t\t\t})\n\t\t\t: new Pool(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, DrizzlePgExtension> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema, DrizzlePgExtension>,\n\t): NeonDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAkD;AAClD,oBAA2B;AAG3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AACP,mBAA6C;AAE7C,qBAA4B;AAMrB,MAAM,WAAW;AAAA,EAGvB,YACS,QACA,SACA,UAA6B,CAAC,GAC9B,YACP;AAJO;AACA;AACA;AACA;AAAA,EAET;AAAA,EARA,QAAiB,wBAAU,IAAY;AAAA,EAUvC,cACC,QAC+D;AAC/D,WAAO,IAAI,2BAAY,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,UAAU;AAAA,EAC3G;AACD;AAEO,MAAM,qBAEH,qBAAwC;AAAA,EACjD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAqD,CAAC,GAGrD;AACD,QAAM,UAAU,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,aAAa,OAAO;AAC1B,QAAM,SAAS,IAAI,WAAW,QAAQ,SAAS,EAAE,OAAO,GAAG,UAAU;AACrE,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,aAAa,SAAS,SAAS,QAAe,UAAU;AACvE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAoBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,uBAAK;AAAA,MACzB,kBAAkB,OAAO,CAAC;AAAA,IAC3B,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,IAAI,GAAG,cAAc,IAAI,OAAO,CAAC;AAM7D,QAAI,IAAI;AACP,mCAAW,uBAAuB;AAAA,IACnC;AAEA,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,uBAAK;AAAA,MACV,kBAAkB;AAAA,IACnB,CAAC,IACC,IAAI,uBAAK,UAAU;AAEtB,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAA2D;AAC3G;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
@@ -1,5 +1,6 @@
1
1
  import { Pool, type PoolConfig } from '@neondatabase/serverless';
2
2
  import { entityKind } from "../entity.cjs";
3
+ import type { DrizzlePgExtension } from "../extension-core/pg/index.cjs";
3
4
  import type { Logger } from "../logger.cjs";
4
5
  import { PgDatabase } from "../pg-core/db.cjs";
5
6
  import { PgDialect } from "../pg-core/dialect.cjs";
@@ -14,8 +15,9 @@ export declare class NeonDriver {
14
15
  private client;
15
16
  private dialect;
16
17
  private options;
18
+ private extensions?;
17
19
  static readonly [entityKind]: string;
18
- constructor(client: NeonClient, dialect: PgDialect, options?: NeonDriverOptions);
20
+ constructor(client: NeonClient, dialect: PgDialect, options?: NeonDriverOptions, extensions?: DrizzlePgExtension[] | undefined);
19
21
  createSession(schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined): NeonSession<Record<string, unknown>, TablesRelationalConfig>;
20
22
  }
21
23
  export declare class NeonDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<NeonQueryResultHKT, TSchema> {
@@ -25,9 +27,9 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
25
27
  TClient | string
26
28
  ] | [
27
29
  TClient | string,
28
- DrizzleConfig<TSchema>
30
+ DrizzleConfig<TSchema, DrizzlePgExtension>
29
31
  ] | [
30
- (DrizzleConfig<TSchema> & ({
32
+ (DrizzleConfig<TSchema, DrizzlePgExtension> & ({
31
33
  connection: string | PoolConfig;
32
34
  } | {
33
35
  client: TClient;
@@ -38,7 +40,7 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
38
40
  $client: TClient;
39
41
  };
40
42
  export declare namespace drizzle {
41
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NeonDatabase<TSchema> & {
43
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema, DrizzlePgExtension>): NeonDatabase<TSchema> & {
42
44
  $client: '$client is not available on drizzle.mock()';
43
45
  };
44
46
  }
@@ -1,5 +1,6 @@
1
1
  import { Pool, type PoolConfig } from '@neondatabase/serverless';
2
2
  import { entityKind } from "../entity.js";
3
+ import type { DrizzlePgExtension } from "../extension-core/pg/index.js";
3
4
  import type { Logger } from "../logger.js";
4
5
  import { PgDatabase } from "../pg-core/db.js";
5
6
  import { PgDialect } from "../pg-core/dialect.js";
@@ -14,8 +15,9 @@ export declare class NeonDriver {
14
15
  private client;
15
16
  private dialect;
16
17
  private options;
18
+ private extensions?;
17
19
  static readonly [entityKind]: string;
18
- constructor(client: NeonClient, dialect: PgDialect, options?: NeonDriverOptions);
20
+ constructor(client: NeonClient, dialect: PgDialect, options?: NeonDriverOptions, extensions?: DrizzlePgExtension[] | undefined);
19
21
  createSession(schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined): NeonSession<Record<string, unknown>, TablesRelationalConfig>;
20
22
  }
21
23
  export declare class NeonDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<NeonQueryResultHKT, TSchema> {
@@ -25,9 +27,9 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
25
27
  TClient | string
26
28
  ] | [
27
29
  TClient | string,
28
- DrizzleConfig<TSchema>
30
+ DrizzleConfig<TSchema, DrizzlePgExtension>
29
31
  ] | [
30
- (DrizzleConfig<TSchema> & ({
32
+ (DrizzleConfig<TSchema, DrizzlePgExtension> & ({
31
33
  connection: string | PoolConfig;
32
34
  } | {
33
35
  client: TClient;
@@ -38,7 +40,7 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
38
40
  $client: TClient;
39
41
  };
40
42
  export declare namespace drizzle {
41
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NeonDatabase<TSchema> & {
43
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema, DrizzlePgExtension>): NeonDatabase<TSchema> & {
42
44
  $client: '$client is not available on drizzle.mock()';
43
45
  };
44
46
  }
@@ -10,14 +10,15 @@ import {
10
10
  import { isConfig } from "../utils.js";
11
11
  import { NeonSession } from "./session.js";
12
12
  class NeonDriver {
13
- constructor(client, dialect, options = {}) {
13
+ constructor(client, dialect, options = {}, extensions) {
14
14
  this.client = client;
15
15
  this.dialect = dialect;
16
16
  this.options = options;
17
+ this.extensions = extensions;
17
18
  }
18
19
  static [entityKind] = "NeonDriver";
19
20
  createSession(schema) {
20
- return new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });
21
+ return new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger }, this.extensions);
21
22
  }
22
23
  }
23
24
  class NeonDatabase extends PgDatabase {
@@ -43,9 +44,10 @@ function construct(client, config = {}) {
43
44
  tableNamesMap: tablesConfig.tableNamesMap
44
45
  };
45
46
  }
46
- const driver = new NeonDriver(client, dialect, { logger });
47
+ const extensions = config.extensions;
48
+ const driver = new NeonDriver(client, dialect, { logger }, extensions);
47
49
  const session = driver.createSession(schema);
48
- const db = new NeonDatabase(dialect, session, schema);
50
+ const db = new NeonDatabase(dialect, session, schema, extensions);
49
51
  db.$client = client;
50
52
  return db;
51
53
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { neonConfig, Pool, type PoolConfig } from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = NeonClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new NeonDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new NeonDatabase(dialect, session, schema as any) as NeonDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = Pool,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema>\n\t\t\t& ({\n\t\t\t\tconnection: string | PoolConfig;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t\t& {\n\t\t\t\tws?: any;\n\t\t\t}\n\t\t),\n\t]\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ws, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PoolConfig | string;\n\t\t\tws?: any;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema>;\n\n\t\tif (ws) {\n\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t}\n\n\t\tif (client) return construct(client, drizzleConfig);\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Pool({\n\t\t\t\tconnectionString: connection,\n\t\t\t})\n\t\t\t: new Pool(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): NeonDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AAAA,SAAS,YAAY,YAA6B;AAClD,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAA6B,gBAAgB;AAE7C,SAAS,mBAAmB;AAMrB,MAAM,WAAW;AAAA,EAGvB,YACS,QACA,SACA,UAA6B,CAAC,GACrC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,UAAU,IAAY;AAAA,EASvC,cACC,QAC+D;AAC/D,WAAO,IAAI,YAAY,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC1F;AACD;AAEO,MAAM,qBAEH,WAAwC;AAAA,EACjD,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,WAAW,QAAQ,SAAS,EAAE,OAAO,CAAC;AACzD,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,aAAa,SAAS,SAAS,MAAa;AAC3D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAoBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,KAAK;AAAA,MACzB,kBAAkB,OAAO,CAAC;AAAA,IAC3B,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,IAAI,GAAG,cAAc,IAAI,OAAO,CAAC;AAM7D,QAAI,IAAI;AACP,iBAAW,uBAAuB;AAAA,IACnC;AAEA,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,KAAK;AAAA,MACV,kBAAkB;AAAA,IACnB,CAAC,IACC,IAAI,KAAK,UAAU;AAEtB,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AACvF;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
1
+ {"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { neonConfig, Pool, type PoolConfig } from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { DrizzlePgExtension } from '~/extension-core/pg/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t\tprivate extensions?: DrizzlePgExtension[],\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger }, this.extensions);\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = NeonClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema, DrizzlePgExtension> = {},\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst extensions = config.extensions;\n\tconst driver = new NeonDriver(client, dialect, { logger }, extensions);\n\tconst session = driver.createSession(schema);\n\tconst db = new NeonDatabase(dialect, session, schema as any, extensions) as NeonDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = Pool,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, DrizzlePgExtension>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, DrizzlePgExtension>\n\t\t\t& ({\n\t\t\t\tconnection: string | PoolConfig;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t\t& {\n\t\t\t\tws?: any;\n\t\t\t}\n\t\t),\n\t]\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ws, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PoolConfig | string;\n\t\t\tws?: any;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema, DrizzlePgExtension>;\n\n\t\tif (ws) {\n\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t}\n\n\t\tif (client) return construct(client, drizzleConfig);\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Pool({\n\t\t\t\tconnectionString: connection,\n\t\t\t})\n\t\t\t: new Pool(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, DrizzlePgExtension> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema, DrizzlePgExtension>,\n\t): NeonDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AAAA,SAAS,YAAY,YAA6B;AAClD,SAAS,kBAAkB;AAG3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAA6B,gBAAgB;AAE7C,SAAS,mBAAmB;AAMrB,MAAM,WAAW;AAAA,EAGvB,YACS,QACA,SACA,UAA6B,CAAC,GAC9B,YACP;AAJO;AACA;AACA;AACA;AAAA,EAET;AAAA,EARA,QAAiB,UAAU,IAAY;AAAA,EAUvC,cACC,QAC+D;AAC/D,WAAO,IAAI,YAAY,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,UAAU;AAAA,EAC3G;AACD;AAEO,MAAM,qBAEH,WAAwC;AAAA,EACjD,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAqD,CAAC,GAGrD;AACD,QAAM,UAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,aAAa,OAAO;AAC1B,QAAM,SAAS,IAAI,WAAW,QAAQ,SAAS,EAAE,OAAO,GAAG,UAAU;AACrE,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,aAAa,SAAS,SAAS,QAAe,UAAU;AACvE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAoBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,KAAK;AAAA,MACzB,kBAAkB,OAAO,CAAC;AAAA,IAC3B,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,IAAI,GAAG,cAAc,IAAI,OAAO,CAAC;AAM7D,QAAI,IAAI;AACP,iBAAW,uBAAuB;AAAA,IACnC;AAEA,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,KAAK;AAAA,MACV,kBAAkB;AAAA,IACnB,CAAC,IACC,IAAI,KAAK,UAAU;AAEtB,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAA2D;AAC3G;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
@@ -31,8 +31,8 @@ var import_session = require("../pg-core/session.cjs");
31
31
  var import_sql = require("../sql/sql.cjs");
32
32
  var import_utils = require("../utils.cjs");
33
33
  class NeonPreparedQuery extends import_session.PgPreparedQuery {
34
- constructor(client, queryString, params, logger, fields, name, _isResponseInArrayMode, customResultMapper) {
35
- super({ sql: queryString, params });
34
+ constructor(client, queryString, params, logger, fields, name, _isResponseInArrayMode, extensions, hookContext, customResultMapper) {
35
+ super({ sql: queryString, params }, extensions, hookContext);
36
36
  this.client = client;
37
37
  this.params = params;
38
38
  this.logger = logger;
@@ -118,7 +118,7 @@ class NeonPreparedQuery extends import_session.PgPreparedQuery {
118
118
  static [import_entity.entityKind] = "NeonPreparedQuery";
119
119
  rawQueryConfig;
120
120
  queryConfig;
121
- async execute(placeholderValues = {}) {
121
+ async _execute(placeholderValues = {}) {
122
122
  const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
123
123
  this.logger.logQuery(this.rawQueryConfig.text, params);
124
124
  const { fields, client, rawQueryConfig: rawQuery, queryConfig: query, joinsNotNullableMap, customResultMapper } = this;
@@ -144,8 +144,8 @@ class NeonPreparedQuery extends import_session.PgPreparedQuery {
144
144
  }
145
145
  }
146
146
  class NeonSession extends import_session.PgSession {
147
- constructor(client, dialect, schema, options = {}) {
148
- super(dialect);
147
+ constructor(client, dialect, schema, options = {}, extensions) {
148
+ super(dialect, extensions);
149
149
  this.client = client;
150
150
  this.schema = schema;
151
151
  this.options = options;
@@ -153,7 +153,7 @@ class NeonSession extends import_session.PgSession {
153
153
  }
154
154
  static [import_entity.entityKind] = "NeonSession";
155
155
  logger;
156
- prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
156
+ prepareQuery(query, fields, name, isResponseInArrayMode, hookContext, customResultMapper) {
157
157
  return new NeonPreparedQuery(
158
158
  this.client,
159
159
  query.sql,
@@ -162,6 +162,8 @@ class NeonSession extends import_session.PgSession {
162
162
  fields,
163
163
  name,
164
164
  isResponseInArrayMode,
165
+ this.extensions,
166
+ hookContext,
165
167
  customResultMapper
166
168
  );
167
169
  }
@@ -184,8 +186,14 @@ class NeonSession extends import_session.PgSession {
184
186
  );
185
187
  }
186
188
  async transaction(transaction, config = {}) {
187
- const session = this.client instanceof import_serverless.Pool ? new NeonSession(await this.client.connect(), this.dialect, this.schema, this.options) : this;
188
- const tx = new NeonTransaction(this.dialect, session, this.schema);
189
+ const session = this.client instanceof import_serverless.Pool ? new NeonSession(await this.client.connect(), this.dialect, this.schema, this.options, this.extensions) : this;
190
+ const tx = new NeonTransaction(
191
+ this.dialect,
192
+ session,
193
+ this.schema,
194
+ void 0,
195
+ this.extensions
196
+ );
189
197
  await tx.execute(import_sql.sql`begin ${tx.getTransactionConfigSQL(config)}`);
190
198
  try {
191
199
  const result = await transaction(tx);
@@ -205,7 +213,13 @@ class NeonTransaction extends import_pg_core.PgTransaction {
205
213
  static [import_entity.entityKind] = "NeonTransaction";
206
214
  async transaction(transaction) {
207
215
  const savepointName = `sp${this.nestedIndex + 1}`;
208
- const tx = new NeonTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);
216
+ const tx = new NeonTransaction(
217
+ this.dialect,
218
+ this.session,
219
+ this.schema,
220
+ this.nestedIndex + 1,
221
+ this._.extensions
222
+ );
209
223
  await tx.execute(import_sql.sql.raw(`savepoint ${savepointName}`));
210
224
  try {
211
225
  const result = await transaction(tx);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/neon-serverless/session.ts"],"sourcesContent":["import {\n\ttype Client,\n\tPool,\n\ttype PoolClient,\n\ttype QueryArrayConfig,\n\ttype QueryConfig,\n\ttype QueryResult,\n\ttype QueryResultRow,\n\ttypes,\n} from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport type NeonClient = Pool | PoolClient | Client;\n\nexport class NeonPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NeonPreparedQuery';\n\n\tprivate rawQueryConfig: QueryConfig;\n\tprivate queryConfig: QueryArrayConfig;\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId === 1115) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId === 1185) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId === 1187) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId === 1182) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\trowMode: 'array',\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId === 1115) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId === 1185) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId === 1187) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId === 1182) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\n\t\tconst { fields, client, rawQueryConfig: rawQuery, queryConfig: query, joinsNotNullableMap, customResultMapper } =\n\t\t\tthis;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn client.query(rawQuery, params);\n\t\t}\n\n\t\tconst result = await client.query(query, params);\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\treturn this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\treturn this.client.query(this.queryConfig, params).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface NeonSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<NeonQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NeonSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new NeonPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<QueryResult> {\n\t\tthis.logger.logQuery(query, params);\n\t\tconst result = await this.client.query({\n\t\t\trowMode: 'array',\n\t\t\ttext: query,\n\t\t\tvalues: params,\n\t\t});\n\t\treturn result;\n\t}\n\n\tasync queryObjects<T extends QueryResultRow>(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<QueryResult<T>> {\n\t\treturn this.client.query<T>(query, params);\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig: PgTransactionConfig = {},\n\t): Promise<T> {\n\t\tconst session = this.client instanceof Pool // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t? new NeonSession(await this.client.connect(), this.dialect, this.schema, this.options)\n\t\t\t: this;\n\t\tconst tx = new NeonTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tawait tx.execute(sql`begin ${tx.getTransactionConfigSQL(config)}`);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait tx.execute(sql`rollback`);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.client instanceof Pool) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\t(session.client as PoolClient).release();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class NeonTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<NeonQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonTransaction';\n\n\toverride async transaction<T>(transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NeonTransaction<TFullSchema, TSchema>(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport interface NeonQueryResultHKT extends PgQueryResultHKT {\n\ttype: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n"],"mappings":"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","names":["sql"]}
1
+ {"version":3,"sources":["../../src/neon-serverless/session.ts"],"sourcesContent":["import {\n\ttype Client,\n\tPool,\n\ttype PoolClient,\n\ttype QueryArrayConfig,\n\ttype QueryConfig,\n\ttype QueryResult,\n\ttype QueryResultRow,\n\ttypes,\n} from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { BlankPgHookContext, DrizzlePgExtension } from '~/extension-core/pg/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport type NeonClient = Pool | PoolClient | Client;\n\nexport class NeonPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NeonPreparedQuery';\n\n\tprivate rawQueryConfig: QueryConfig;\n\tprivate queryConfig: QueryArrayConfig;\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\textensions?: DrizzlePgExtension[],\n\t\thookContext?: BlankPgHookContext,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params }, extensions, hookContext);\n\t\tthis.rawQueryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId === 1115) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId === 1185) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId === 1187) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId === 1182) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\trowMode: 'array',\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId === 1115) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId === 1185) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId === 1187) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId === 1182) {\n\t\t\t\t\t\treturn (val) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync _execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\n\t\tconst { fields, client, rawQueryConfig: rawQuery, queryConfig: query, joinsNotNullableMap, customResultMapper } =\n\t\t\tthis;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn client.query(rawQuery, params);\n\t\t}\n\n\t\tconst result = await client.query(query, params);\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\treturn this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n\t}\n\n\tvalues(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\treturn this.client.query(this.queryConfig, params).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface NeonSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<NeonQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NeonSessionOptions = {},\n\t\textensions?: DrizzlePgExtension[],\n\t) {\n\t\tsuper(dialect, extensions);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\thookContext?: BlankPgHookContext,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new NeonPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tthis.extensions,\n\t\t\thookContext,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<QueryResult> {\n\t\tthis.logger.logQuery(query, params);\n\t\tconst result = await this.client.query({\n\t\t\trowMode: 'array',\n\t\t\ttext: query,\n\t\t\tvalues: params,\n\t\t});\n\t\treturn result;\n\t}\n\n\tasync queryObjects<T extends QueryResultRow>(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<QueryResult<T>> {\n\t\treturn this.client.query<T>(query, params);\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig: PgTransactionConfig = {},\n\t): Promise<T> {\n\t\tconst session = this.client instanceof Pool // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t? new NeonSession(await this.client.connect(), this.dialect, this.schema, this.options, this.extensions)\n\t\t\t: this;\n\t\tconst tx = new NeonTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.schema,\n\t\t\tundefined,\n\t\t\tthis.extensions,\n\t\t);\n\t\tawait tx.execute(sql`begin ${tx.getTransactionConfigSQL(config)}`);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait tx.execute(sql`rollback`);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.client instanceof Pool) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\t(session.client as PoolClient).release();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class NeonTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<NeonQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonTransaction';\n\n\toverride async transaction<T>(transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NeonTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t\tthis._.extensions,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport interface NeonQueryResultHKT extends PgQueryResultHKT {\n\ttype: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n"],"mappings":"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","names":["sql"]}