drizzle-orm 0.44.0 → 0.44.2-512acc4

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 (800) hide show
  1. package/aws-data-api/pg/driver.cjs +14 -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 +14 -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 +4 -4
  18. package/better-sqlite3/session.cjs.map +1 -1
  19. package/better-sqlite3/session.d.cts +4 -4
  20. package/better-sqlite3/session.d.ts +4 -4
  21. package/better-sqlite3/session.js +4 -4
  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 +4 -4
  40. package/bun-sqlite/session.cjs.map +1 -1
  41. package/bun-sqlite/session.d.cts +4 -4
  42. package/bun-sqlite/session.d.ts +4 -4
  43. package/bun-sqlite/session.js +4 -4
  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 +9 -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 +9 -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 +4 -4
  74. package/durable-sqlite/session.d.ts +4 -4
  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 +4 -4
  82. package/expo-sqlite/session.cjs.map +1 -1
  83. package/expo-sqlite/session.d.cts +4 -4
  84. package/expo-sqlite/session.d.ts +4 -4
  85. package/expo-sqlite/session.js +4 -4
  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 +313 -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 +280 -0
  158. package/extensions/s3-file/common.js.map +1 -0
  159. package/extensions/s3-file/gel/column.cjs +113 -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 +92 -0
  164. package/extensions/s3-file/gel/column.js.map +1 -0
  165. package/extensions/s3-file/gel/extension.cjs +262 -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 +248 -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 +110 -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 +86 -0
  188. package/extensions/s3-file/mysql/column.js.map +1 -0
  189. package/extensions/s3-file/mysql/extension.cjs +242 -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 +228 -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 +113 -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 +92 -0
  206. package/extensions/s3-file/pg/column.js.map +1 -0
  207. package/extensions/s3-file/pg/extension.cjs +264 -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 +250 -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 +110 -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 +86 -0
  224. package/extensions/s3-file/singlestore/column.js.map +1 -0
  225. package/extensions/s3-file/singlestore/extension.cjs +239 -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 +225 -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 +110 -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 +86 -0
  242. package/extensions/s3-file/sqlite/column.js.map +1 -0
  243. package/extensions/s3-file/sqlite/extension.cjs +242 -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 +228 -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 +24 -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 +25 -20
  284. package/gel-core/dialect.js.map +1 -1
  285. package/gel-core/query-builders/delete.cjs +19 -5
  286. package/gel-core/query-builders/delete.cjs.map +1 -1
  287. package/gel-core/query-builders/delete.js +19 -5
  288. package/gel-core/query-builders/delete.js.map +1 -1
  289. package/gel-core/query-builders/insert.cjs +44 -9
  290. package/gel-core/query-builders/insert.cjs.map +1 -1
  291. package/gel-core/query-builders/insert.js +46 -11
  292. package/gel-core/query-builders/insert.js.map +1 -1
  293. package/gel-core/query-builders/query.cjs +15 -2
  294. package/gel-core/query-builders/query.cjs.map +1 -1
  295. package/gel-core/query-builders/query.js +15 -2
  296. package/gel-core/query-builders/query.js.map +1 -1
  297. package/gel-core/query-builders/select.cjs +21 -5
  298. package/gel-core/query-builders/select.cjs.map +1 -1
  299. package/gel-core/query-builders/select.d.cts +9 -9
  300. package/gel-core/query-builders/select.d.ts +9 -9
  301. package/gel-core/query-builders/select.js +21 -5
  302. package/gel-core/query-builders/select.js.map +1 -1
  303. package/gel-core/query-builders/select.types.cjs.map +1 -1
  304. package/gel-core/query-builders/select.types.d.cts +2 -1
  305. package/gel-core/query-builders/select.types.d.ts +2 -1
  306. package/gel-core/query-builders/update.cjs +20 -6
  307. package/gel-core/query-builders/update.cjs.map +1 -1
  308. package/gel-core/query-builders/update.js +20 -6
  309. package/gel-core/query-builders/update.js.map +1 -1
  310. package/gel-core/session.cjs +47 -4
  311. package/gel-core/session.cjs.map +1 -1
  312. package/gel-core/session.d.cts +11 -5
  313. package/gel-core/session.d.ts +11 -5
  314. package/gel-core/session.js +47 -4
  315. package/gel-core/session.js.map +1 -1
  316. package/libsql/driver-core.cjs +3 -2
  317. package/libsql/driver-core.cjs.map +1 -1
  318. package/libsql/driver-core.js +3 -2
  319. package/libsql/driver-core.js.map +1 -1
  320. package/libsql/driver.cjs +4 -1
  321. package/libsql/driver.cjs.map +1 -1
  322. package/libsql/driver.d.cts +4 -3
  323. package/libsql/driver.d.ts +4 -3
  324. package/libsql/driver.js +4 -1
  325. package/libsql/driver.js.map +1 -1
  326. package/libsql/http/index.cjs +4 -1
  327. package/libsql/http/index.cjs.map +1 -1
  328. package/libsql/http/index.d.cts +4 -3
  329. package/libsql/http/index.d.ts +4 -3
  330. package/libsql/http/index.js +4 -1
  331. package/libsql/http/index.js.map +1 -1
  332. package/libsql/node/index.cjs +4 -1
  333. package/libsql/node/index.cjs.map +1 -1
  334. package/libsql/node/index.d.cts +4 -3
  335. package/libsql/node/index.d.ts +4 -3
  336. package/libsql/node/index.js +4 -1
  337. package/libsql/node/index.js.map +1 -1
  338. package/libsql/session.cjs +29 -12
  339. package/libsql/session.cjs.map +1 -1
  340. package/libsql/session.d.cts +8 -7
  341. package/libsql/session.d.ts +8 -7
  342. package/libsql/session.js +29 -12
  343. package/libsql/session.js.map +1 -1
  344. package/libsql/sqlite3/index.cjs +4 -1
  345. package/libsql/sqlite3/index.cjs.map +1 -1
  346. package/libsql/sqlite3/index.d.cts +4 -3
  347. package/libsql/sqlite3/index.d.ts +4 -3
  348. package/libsql/sqlite3/index.js +4 -1
  349. package/libsql/sqlite3/index.js.map +1 -1
  350. package/libsql/wasm/index.cjs +4 -1
  351. package/libsql/wasm/index.cjs.map +1 -1
  352. package/libsql/wasm/index.d.cts +4 -3
  353. package/libsql/wasm/index.d.ts +4 -3
  354. package/libsql/wasm/index.js +4 -1
  355. package/libsql/wasm/index.js.map +1 -1
  356. package/libsql/web/index.cjs +4 -1
  357. package/libsql/web/index.cjs.map +1 -1
  358. package/libsql/web/index.d.cts +4 -3
  359. package/libsql/web/index.d.ts +4 -3
  360. package/libsql/web/index.js +4 -1
  361. package/libsql/web/index.js.map +1 -1
  362. package/libsql/ws/index.cjs +4 -1
  363. package/libsql/ws/index.cjs.map +1 -1
  364. package/libsql/ws/index.d.cts +4 -3
  365. package/libsql/ws/index.d.ts +4 -3
  366. package/libsql/ws/index.js +4 -1
  367. package/libsql/ws/index.js.map +1 -1
  368. package/mysql-core/db.cjs +5 -3
  369. package/mysql-core/db.cjs.map +1 -1
  370. package/mysql-core/db.d.cts +3 -1
  371. package/mysql-core/db.d.ts +3 -1
  372. package/mysql-core/db.js +5 -3
  373. package/mysql-core/db.js.map +1 -1
  374. package/mysql-core/dialect.cjs +29 -23
  375. package/mysql-core/dialect.cjs.map +1 -1
  376. package/mysql-core/dialect.d.cts +8 -7
  377. package/mysql-core/dialect.d.ts +8 -7
  378. package/mysql-core/dialect.js +30 -24
  379. package/mysql-core/dialect.js.map +1 -1
  380. package/mysql-core/query-builders/delete.cjs +8 -1
  381. package/mysql-core/query-builders/delete.cjs.map +1 -1
  382. package/mysql-core/query-builders/delete.js +8 -1
  383. package/mysql-core/query-builders/delete.js.map +1 -1
  384. package/mysql-core/query-builders/insert.cjs +30 -6
  385. package/mysql-core/query-builders/insert.cjs.map +1 -1
  386. package/mysql-core/query-builders/insert.js +32 -8
  387. package/mysql-core/query-builders/insert.js.map +1 -1
  388. package/mysql-core/query-builders/query.cjs +19 -3
  389. package/mysql-core/query-builders/query.cjs.map +1 -1
  390. package/mysql-core/query-builders/query.js +19 -3
  391. package/mysql-core/query-builders/query.js.map +1 -1
  392. package/mysql-core/query-builders/select.cjs +23 -6
  393. package/mysql-core/query-builders/select.cjs.map +1 -1
  394. package/mysql-core/query-builders/select.d.cts +8 -8
  395. package/mysql-core/query-builders/select.d.ts +8 -8
  396. package/mysql-core/query-builders/select.js +23 -6
  397. package/mysql-core/query-builders/select.js.map +1 -1
  398. package/mysql-core/query-builders/select.types.cjs.map +1 -1
  399. package/mysql-core/query-builders/select.types.d.cts +2 -1
  400. package/mysql-core/query-builders/select.types.d.ts +2 -1
  401. package/mysql-core/query-builders/update.cjs +15 -3
  402. package/mysql-core/query-builders/update.cjs.map +1 -1
  403. package/mysql-core/query-builders/update.js +15 -3
  404. package/mysql-core/query-builders/update.js.map +1 -1
  405. package/mysql-core/session.cjs +43 -4
  406. package/mysql-core/session.cjs.map +1 -1
  407. package/mysql-core/session.d.cts +14 -7
  408. package/mysql-core/session.d.ts +14 -7
  409. package/mysql-core/session.js +43 -4
  410. package/mysql-core/session.js.map +1 -1
  411. package/mysql-proxy/driver.cjs +3 -2
  412. package/mysql-proxy/driver.cjs.map +1 -1
  413. package/mysql-proxy/driver.d.cts +2 -1
  414. package/mysql-proxy/driver.d.ts +2 -1
  415. package/mysql-proxy/driver.js +3 -2
  416. package/mysql-proxy/driver.js.map +1 -1
  417. package/mysql-proxy/session.cjs +8 -8
  418. package/mysql-proxy/session.cjs.map +1 -1
  419. package/mysql-proxy/session.d.cts +5 -6
  420. package/mysql-proxy/session.d.ts +5 -6
  421. package/mysql-proxy/session.js +8 -8
  422. package/mysql-proxy/session.js.map +1 -1
  423. package/mysql2/driver.cjs +11 -4
  424. package/mysql2/driver.cjs.map +1 -1
  425. package/mysql2/driver.d.cts +4 -2
  426. package/mysql2/driver.d.ts +4 -2
  427. package/mysql2/driver.js +11 -4
  428. package/mysql2/driver.js.map +1 -1
  429. package/mysql2/session.cjs +14 -10
  430. package/mysql2/session.cjs.map +1 -1
  431. package/mysql2/session.d.cts +5 -5
  432. package/mysql2/session.d.ts +5 -5
  433. package/mysql2/session.js +14 -10
  434. package/mysql2/session.js.map +1 -1
  435. package/neon-http/driver.cjs +5 -3
  436. package/neon-http/driver.cjs.map +1 -1
  437. package/neon-http/driver.d.cts +6 -4
  438. package/neon-http/driver.d.ts +6 -4
  439. package/neon-http/driver.js +5 -3
  440. package/neon-http/driver.js.map +1 -1
  441. package/neon-http/session.cjs +8 -6
  442. package/neon-http/session.cjs.map +1 -1
  443. package/neon-http/session.d.cts +5 -4
  444. package/neon-http/session.d.ts +5 -4
  445. package/neon-http/session.js +8 -6
  446. package/neon-http/session.js.map +1 -1
  447. package/neon-serverless/driver.cjs +6 -4
  448. package/neon-serverless/driver.cjs.map +1 -1
  449. package/neon-serverless/driver.d.cts +6 -4
  450. package/neon-serverless/driver.d.ts +6 -4
  451. package/neon-serverless/driver.js +6 -4
  452. package/neon-serverless/driver.js.map +1 -1
  453. package/neon-serverless/session.cjs +23 -9
  454. package/neon-serverless/session.cjs.map +1 -1
  455. package/neon-serverless/session.d.cts +5 -4
  456. package/neon-serverless/session.d.ts +5 -4
  457. package/neon-serverless/session.js +23 -9
  458. package/neon-serverless/session.js.map +1 -1
  459. package/node-postgres/driver.cjs +6 -4
  460. package/node-postgres/driver.cjs.map +1 -1
  461. package/node-postgres/driver.d.cts +6 -4
  462. package/node-postgres/driver.d.ts +6 -4
  463. package/node-postgres/driver.js +6 -4
  464. package/node-postgres/driver.js.map +1 -1
  465. package/node-postgres/session.cjs +18 -9
  466. package/node-postgres/session.cjs.map +1 -1
  467. package/node-postgres/session.d.cts +5 -4
  468. package/node-postgres/session.d.ts +5 -4
  469. package/node-postgres/session.js +18 -9
  470. package/node-postgres/session.js.map +1 -1
  471. package/op-sqlite/driver.cjs +3 -2
  472. package/op-sqlite/driver.cjs.map +1 -1
  473. package/op-sqlite/driver.d.cts +2 -1
  474. package/op-sqlite/driver.d.ts +2 -1
  475. package/op-sqlite/driver.js +3 -2
  476. package/op-sqlite/driver.js.map +1 -1
  477. package/op-sqlite/session.cjs +20 -11
  478. package/op-sqlite/session.cjs.map +1 -1
  479. package/op-sqlite/session.d.cts +8 -7
  480. package/op-sqlite/session.d.ts +8 -7
  481. package/op-sqlite/session.js +20 -11
  482. package/op-sqlite/session.js.map +1 -1
  483. package/package.json +351 -5
  484. package/pg-core/columns/common.cjs +2 -0
  485. package/pg-core/columns/common.cjs.map +1 -1
  486. package/pg-core/columns/common.js +2 -0
  487. package/pg-core/columns/common.js.map +1 -1
  488. package/pg-core/db.cjs +5 -3
  489. package/pg-core/db.cjs.map +1 -1
  490. package/pg-core/db.d.cts +3 -1
  491. package/pg-core/db.d.ts +3 -1
  492. package/pg-core/db.js +5 -3
  493. package/pg-core/db.js.map +1 -1
  494. package/pg-core/dialect.cjs +25 -19
  495. package/pg-core/dialect.cjs.map +1 -1
  496. package/pg-core/dialect.d.cts +7 -6
  497. package/pg-core/dialect.d.ts +7 -6
  498. package/pg-core/dialect.js +26 -20
  499. package/pg-core/dialect.js.map +1 -1
  500. package/pg-core/query-builders/delete.cjs +19 -5
  501. package/pg-core/query-builders/delete.cjs.map +1 -1
  502. package/pg-core/query-builders/delete.js +19 -5
  503. package/pg-core/query-builders/delete.js.map +1 -1
  504. package/pg-core/query-builders/insert.cjs +49 -9
  505. package/pg-core/query-builders/insert.cjs.map +1 -1
  506. package/pg-core/query-builders/insert.js +51 -11
  507. package/pg-core/query-builders/insert.js.map +1 -1
  508. package/pg-core/query-builders/query.cjs +15 -2
  509. package/pg-core/query-builders/query.cjs.map +1 -1
  510. package/pg-core/query-builders/query.js +15 -2
  511. package/pg-core/query-builders/query.js.map +1 -1
  512. package/pg-core/query-builders/select.cjs +23 -7
  513. package/pg-core/query-builders/select.cjs.map +1 -1
  514. package/pg-core/query-builders/select.d.cts +9 -9
  515. package/pg-core/query-builders/select.d.ts +9 -9
  516. package/pg-core/query-builders/select.js +23 -7
  517. package/pg-core/query-builders/select.js.map +1 -1
  518. package/pg-core/query-builders/select.types.cjs.map +1 -1
  519. package/pg-core/query-builders/select.types.d.cts +2 -1
  520. package/pg-core/query-builders/select.types.d.ts +2 -1
  521. package/pg-core/query-builders/update.cjs +20 -6
  522. package/pg-core/query-builders/update.cjs.map +1 -1
  523. package/pg-core/query-builders/update.js +20 -6
  524. package/pg-core/query-builders/update.js.map +1 -1
  525. package/pg-core/session.cjs +48 -4
  526. package/pg-core/session.cjs.map +1 -1
  527. package/pg-core/session.d.cts +12 -6
  528. package/pg-core/session.d.ts +12 -6
  529. package/pg-core/session.js +48 -4
  530. package/pg-core/session.js.map +1 -1
  531. package/pg-proxy/driver.cjs +3 -2
  532. package/pg-proxy/driver.cjs.map +1 -1
  533. package/pg-proxy/driver.d.cts +2 -1
  534. package/pg-proxy/driver.d.ts +2 -1
  535. package/pg-proxy/driver.js +3 -2
  536. package/pg-proxy/driver.js.map +1 -1
  537. package/pg-proxy/session.cjs +8 -6
  538. package/pg-proxy/session.cjs.map +1 -1
  539. package/pg-proxy/session.d.cts +5 -4
  540. package/pg-proxy/session.d.ts +5 -4
  541. package/pg-proxy/session.js +8 -6
  542. package/pg-proxy/session.js.map +1 -1
  543. package/pglite/driver.cjs +6 -4
  544. package/pglite/driver.cjs.map +1 -1
  545. package/pglite/driver.d.cts +6 -4
  546. package/pglite/driver.d.ts +6 -4
  547. package/pglite/driver.js +6 -4
  548. package/pglite/driver.js.map +1 -1
  549. package/pglite/session.cjs +19 -9
  550. package/pglite/session.cjs.map +1 -1
  551. package/pglite/session.d.cts +5 -4
  552. package/pglite/session.d.ts +5 -4
  553. package/pglite/session.js +19 -9
  554. package/pglite/session.js.map +1 -1
  555. package/planetscale-serverless/driver.cjs +10 -2
  556. package/planetscale-serverless/driver.cjs.map +1 -1
  557. package/planetscale-serverless/driver.d.cts +4 -3
  558. package/planetscale-serverless/driver.d.ts +4 -3
  559. package/planetscale-serverless/driver.js +10 -2
  560. package/planetscale-serverless/driver.js.map +1 -1
  561. package/planetscale-serverless/session.cjs +23 -13
  562. package/planetscale-serverless/session.cjs.map +1 -1
  563. package/planetscale-serverless/session.d.cts +6 -7
  564. package/planetscale-serverless/session.d.ts +6 -7
  565. package/planetscale-serverless/session.js +23 -13
  566. package/planetscale-serverless/session.js.map +1 -1
  567. package/postgres-js/driver.cjs +3 -2
  568. package/postgres-js/driver.cjs.map +1 -1
  569. package/postgres-js/driver.d.cts +4 -3
  570. package/postgres-js/driver.d.ts +4 -3
  571. package/postgres-js/driver.js +3 -2
  572. package/postgres-js/driver.js.map +1 -1
  573. package/postgres-js/session.cjs +27 -16
  574. package/postgres-js/session.cjs.map +1 -1
  575. package/postgres-js/session.d.cts +6 -5
  576. package/postgres-js/session.d.ts +6 -5
  577. package/postgres-js/session.js +27 -16
  578. package/postgres-js/session.js.map +1 -1
  579. package/prisma/mysql/driver.cjs +3 -3
  580. package/prisma/mysql/driver.cjs.map +1 -1
  581. package/prisma/mysql/driver.d.cts +3 -2
  582. package/prisma/mysql/driver.d.ts +3 -2
  583. package/prisma/mysql/driver.js +3 -3
  584. package/prisma/mysql/driver.js.map +1 -1
  585. package/prisma/mysql/session.cjs +10 -11
  586. package/prisma/mysql/session.cjs.map +1 -1
  587. package/prisma/mysql/session.d.cts +10 -5
  588. package/prisma/mysql/session.d.ts +10 -5
  589. package/prisma/mysql/session.js +10 -11
  590. package/prisma/mysql/session.js.map +1 -1
  591. package/prisma/pg/driver.cjs +3 -3
  592. package/prisma/pg/driver.cjs.map +1 -1
  593. package/prisma/pg/driver.d.cts +2 -1
  594. package/prisma/pg/driver.d.ts +2 -1
  595. package/prisma/pg/driver.js +3 -3
  596. package/prisma/pg/driver.js.map +1 -1
  597. package/prisma/pg/session.cjs +7 -7
  598. package/prisma/pg/session.cjs.map +1 -1
  599. package/prisma/pg/session.d.cts +10 -5
  600. package/prisma/pg/session.d.ts +10 -5
  601. package/prisma/pg/session.js +7 -7
  602. package/prisma/pg/session.js.map +1 -1
  603. package/prisma/sqlite/driver.cjs +7 -1
  604. package/prisma/sqlite/driver.cjs.map +1 -1
  605. package/prisma/sqlite/driver.d.cts +2 -1
  606. package/prisma/sqlite/driver.d.ts +2 -1
  607. package/prisma/sqlite/driver.js +7 -1
  608. package/prisma/sqlite/driver.js.map +1 -1
  609. package/prisma/sqlite/session.cjs +10 -10
  610. package/prisma/sqlite/session.cjs.map +1 -1
  611. package/prisma/sqlite/session.d.cts +12 -7
  612. package/prisma/sqlite/session.d.ts +12 -7
  613. package/prisma/sqlite/session.js +10 -10
  614. package/prisma/sqlite/session.js.map +1 -1
  615. package/singlestore/driver.cjs +34 -25
  616. package/singlestore/driver.cjs.map +1 -1
  617. package/singlestore/driver.d.cts +4 -2
  618. package/singlestore/driver.d.ts +4 -2
  619. package/singlestore/driver.js +34 -25
  620. package/singlestore/driver.js.map +1 -1
  621. package/singlestore/session.cjs +14 -10
  622. package/singlestore/session.cjs.map +1 -1
  623. package/singlestore/session.d.cts +5 -5
  624. package/singlestore/session.d.ts +5 -5
  625. package/singlestore/session.js +14 -10
  626. package/singlestore/session.js.map +1 -1
  627. package/singlestore-core/db.cjs +5 -3
  628. package/singlestore-core/db.cjs.map +1 -1
  629. package/singlestore-core/db.d.cts +3 -1
  630. package/singlestore-core/db.d.ts +3 -1
  631. package/singlestore-core/db.js +5 -3
  632. package/singlestore-core/db.js.map +1 -1
  633. package/singlestore-core/dialect.cjs +24 -18
  634. package/singlestore-core/dialect.cjs.map +1 -1
  635. package/singlestore-core/dialect.d.cts +7 -6
  636. package/singlestore-core/dialect.d.ts +7 -6
  637. package/singlestore-core/dialect.js +25 -19
  638. package/singlestore-core/dialect.js.map +1 -1
  639. package/singlestore-core/query-builders/delete.cjs +8 -1
  640. package/singlestore-core/query-builders/delete.cjs.map +1 -1
  641. package/singlestore-core/query-builders/delete.js +8 -1
  642. package/singlestore-core/query-builders/delete.js.map +1 -1
  643. package/singlestore-core/query-builders/insert.cjs +30 -5
  644. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  645. package/singlestore-core/query-builders/insert.js +32 -7
  646. package/singlestore-core/query-builders/insert.js.map +1 -1
  647. package/singlestore-core/query-builders/query.cjs +17 -2
  648. package/singlestore-core/query-builders/query.cjs.map +1 -1
  649. package/singlestore-core/query-builders/query.js +17 -2
  650. package/singlestore-core/query-builders/query.js.map +1 -1
  651. package/singlestore-core/query-builders/select.cjs +24 -7
  652. package/singlestore-core/query-builders/select.cjs.map +1 -1
  653. package/singlestore-core/query-builders/select.d.cts +9 -9
  654. package/singlestore-core/query-builders/select.d.ts +9 -9
  655. package/singlestore-core/query-builders/select.js +24 -7
  656. package/singlestore-core/query-builders/select.js.map +1 -1
  657. package/singlestore-core/query-builders/select.types.cjs.map +1 -1
  658. package/singlestore-core/query-builders/select.types.d.cts +2 -1
  659. package/singlestore-core/query-builders/select.types.d.ts +2 -1
  660. package/singlestore-core/query-builders/update.cjs +9 -2
  661. package/singlestore-core/query-builders/update.cjs.map +1 -1
  662. package/singlestore-core/query-builders/update.js +9 -2
  663. package/singlestore-core/query-builders/update.js.map +1 -1
  664. package/singlestore-core/session.cjs +43 -4
  665. package/singlestore-core/session.cjs.map +1 -1
  666. package/singlestore-core/session.d.cts +14 -6
  667. package/singlestore-core/session.d.ts +14 -6
  668. package/singlestore-core/session.js +43 -4
  669. package/singlestore-core/session.js.map +1 -1
  670. package/singlestore-proxy/driver.cjs +3 -2
  671. package/singlestore-proxy/driver.cjs.map +1 -1
  672. package/singlestore-proxy/driver.d.cts +2 -1
  673. package/singlestore-proxy/driver.d.ts +2 -1
  674. package/singlestore-proxy/driver.js +3 -2
  675. package/singlestore-proxy/driver.js.map +1 -1
  676. package/singlestore-proxy/session.cjs +8 -8
  677. package/singlestore-proxy/session.cjs.map +1 -1
  678. package/singlestore-proxy/session.d.cts +9 -6
  679. package/singlestore-proxy/session.d.ts +9 -6
  680. package/singlestore-proxy/session.js +8 -8
  681. package/singlestore-proxy/session.js.map +1 -1
  682. package/sql/sql.cjs +24 -2
  683. package/sql/sql.cjs.map +1 -1
  684. package/sql/sql.d.cts +12 -0
  685. package/sql/sql.d.ts +12 -0
  686. package/sql/sql.js +23 -2
  687. package/sql/sql.js.map +1 -1
  688. package/sql-js/driver.cjs.map +1 -1
  689. package/sql-js/driver.d.cts +2 -1
  690. package/sql-js/driver.d.ts +2 -1
  691. package/sql-js/driver.js.map +1 -1
  692. package/sql-js/session.cjs +4 -4
  693. package/sql-js/session.cjs.map +1 -1
  694. package/sql-js/session.d.cts +4 -4
  695. package/sql-js/session.d.ts +4 -4
  696. package/sql-js/session.js +4 -4
  697. package/sql-js/session.js.map +1 -1
  698. package/sqlite-core/db.cjs +5 -3
  699. package/sqlite-core/db.cjs.map +1 -1
  700. package/sqlite-core/db.d.cts +3 -1
  701. package/sqlite-core/db.d.ts +3 -1
  702. package/sqlite-core/db.js +5 -3
  703. package/sqlite-core/db.js.map +1 -1
  704. package/sqlite-core/dialect.cjs +29 -19
  705. package/sqlite-core/dialect.cjs.map +1 -1
  706. package/sqlite-core/dialect.d.cts +7 -6
  707. package/sqlite-core/dialect.d.ts +7 -6
  708. package/sqlite-core/dialect.js +30 -20
  709. package/sqlite-core/dialect.js.map +1 -1
  710. package/sqlite-core/query-builders/delete.cjs +8 -1
  711. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  712. package/sqlite-core/query-builders/delete.js +8 -1
  713. package/sqlite-core/query-builders/delete.js.map +1 -1
  714. package/sqlite-core/query-builders/insert.cjs +28 -4
  715. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  716. package/sqlite-core/query-builders/insert.js +35 -6
  717. package/sqlite-core/query-builders/insert.js.map +1 -1
  718. package/sqlite-core/query-builders/query.cjs +15 -2
  719. package/sqlite-core/query-builders/query.cjs.map +1 -1
  720. package/sqlite-core/query-builders/query.js +15 -2
  721. package/sqlite-core/query-builders/query.js.map +1 -1
  722. package/sqlite-core/query-builders/select.cjs +15 -6
  723. package/sqlite-core/query-builders/select.cjs.map +1 -1
  724. package/sqlite-core/query-builders/select.d.cts +6 -6
  725. package/sqlite-core/query-builders/select.d.ts +6 -6
  726. package/sqlite-core/query-builders/select.js +15 -6
  727. package/sqlite-core/query-builders/select.js.map +1 -1
  728. package/sqlite-core/query-builders/select.types.cjs.map +1 -1
  729. package/sqlite-core/query-builders/select.types.d.cts +2 -1
  730. package/sqlite-core/query-builders/select.types.d.ts +2 -1
  731. package/sqlite-core/query-builders/update.cjs +9 -2
  732. package/sqlite-core/query-builders/update.cjs.map +1 -1
  733. package/sqlite-core/query-builders/update.js +9 -2
  734. package/sqlite-core/query-builders/update.js.map +1 -1
  735. package/sqlite-core/session.cjs +81 -6
  736. package/sqlite-core/session.cjs.map +1 -1
  737. package/sqlite-core/session.d.cts +19 -9
  738. package/sqlite-core/session.d.ts +19 -9
  739. package/sqlite-core/session.js +81 -6
  740. package/sqlite-core/session.js.map +1 -1
  741. package/sqlite-proxy/driver.cjs +4 -3
  742. package/sqlite-proxy/driver.cjs.map +1 -1
  743. package/sqlite-proxy/driver.d.cts +3 -2
  744. package/sqlite-proxy/driver.d.ts +3 -2
  745. package/sqlite-proxy/driver.js +4 -3
  746. package/sqlite-proxy/driver.js.map +1 -1
  747. package/sqlite-proxy/session.cjs +20 -11
  748. package/sqlite-proxy/session.cjs.map +1 -1
  749. package/sqlite-proxy/session.d.cts +8 -7
  750. package/sqlite-proxy/session.d.ts +8 -7
  751. package/sqlite-proxy/session.js +20 -11
  752. package/sqlite-proxy/session.js.map +1 -1
  753. package/tidb-serverless/driver.cjs +16 -2
  754. package/tidb-serverless/driver.cjs.map +1 -1
  755. package/tidb-serverless/driver.d.cts +4 -3
  756. package/tidb-serverless/driver.d.ts +4 -3
  757. package/tidb-serverless/driver.js +16 -2
  758. package/tidb-serverless/driver.js.map +1 -1
  759. package/tidb-serverless/session.cjs +23 -13
  760. package/tidb-serverless/session.cjs.map +1 -1
  761. package/tidb-serverless/session.d.cts +6 -7
  762. package/tidb-serverless/session.d.ts +6 -7
  763. package/tidb-serverless/session.js +23 -13
  764. package/tidb-serverless/session.js.map +1 -1
  765. package/tracing.cjs.map +1 -1
  766. package/tracing.js.map +1 -1
  767. package/utils.cjs +38 -2
  768. package/utils.cjs.map +1 -1
  769. package/utils.d.cts +6 -2
  770. package/utils.d.ts +6 -2
  771. package/utils.js +39 -4
  772. package/utils.js.map +1 -1
  773. package/vercel-postgres/driver.cjs +10 -5
  774. package/vercel-postgres/driver.cjs.map +1 -1
  775. package/vercel-postgres/driver.d.cts +6 -4
  776. package/vercel-postgres/driver.d.ts +6 -4
  777. package/vercel-postgres/driver.js +10 -5
  778. package/vercel-postgres/driver.js.map +1 -1
  779. package/vercel-postgres/session.cjs +18 -9
  780. package/vercel-postgres/session.cjs.map +1 -1
  781. package/vercel-postgres/session.d.cts +5 -4
  782. package/vercel-postgres/session.d.ts +5 -4
  783. package/vercel-postgres/session.js +18 -9
  784. package/vercel-postgres/session.js.map +1 -1
  785. package/version.cjs +1 -1
  786. package/version.d.cts +1 -1
  787. package/version.d.ts +1 -1
  788. package/version.js +1 -1
  789. package/xata-http/driver.cjs +7 -4
  790. package/xata-http/driver.cjs.map +1 -1
  791. package/xata-http/driver.d.cts +4 -2
  792. package/xata-http/driver.d.ts +4 -2
  793. package/xata-http/driver.js +7 -4
  794. package/xata-http/driver.js.map +1 -1
  795. package/xata-http/session.cjs +8 -6
  796. package/xata-http/session.cjs.map +1 -1
  797. package/xata-http/session.d.cts +5 -4
  798. package/xata-http/session.d.ts +5 -4
  799. package/xata-http/session.js +8 -6
  800. package/xata-http/session.js.map +1 -1
@@ -1,6 +1,7 @@
1
1
  import type { Config } from '@planetscale/database';
2
2
  import { Client } from '@planetscale/database';
3
3
  import { entityKind } from "../entity.js";
4
+ import type { DrizzleMySqlExtension } from "../extension-core/mysql/index.js";
4
5
  import type { Logger } from "../logger.js";
5
6
  import { MySqlDatabase } from "../mysql-core/db.js";
6
7
  import { type DrizzleConfig } from "../utils.js";
@@ -16,9 +17,9 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
16
17
  TClient | string
17
18
  ] | [
18
19
  TClient | string,
19
- DrizzleConfig<TSchema>
20
+ DrizzleConfig<TSchema, DrizzleMySqlExtension>
20
21
  ] | [
21
- (DrizzleConfig<TSchema> & ({
22
+ (DrizzleConfig<TSchema, DrizzleMySqlExtension> & ({
22
23
  connection: string | Config;
23
24
  } | {
24
25
  client: TClient;
@@ -27,7 +28,7 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
27
28
  $client: TClient;
28
29
  };
29
30
  export declare namespace drizzle {
30
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PlanetScaleDatabase<TSchema> & {
31
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema, DrizzleMySqlExtension>): PlanetScaleDatabase<TSchema> & {
31
32
  $client: '$client is not available on drizzle.mock()';
32
33
  };
33
34
  }
@@ -46,8 +46,16 @@ const db = drizzle(client);
46
46
  tableNamesMap: tablesConfig.tableNamesMap
47
47
  };
48
48
  }
49
- const session = new PlanetscaleSession(client, dialect, void 0, schema, { logger, cache: config.cache });
50
- const db = new PlanetScaleDatabase(dialect, session, schema, "planetscale");
49
+ const extensions = config.extensions;
50
+ const session = new PlanetscaleSession(
51
+ client,
52
+ dialect,
53
+ void 0,
54
+ schema,
55
+ { logger, cache: config.cache },
56
+ extensions
57
+ );
58
+ const db = new PlanetScaleDatabase(dialect, session, schema, "planetscale", extensions);
51
59
  db.$client = client;
52
60
  db.$cache = config.cache;
53
61
  if (db.$cache) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config } from '@planetscale/database';\nimport { Client } from '@planetscale/database';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-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 { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// Client is not Drizzle Object, so we can ignore this rule here\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (!(client instanceof Client)) {\n\t\tthrow new Error(`Warning: You need to pass an instance of Client:\n\nimport { Client } from \"@planetscale/database\";\n\nconst client = new Client({\n host: process.env[\"DATABASE_HOST\"],\n username: process.env[\"DATABASE_USERNAME\"],\n password: process.env[\"DATABASE_PASSWORD\"],\n});\n\nconst db = drizzle(client);\n\t\t`);\n\t}\n\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new PlanetscaleSession(client, dialect, undefined, schema, { logger, cache: config.cache });\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\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 | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Client({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config | string; client?: TClient }\n\t\t\t& DrizzleConfig;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Client({\n\t\t\t\turl: connection,\n\t\t\t})\n\t\t\t: new Client(\n\t\t\t\tconnection!,\n\t\t\t);\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): PlanetScaleDatabase<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":"AACA,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAA6B,gBAAgB;AAE7C,SAAS,0BAA0B;AAO5B,MAAM,4BAEH,cAA+E;AAAA,EACxF,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AAGD,MAAI,EAAE,kBAAkB,SAAS;AAChC,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWf;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,aAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,mBAAmB,QAAQ,SAAS,QAAW,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,CAAC;AAC1G,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,aAAa;AACjF,EAAO,GAAI,UAAU;AACrB,EAAO,GAAI,SAAS,OAAO;AAC3B,MAAW,GAAI,QAAQ;AACtB,IAAO,GAAI,OAAO,YAAY,IAAI,OAAO,OAAO;AAAA,EACjD;AAEA,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,OAAO;AAAA,MAC3B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,OAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,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/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config } from '@planetscale/database';\nimport { Client } from '@planetscale/database';\nimport { entityKind } from '~/entity.ts';\nimport type { DrizzleMySqlExtension } from '~/extension-core/mysql/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-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 { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema, DrizzleMySqlExtension> = {},\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// Client is not Drizzle Object, so we can ignore this rule here\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (!(client instanceof Client)) {\n\t\tthrow new Error(`Warning: You need to pass an instance of Client:\n\nimport { Client } from \"@planetscale/database\";\n\nconst client = new Client({\n host: process.env[\"DATABASE_HOST\"],\n username: process.env[\"DATABASE_USERNAME\"],\n password: process.env[\"DATABASE_PASSWORD\"],\n});\n\nconst db = drizzle(client);\n\t\t`);\n\t}\n\n\tconst dialect = new MySqlDialect({ 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 session = new PlanetscaleSession(\n\t\tclient,\n\t\tdialect,\n\t\tundefined,\n\t\tschema,\n\t\t{ logger, cache: config.cache },\n\t\textensions,\n\t);\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale', extensions) as PlanetScaleDatabase<\n\t\tTSchema\n\t>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, DrizzleMySqlExtension>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, DrizzleMySqlExtension>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Client({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config | string; client?: TClient }\n\t\t\t& DrizzleConfig;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Client({\n\t\t\t\turl: connection,\n\t\t\t})\n\t\t\t: new Client(\n\t\t\t\tconnection!,\n\t\t\t);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, DrizzleMySqlExtension> | 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, DrizzleMySqlExtension>,\n\t): PlanetScaleDatabase<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":"AACA,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAG3B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAA6B,gBAAgB;AAE7C,SAAS,0BAA0B;AAO5B,MAAM,4BAEH,cAA+E;AAAA,EACxF,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAwD,CAAC,GAGxD;AAGD,MAAI,EAAE,kBAAkB,SAAS;AAChC,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWf;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,aAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,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,UAAU,IAAI;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,QAAQ,OAAO,OAAO,MAAM;AAAA,IAC9B;AAAA,EACD;AACA,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,eAAe,UAAU;AAG7F,EAAO,GAAI,UAAU;AACrB,EAAO,GAAI,SAAS,OAAO;AAC3B,MAAW,GAAI,QAAQ;AACtB,IAAO,GAAI,OAAO,YAAY,IAAI,OAAO,OAAO;AAAA,EACjD;AAEA,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,OAAO;AAAA,MAC3B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,OAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAA8D;AAC9G;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
@@ -31,11 +31,9 @@ var import_session = require("../mysql-core/session.cjs");
31
31
  var import_sql = require("../sql/sql.cjs");
32
32
  var import_utils = require("../utils.cjs");
33
33
  class PlanetScalePreparedQuery extends import_session.MySqlPreparedQuery {
34
- constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, customResultMapper, generatedIds, returningIds) {
35
- super(cache, queryMetadata, cacheConfig);
34
+ constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, extensions, hookContext, customResultMapper, generatedIds, returningIds) {
35
+ super(queryString, params, cache, queryMetadata, cacheConfig, extensions, hookContext);
36
36
  this.client = client;
37
- this.queryString = queryString;
38
- this.params = params;
39
37
  this.logger = logger;
40
38
  this.fields = fields;
41
39
  this.customResultMapper = customResultMapper;
@@ -45,7 +43,7 @@ class PlanetScalePreparedQuery extends import_session.MySqlPreparedQuery {
45
43
  static [import_entity.entityKind] = "PlanetScalePreparedQuery";
46
44
  rawQuery = { as: "object" };
47
45
  query = { as: "array" };
48
- async execute(placeholderValues = {}) {
46
+ async _execute(placeholderValues = {}) {
49
47
  const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
50
48
  this.logger.logQuery(this.queryString, params);
51
49
  const {
@@ -99,8 +97,8 @@ class PlanetScalePreparedQuery extends import_session.MySqlPreparedQuery {
99
97
  }
100
98
  }
101
99
  class PlanetscaleSession extends import_session.MySqlSession {
102
- constructor(baseClient, dialect, tx, schema, options = {}) {
103
- super(dialect);
100
+ constructor(baseClient, dialect, tx, schema, options = {}, extensions) {
101
+ super(dialect, extensions);
104
102
  this.baseClient = baseClient;
105
103
  this.schema = schema;
106
104
  this.options = options;
@@ -112,7 +110,7 @@ class PlanetscaleSession extends import_session.MySqlSession {
112
110
  logger;
113
111
  client;
114
112
  cache;
115
- prepareQuery(query, fields, customResultMapper, generatedIds, returningIds, queryMetadata, cacheConfig) {
113
+ prepareQuery(query, fields, customResultMapper, generatedIds, returningIds, queryMetadata, cacheConfig, hookContext) {
116
114
  return new PlanetScalePreparedQuery(
117
115
  this.client,
118
116
  query.sql,
@@ -122,6 +120,8 @@ class PlanetscaleSession extends import_session.MySqlSession {
122
120
  queryMetadata,
123
121
  cacheConfig,
124
122
  fields,
123
+ this.extensions,
124
+ hookContext,
125
125
  customResultMapper,
126
126
  generatedIds,
127
127
  returningIds
@@ -147,11 +147,20 @@ class PlanetscaleSession extends import_session.MySqlSession {
147
147
  }
148
148
  transaction(transaction) {
149
149
  return this.baseClient.transaction((pstx) => {
150
- const session = new PlanetscaleSession(this.baseClient, this.dialect, pstx, this.schema, this.options);
150
+ const session = new PlanetscaleSession(
151
+ this.baseClient,
152
+ this.dialect,
153
+ pstx,
154
+ this.schema,
155
+ this.options,
156
+ this.extensions
157
+ );
151
158
  const tx = new PlanetScaleTransaction(
152
159
  this.dialect,
153
160
  session,
154
- this.schema
161
+ this.schema,
162
+ void 0,
163
+ this.extensions
155
164
  );
156
165
  return transaction(tx);
157
166
  });
@@ -159,8 +168,8 @@ class PlanetscaleSession extends import_session.MySqlSession {
159
168
  }
160
169
  class PlanetScaleTransaction extends import_session.MySqlTransaction {
161
170
  static [import_entity.entityKind] = "PlanetScaleTransaction";
162
- constructor(dialect, session, schema, nestedIndex = 0) {
163
- super(dialect, session, schema, nestedIndex, "planetscale");
171
+ constructor(dialect, session, schema, nestedIndex = 0, extensions) {
172
+ super(dialect, session, schema, nestedIndex, "planetscale", extensions);
164
173
  }
165
174
  async transaction(transaction) {
166
175
  const savepointName = `sp${this.nestedIndex + 1}`;
@@ -168,7 +177,8 @@ class PlanetScaleTransaction extends import_session.MySqlTransaction {
168
177
  this.dialect,
169
178
  this.session,
170
179
  this.schema,
171
- this.nestedIndex + 1
180
+ this.nestedIndex + 1,
181
+ this._.extensions
172
182
  );
173
183
  await tx.execute(import_sql.sql.raw(`savepoint ${savepointName}`));
174
184
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/session.ts"],"sourcesContent":["import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscale/database';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/mysql-core/query-builders/select.types.ts';\nimport {\n\tMySqlPreparedQuery,\n\ttype MySqlPreparedQueryConfig,\n\ttype MySqlPreparedQueryHKT,\n\ttype MySqlQueryResultHKT,\n\tMySqlSession,\n\tMySqlTransaction,\n} from '~/mysql-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 class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PlanetScalePreparedQuery';\n\n\tprivate rawQuery = { as: 'object' } as const;\n\tprivate query = { as: 'array' } as const;\n\n\tconstructor(\n\t\tprivate client: Client | Transaction | Connection,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\t// Keys that were used in $default and the value that was generated for them\n\t\tprivate generatedIds?: Record<string, unknown>[],\n\t\t// Keys that should be returned, it has the column with all properries + key from object\n\t\tprivate returningIds?: SelectedFieldsOrdered,\n\t) {\n\t\tsuper(cache, queryMetadata, cacheConfig);\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.queryString, params);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\tclient,\n\t\t\tqueryString,\n\t\t\trawQuery,\n\t\t\tquery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tcustomResultMapper,\n\t\t\treturningIds,\n\t\t\tgeneratedIds,\n\t\t} = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst res = await this.queryWithCache(queryString, params, async () => {\n\t\t\t\treturn await client.execute(queryString, params, rawQuery);\n\t\t\t});\n\n\t\t\tconst insertId = Number.parseFloat(res.insertId);\n\t\t\tconst affectedRows = res.rowsAffected;\n\n\t\t\t// for each row, I need to check keys from\n\t\t\tif (returningIds) {\n\t\t\t\tconst returningResponse = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tfor (let i = insertId; i < insertId + affectedRows; i++) {\n\t\t\t\t\tfor (const column of returningIds) {\n\t\t\t\t\t\tconst key = returningIds[0]!.path[0]!;\n\t\t\t\t\t\tif (is(column.field, Column)) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (column.field.primary && column.field.autoIncrement) {\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (column.field.defaultFn && generatedIds) {\n\t\t\t\t\t\t\t\t// generatedIds[rowIdx][key]\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: generatedIds[j]![key] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn returningResponse;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tconst { rows } = await this.queryWithCache(queryString, params, async () => {\n\t\t\treturn await client.execute(queryString, params, query);\n\t\t});\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n\t}\n\n\toverride iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']> {\n\t\tthrow new Error('Streaming is not supported by the PlanetScale Serverless driver');\n\t}\n}\n\nexport interface PlanetscaleSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class PlanetscaleSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetscaleSession';\n\n\tprivate logger: Logger;\n\tprivate client: Client | Transaction | Connection;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate baseClient: Client | Connection,\n\t\tdialect: MySqlDialect,\n\t\ttx: Transaction | undefined,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PlanetscaleSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.client = tx ?? baseClient;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): MySqlPreparedQuery<T> {\n\t\treturn new PlanetScalePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tcustomResultMapper,\n\t\t\tgeneratedIds,\n\t\t\treturningIds,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<ExecutedQuery> {\n\t\tthis.logger.logQuery(query, params);\n\n\t\treturn await this.client.execute(query, params, { as: 'array' });\n\t}\n\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<ExecutedQuery> {\n\t\treturn this.client.execute(query, params, { as: 'object' });\n\t}\n\n\toverride all<T = unknown>(query: SQL): Promise<T[]> {\n\t\tconst querySql = this.dialect.sqlToQuery(query);\n\t\tthis.logger.logQuery(querySql.sql, querySql.params);\n\n\t\treturn this.client.execute<T>(querySql.sql, querySql.params, { as: 'object' }).then((\n\t\t\teQuery,\n\t\t) => eQuery.rows);\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 transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn this.baseClient.transaction((pstx) => {\n\t\t\tconst session = new PlanetscaleSession(this.baseClient, this.dialect, pstx, this.schema, this.options);\n\t\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession as MySqlSession<any, any, any, any>,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t});\n\t}\n}\n\nexport class PlanetScaleTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex, 'planetscale');\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PlanetScaleTransaction<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);\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 (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {\n\ttype: ExecutedQuery;\n}\n\nexport interface PlanetScalePreparedQueryHKT extends MySqlPreparedQueryHKT {\n\ttype: PlanetScalePreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"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","names":["sql"]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/session.ts"],"sourcesContent":["import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscale/database';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { BlankMySqlHookContext, DrizzleMySqlExtension } from '~/extension-core/mysql/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/mysql-core/query-builders/select.types.ts';\nimport {\n\tMySqlPreparedQuery,\n\ttype MySqlPreparedQueryConfig,\n\ttype MySqlPreparedQueryHKT,\n\ttype MySqlQueryResultHKT,\n\tMySqlSession,\n\tMySqlTransaction,\n} from '~/mysql-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 class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PlanetScalePreparedQuery';\n\n\tprivate rawQuery = { as: 'object' } as const;\n\tprivate query = { as: 'array' } as const;\n\n\tconstructor(\n\t\tprivate client: Client | Transaction | Connection,\n\t\tqueryString: string,\n\t\tparams: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\textensions?: DrizzleMySqlExtension[],\n\t\thookContext?: BlankMySqlHookContext,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\t// Keys that were used in $default and the value that was generated for them\n\t\tprivate generatedIds?: Record<string, unknown>[],\n\t\t// Keys that should be returned, it has the column with all properries + key from object\n\t\tprivate returningIds?: SelectedFieldsOrdered,\n\t) {\n\t\tsuper(queryString, params, cache, queryMetadata, cacheConfig, extensions, hookContext);\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.queryString, params);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\tclient,\n\t\t\tqueryString,\n\t\t\trawQuery,\n\t\t\tquery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tcustomResultMapper,\n\t\t\treturningIds,\n\t\t\tgeneratedIds,\n\t\t} = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst res = await this.queryWithCache(queryString, params, async () => {\n\t\t\t\treturn await client.execute(queryString, params, rawQuery);\n\t\t\t});\n\n\t\t\tconst insertId = Number.parseFloat(res.insertId);\n\t\t\tconst affectedRows = res.rowsAffected;\n\n\t\t\t// for each row, I need to check keys from\n\t\t\tif (returningIds) {\n\t\t\t\tconst returningResponse = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tfor (let i = insertId; i < insertId + affectedRows; i++) {\n\t\t\t\t\tfor (const column of returningIds) {\n\t\t\t\t\t\tconst key = returningIds[0]!.path[0]!;\n\t\t\t\t\t\tif (is(column.field, Column)) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (column.field.primary && column.field.autoIncrement) {\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (column.field.defaultFn && generatedIds) {\n\t\t\t\t\t\t\t\t// generatedIds[rowIdx][key]\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: generatedIds[j]![key] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn returningResponse;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tconst { rows } = await this.queryWithCache(queryString, params, async () => {\n\t\t\treturn await client.execute(queryString, params, query);\n\t\t});\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n\t}\n\n\toverride iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']> {\n\t\tthrow new Error('Streaming is not supported by the PlanetScale Serverless driver');\n\t}\n}\n\nexport interface PlanetscaleSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class PlanetscaleSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetscaleSession';\n\n\tprivate logger: Logger;\n\tprivate client: Client | Transaction | Connection;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate baseClient: Client | Connection,\n\t\tdialect: MySqlDialect,\n\t\ttx: Transaction | undefined,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PlanetscaleSessionOptions = {},\n\t\textensions?: DrizzleMySqlExtension[],\n\t) {\n\t\tsuper(dialect, extensions);\n\t\tthis.client = tx ?? baseClient;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t\thookContext?: BlankMySqlHookContext,\n\t): MySqlPreparedQuery<T> {\n\t\treturn new PlanetScalePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tthis.extensions,\n\t\t\thookContext,\n\t\t\tcustomResultMapper,\n\t\t\tgeneratedIds,\n\t\t\treturningIds,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<ExecutedQuery> {\n\t\tthis.logger.logQuery(query, params);\n\n\t\treturn await this.client.execute(query, params, { as: 'array' });\n\t}\n\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<ExecutedQuery> {\n\t\treturn this.client.execute(query, params, { as: 'object' });\n\t}\n\n\toverride all<T = unknown>(query: SQL): Promise<T[]> {\n\t\tconst querySql = this.dialect.sqlToQuery(query);\n\t\tthis.logger.logQuery(querySql.sql, querySql.params);\n\n\t\treturn this.client.execute<T>(querySql.sql, querySql.params, { as: 'object' }).then((\n\t\t\teQuery,\n\t\t) => eQuery.rows);\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 transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn this.baseClient.transaction((pstx) => {\n\t\t\tconst session = new PlanetscaleSession(\n\t\t\t\tthis.baseClient,\n\t\t\t\tthis.dialect,\n\t\t\t\tpstx,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t\tthis.extensions,\n\t\t\t);\n\t\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession as MySqlSession<any, any, any, any>,\n\t\t\t\tthis.schema,\n\t\t\t\tundefined,\n\t\t\t\tthis.extensions,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t});\n\t}\n}\n\nexport class PlanetScaleTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t\textensions?: DrizzleMySqlExtension[],\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex, 'planetscale', extensions);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PlanetScaleTransaction<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 (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {\n\ttype: ExecutedQuery;\n}\n\nexport interface PlanetScalePreparedQueryHKT extends MySqlPreparedQueryHKT {\n\ttype: PlanetScalePreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"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","names":["sql"]}
@@ -2,6 +2,7 @@ import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscal
2
2
  import { type Cache } from "../cache/core/index.cjs";
3
3
  import type { WithCacheConfig } from "../cache/core/types.cjs";
4
4
  import { entityKind } from "../entity.cjs";
5
+ import type { BlankMySqlHookContext, DrizzleMySqlExtension } from "../extension-core/mysql/index.cjs";
5
6
  import type { Logger } from "../logger.cjs";
6
7
  import type { MySqlDialect } from "../mysql-core/dialect.cjs";
7
8
  import type { SelectedFieldsOrdered } from "../mysql-core/query-builders/select.types.cjs";
@@ -11,8 +12,6 @@ import { type Query, type SQL } from "../sql/sql.cjs";
11
12
  import { type Assume } from "../utils.cjs";
12
13
  export declare class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {
13
14
  private client;
14
- private queryString;
15
- private params;
16
15
  private logger;
17
16
  private fields;
18
17
  private customResultMapper?;
@@ -24,8 +23,8 @@ export declare class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig
24
23
  constructor(client: Client | Transaction | Connection, queryString: string, params: unknown[], logger: Logger, cache: Cache, queryMetadata: {
25
24
  type: 'select' | 'update' | 'delete' | 'insert';
26
25
  tables: string[];
27
- } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined, generatedIds?: Record<string, unknown>[] | undefined, returningIds?: SelectedFieldsOrdered | undefined);
28
- execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
26
+ } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, extensions?: DrizzleMySqlExtension[], hookContext?: BlankMySqlHookContext, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined, generatedIds?: Record<string, unknown>[] | undefined, returningIds?: SelectedFieldsOrdered | undefined);
27
+ _execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
29
28
  iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
30
29
  }
31
30
  export interface PlanetscaleSessionOptions {
@@ -40,11 +39,11 @@ export declare class PlanetscaleSession<TFullSchema extends Record<string, unkno
40
39
  private logger;
41
40
  private client;
42
41
  private cache;
43
- constructor(baseClient: Client | Connection, dialect: MySqlDialect, tx: Transaction | undefined, schema: RelationalSchemaConfig<TSchema> | undefined, options?: PlanetscaleSessionOptions);
42
+ constructor(baseClient: Client | Connection, dialect: MySqlDialect, tx: Transaction | undefined, schema: RelationalSchemaConfig<TSchema> | undefined, options?: PlanetscaleSessionOptions, extensions?: DrizzleMySqlExtension[]);
44
43
  prepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered, queryMetadata?: {
45
44
  type: 'select' | 'update' | 'delete' | 'insert';
46
45
  tables: string[];
47
- }, cacheConfig?: WithCacheConfig): MySqlPreparedQuery<T>;
46
+ }, cacheConfig?: WithCacheConfig, hookContext?: BlankMySqlHookContext): MySqlPreparedQuery<T>;
48
47
  query(query: string, params: unknown[]): Promise<ExecutedQuery>;
49
48
  queryObjects(query: string, params: unknown[]): Promise<ExecutedQuery>;
50
49
  all<T = unknown>(query: SQL): Promise<T[]>;
@@ -53,7 +52,7 @@ export declare class PlanetscaleSession<TFullSchema extends Record<string, unkno
53
52
  }
54
53
  export declare class PlanetScaleTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {
55
54
  static readonly [entityKind]: string;
56
- constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number);
55
+ constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number, extensions?: DrizzleMySqlExtension[]);
57
56
  transaction<T>(transaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
58
57
  }
59
58
  export interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {
@@ -2,6 +2,7 @@ import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscal
2
2
  import { type Cache } from "../cache/core/index.js";
3
3
  import type { WithCacheConfig } from "../cache/core/types.js";
4
4
  import { entityKind } from "../entity.js";
5
+ import type { BlankMySqlHookContext, DrizzleMySqlExtension } from "../extension-core/mysql/index.js";
5
6
  import type { Logger } from "../logger.js";
6
7
  import type { MySqlDialect } from "../mysql-core/dialect.js";
7
8
  import type { SelectedFieldsOrdered } from "../mysql-core/query-builders/select.types.js";
@@ -11,8 +12,6 @@ import { type Query, type SQL } from "../sql/sql.js";
11
12
  import { type Assume } from "../utils.js";
12
13
  export declare class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {
13
14
  private client;
14
- private queryString;
15
- private params;
16
15
  private logger;
17
16
  private fields;
18
17
  private customResultMapper?;
@@ -24,8 +23,8 @@ export declare class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig
24
23
  constructor(client: Client | Transaction | Connection, queryString: string, params: unknown[], logger: Logger, cache: Cache, queryMetadata: {
25
24
  type: 'select' | 'update' | 'delete' | 'insert';
26
25
  tables: string[];
27
- } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined, generatedIds?: Record<string, unknown>[] | undefined, returningIds?: SelectedFieldsOrdered | undefined);
28
- execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
26
+ } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, extensions?: DrizzleMySqlExtension[], hookContext?: BlankMySqlHookContext, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined, generatedIds?: Record<string, unknown>[] | undefined, returningIds?: SelectedFieldsOrdered | undefined);
27
+ _execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
29
28
  iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
30
29
  }
31
30
  export interface PlanetscaleSessionOptions {
@@ -40,11 +39,11 @@ export declare class PlanetscaleSession<TFullSchema extends Record<string, unkno
40
39
  private logger;
41
40
  private client;
42
41
  private cache;
43
- constructor(baseClient: Client | Connection, dialect: MySqlDialect, tx: Transaction | undefined, schema: RelationalSchemaConfig<TSchema> | undefined, options?: PlanetscaleSessionOptions);
42
+ constructor(baseClient: Client | Connection, dialect: MySqlDialect, tx: Transaction | undefined, schema: RelationalSchemaConfig<TSchema> | undefined, options?: PlanetscaleSessionOptions, extensions?: DrizzleMySqlExtension[]);
44
43
  prepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered, queryMetadata?: {
45
44
  type: 'select' | 'update' | 'delete' | 'insert';
46
45
  tables: string[];
47
- }, cacheConfig?: WithCacheConfig): MySqlPreparedQuery<T>;
46
+ }, cacheConfig?: WithCacheConfig, hookContext?: BlankMySqlHookContext): MySqlPreparedQuery<T>;
48
47
  query(query: string, params: unknown[]): Promise<ExecutedQuery>;
49
48
  queryObjects(query: string, params: unknown[]): Promise<ExecutedQuery>;
50
49
  all<T = unknown>(query: SQL): Promise<T[]>;
@@ -53,7 +52,7 @@ export declare class PlanetscaleSession<TFullSchema extends Record<string, unkno
53
52
  }
54
53
  export declare class PlanetScaleTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {
55
54
  static readonly [entityKind]: string;
56
- constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number);
55
+ constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number, extensions?: DrizzleMySqlExtension[]);
57
56
  transaction<T>(transaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
58
57
  }
59
58
  export interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {
@@ -10,11 +10,9 @@ import {
10
10
  import { fillPlaceholders, sql } from "../sql/sql.js";
11
11
  import { mapResultRow } from "../utils.js";
12
12
  class PlanetScalePreparedQuery extends MySqlPreparedQuery {
13
- constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, customResultMapper, generatedIds, returningIds) {
14
- super(cache, queryMetadata, cacheConfig);
13
+ constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, extensions, hookContext, customResultMapper, generatedIds, returningIds) {
14
+ super(queryString, params, cache, queryMetadata, cacheConfig, extensions, hookContext);
15
15
  this.client = client;
16
- this.queryString = queryString;
17
- this.params = params;
18
16
  this.logger = logger;
19
17
  this.fields = fields;
20
18
  this.customResultMapper = customResultMapper;
@@ -24,7 +22,7 @@ class PlanetScalePreparedQuery extends MySqlPreparedQuery {
24
22
  static [entityKind] = "PlanetScalePreparedQuery";
25
23
  rawQuery = { as: "object" };
26
24
  query = { as: "array" };
27
- async execute(placeholderValues = {}) {
25
+ async _execute(placeholderValues = {}) {
28
26
  const params = fillPlaceholders(this.params, placeholderValues);
29
27
  this.logger.logQuery(this.queryString, params);
30
28
  const {
@@ -78,8 +76,8 @@ class PlanetScalePreparedQuery extends MySqlPreparedQuery {
78
76
  }
79
77
  }
80
78
  class PlanetscaleSession extends MySqlSession {
81
- constructor(baseClient, dialect, tx, schema, options = {}) {
82
- super(dialect);
79
+ constructor(baseClient, dialect, tx, schema, options = {}, extensions) {
80
+ super(dialect, extensions);
83
81
  this.baseClient = baseClient;
84
82
  this.schema = schema;
85
83
  this.options = options;
@@ -91,7 +89,7 @@ class PlanetscaleSession extends MySqlSession {
91
89
  logger;
92
90
  client;
93
91
  cache;
94
- prepareQuery(query, fields, customResultMapper, generatedIds, returningIds, queryMetadata, cacheConfig) {
92
+ prepareQuery(query, fields, customResultMapper, generatedIds, returningIds, queryMetadata, cacheConfig, hookContext) {
95
93
  return new PlanetScalePreparedQuery(
96
94
  this.client,
97
95
  query.sql,
@@ -101,6 +99,8 @@ class PlanetscaleSession extends MySqlSession {
101
99
  queryMetadata,
102
100
  cacheConfig,
103
101
  fields,
102
+ this.extensions,
103
+ hookContext,
104
104
  customResultMapper,
105
105
  generatedIds,
106
106
  returningIds
@@ -126,11 +126,20 @@ class PlanetscaleSession extends MySqlSession {
126
126
  }
127
127
  transaction(transaction) {
128
128
  return this.baseClient.transaction((pstx) => {
129
- const session = new PlanetscaleSession(this.baseClient, this.dialect, pstx, this.schema, this.options);
129
+ const session = new PlanetscaleSession(
130
+ this.baseClient,
131
+ this.dialect,
132
+ pstx,
133
+ this.schema,
134
+ this.options,
135
+ this.extensions
136
+ );
130
137
  const tx = new PlanetScaleTransaction(
131
138
  this.dialect,
132
139
  session,
133
- this.schema
140
+ this.schema,
141
+ void 0,
142
+ this.extensions
134
143
  );
135
144
  return transaction(tx);
136
145
  });
@@ -138,8 +147,8 @@ class PlanetscaleSession extends MySqlSession {
138
147
  }
139
148
  class PlanetScaleTransaction extends MySqlTransaction {
140
149
  static [entityKind] = "PlanetScaleTransaction";
141
- constructor(dialect, session, schema, nestedIndex = 0) {
142
- super(dialect, session, schema, nestedIndex, "planetscale");
150
+ constructor(dialect, session, schema, nestedIndex = 0, extensions) {
151
+ super(dialect, session, schema, nestedIndex, "planetscale", extensions);
143
152
  }
144
153
  async transaction(transaction) {
145
154
  const savepointName = `sp${this.nestedIndex + 1}`;
@@ -147,7 +156,8 @@ class PlanetScaleTransaction extends MySqlTransaction {
147
156
  this.dialect,
148
157
  this.session,
149
158
  this.schema,
150
- this.nestedIndex + 1
159
+ this.nestedIndex + 1,
160
+ this._.extensions
151
161
  );
152
162
  await tx.execute(sql.raw(`savepoint ${savepointName}`));
153
163
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/session.ts"],"sourcesContent":["import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscale/database';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/mysql-core/query-builders/select.types.ts';\nimport {\n\tMySqlPreparedQuery,\n\ttype MySqlPreparedQueryConfig,\n\ttype MySqlPreparedQueryHKT,\n\ttype MySqlQueryResultHKT,\n\tMySqlSession,\n\tMySqlTransaction,\n} from '~/mysql-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 class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PlanetScalePreparedQuery';\n\n\tprivate rawQuery = { as: 'object' } as const;\n\tprivate query = { as: 'array' } as const;\n\n\tconstructor(\n\t\tprivate client: Client | Transaction | Connection,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\t// Keys that were used in $default and the value that was generated for them\n\t\tprivate generatedIds?: Record<string, unknown>[],\n\t\t// Keys that should be returned, it has the column with all properries + key from object\n\t\tprivate returningIds?: SelectedFieldsOrdered,\n\t) {\n\t\tsuper(cache, queryMetadata, cacheConfig);\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.queryString, params);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\tclient,\n\t\t\tqueryString,\n\t\t\trawQuery,\n\t\t\tquery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tcustomResultMapper,\n\t\t\treturningIds,\n\t\t\tgeneratedIds,\n\t\t} = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst res = await this.queryWithCache(queryString, params, async () => {\n\t\t\t\treturn await client.execute(queryString, params, rawQuery);\n\t\t\t});\n\n\t\t\tconst insertId = Number.parseFloat(res.insertId);\n\t\t\tconst affectedRows = res.rowsAffected;\n\n\t\t\t// for each row, I need to check keys from\n\t\t\tif (returningIds) {\n\t\t\t\tconst returningResponse = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tfor (let i = insertId; i < insertId + affectedRows; i++) {\n\t\t\t\t\tfor (const column of returningIds) {\n\t\t\t\t\t\tconst key = returningIds[0]!.path[0]!;\n\t\t\t\t\t\tif (is(column.field, Column)) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (column.field.primary && column.field.autoIncrement) {\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (column.field.defaultFn && generatedIds) {\n\t\t\t\t\t\t\t\t// generatedIds[rowIdx][key]\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: generatedIds[j]![key] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn returningResponse;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tconst { rows } = await this.queryWithCache(queryString, params, async () => {\n\t\t\treturn await client.execute(queryString, params, query);\n\t\t});\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n\t}\n\n\toverride iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']> {\n\t\tthrow new Error('Streaming is not supported by the PlanetScale Serverless driver');\n\t}\n}\n\nexport interface PlanetscaleSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class PlanetscaleSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetscaleSession';\n\n\tprivate logger: Logger;\n\tprivate client: Client | Transaction | Connection;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate baseClient: Client | Connection,\n\t\tdialect: MySqlDialect,\n\t\ttx: Transaction | undefined,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PlanetscaleSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.client = tx ?? baseClient;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): MySqlPreparedQuery<T> {\n\t\treturn new PlanetScalePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tcustomResultMapper,\n\t\t\tgeneratedIds,\n\t\t\treturningIds,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<ExecutedQuery> {\n\t\tthis.logger.logQuery(query, params);\n\n\t\treturn await this.client.execute(query, params, { as: 'array' });\n\t}\n\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<ExecutedQuery> {\n\t\treturn this.client.execute(query, params, { as: 'object' });\n\t}\n\n\toverride all<T = unknown>(query: SQL): Promise<T[]> {\n\t\tconst querySql = this.dialect.sqlToQuery(query);\n\t\tthis.logger.logQuery(querySql.sql, querySql.params);\n\n\t\treturn this.client.execute<T>(querySql.sql, querySql.params, { as: 'object' }).then((\n\t\t\teQuery,\n\t\t) => eQuery.rows);\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 transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn this.baseClient.transaction((pstx) => {\n\t\t\tconst session = new PlanetscaleSession(this.baseClient, this.dialect, pstx, this.schema, this.options);\n\t\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession as MySqlSession<any, any, any, any>,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t});\n\t}\n}\n\nexport class PlanetScaleTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex, 'planetscale');\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PlanetScaleTransaction<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);\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 (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {\n\ttype: ExecutedQuery;\n}\n\nexport interface PlanetScalePreparedQueryHKT extends MySqlPreparedQueryHKT {\n\ttype: PlanetScalePreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"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","names":["sql"]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/session.ts"],"sourcesContent":["import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscale/database';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { BlankMySqlHookContext, DrizzleMySqlExtension } from '~/extension-core/mysql/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/mysql-core/query-builders/select.types.ts';\nimport {\n\tMySqlPreparedQuery,\n\ttype MySqlPreparedQueryConfig,\n\ttype MySqlPreparedQueryHKT,\n\ttype MySqlQueryResultHKT,\n\tMySqlSession,\n\tMySqlTransaction,\n} from '~/mysql-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 class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PlanetScalePreparedQuery';\n\n\tprivate rawQuery = { as: 'object' } as const;\n\tprivate query = { as: 'array' } as const;\n\n\tconstructor(\n\t\tprivate client: Client | Transaction | Connection,\n\t\tqueryString: string,\n\t\tparams: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\textensions?: DrizzleMySqlExtension[],\n\t\thookContext?: BlankMySqlHookContext,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\t// Keys that were used in $default and the value that was generated for them\n\t\tprivate generatedIds?: Record<string, unknown>[],\n\t\t// Keys that should be returned, it has the column with all properries + key from object\n\t\tprivate returningIds?: SelectedFieldsOrdered,\n\t) {\n\t\tsuper(queryString, params, cache, queryMetadata, cacheConfig, extensions, hookContext);\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.queryString, params);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\tclient,\n\t\t\tqueryString,\n\t\t\trawQuery,\n\t\t\tquery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tcustomResultMapper,\n\t\t\treturningIds,\n\t\t\tgeneratedIds,\n\t\t} = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst res = await this.queryWithCache(queryString, params, async () => {\n\t\t\t\treturn await client.execute(queryString, params, rawQuery);\n\t\t\t});\n\n\t\t\tconst insertId = Number.parseFloat(res.insertId);\n\t\t\tconst affectedRows = res.rowsAffected;\n\n\t\t\t// for each row, I need to check keys from\n\t\t\tif (returningIds) {\n\t\t\t\tconst returningResponse = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tfor (let i = insertId; i < insertId + affectedRows; i++) {\n\t\t\t\t\tfor (const column of returningIds) {\n\t\t\t\t\t\tconst key = returningIds[0]!.path[0]!;\n\t\t\t\t\t\tif (is(column.field, Column)) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (column.field.primary && column.field.autoIncrement) {\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (column.field.defaultFn && generatedIds) {\n\t\t\t\t\t\t\t\t// generatedIds[rowIdx][key]\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: generatedIds[j]![key] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn returningResponse;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tconst { rows } = await this.queryWithCache(queryString, params, async () => {\n\t\t\treturn await client.execute(queryString, params, query);\n\t\t});\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n\t}\n\n\toverride iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']> {\n\t\tthrow new Error('Streaming is not supported by the PlanetScale Serverless driver');\n\t}\n}\n\nexport interface PlanetscaleSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class PlanetscaleSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetscaleSession';\n\n\tprivate logger: Logger;\n\tprivate client: Client | Transaction | Connection;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate baseClient: Client | Connection,\n\t\tdialect: MySqlDialect,\n\t\ttx: Transaction | undefined,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PlanetscaleSessionOptions = {},\n\t\textensions?: DrizzleMySqlExtension[],\n\t) {\n\t\tsuper(dialect, extensions);\n\t\tthis.client = tx ?? baseClient;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t\thookContext?: BlankMySqlHookContext,\n\t): MySqlPreparedQuery<T> {\n\t\treturn new PlanetScalePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tthis.extensions,\n\t\t\thookContext,\n\t\t\tcustomResultMapper,\n\t\t\tgeneratedIds,\n\t\t\treturningIds,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<ExecutedQuery> {\n\t\tthis.logger.logQuery(query, params);\n\n\t\treturn await this.client.execute(query, params, { as: 'array' });\n\t}\n\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<ExecutedQuery> {\n\t\treturn this.client.execute(query, params, { as: 'object' });\n\t}\n\n\toverride all<T = unknown>(query: SQL): Promise<T[]> {\n\t\tconst querySql = this.dialect.sqlToQuery(query);\n\t\tthis.logger.logQuery(querySql.sql, querySql.params);\n\n\t\treturn this.client.execute<T>(querySql.sql, querySql.params, { as: 'object' }).then((\n\t\t\teQuery,\n\t\t) => eQuery.rows);\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 transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn this.baseClient.transaction((pstx) => {\n\t\t\tconst session = new PlanetscaleSession(\n\t\t\t\tthis.baseClient,\n\t\t\t\tthis.dialect,\n\t\t\t\tpstx,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t\tthis.extensions,\n\t\t\t);\n\t\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession as MySqlSession<any, any, any, any>,\n\t\t\t\tthis.schema,\n\t\t\t\tundefined,\n\t\t\t\tthis.extensions,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t});\n\t}\n}\n\nexport class PlanetScaleTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t\textensions?: DrizzleMySqlExtension[],\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex, 'planetscale', extensions);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PlanetScaleTransaction<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 (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {\n\ttype: ExecutedQuery;\n}\n\nexport interface PlanetScalePreparedQueryHKT extends MySqlPreparedQueryHKT {\n\ttype: PlanetScalePreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"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","names":["sql"]}
@@ -70,8 +70,9 @@ function construct(client, config = {}) {
70
70
  tableNamesMap: tablesConfig.tableNamesMap
71
71
  };
72
72
  }
73
- const session = new import_session.PostgresJsSession(client, dialect, schema, { logger, cache: config.cache });
74
- const db = new PostgresJsDatabase(dialect, session, schema);
73
+ const extensions = config.extensions;
74
+ const session = new import_session.PostgresJsSession(client, dialect, schema, { logger, cache: config.cache }, extensions);
75
+ const db = new PostgresJsDatabase(dialect, session, schema, extensions);
75
76
  db.$client = client;
76
77
  db.$cache = config.cache;
77
78
  if (db.$cache) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/postgres-js/driver.ts"],"sourcesContent":["import pgClient, { type Options, type PostgresType, type Sql } from 'postgres';\nimport { entityKind } from '~/entity.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 { PostgresJsQueryResultHKT } from './session.ts';\nimport { PostgresJsSession } from './session.ts';\n\nexport class PostgresJsDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<PostgresJsQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PostgresJsDatabase';\n}\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Sql,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PostgresJsDatabase<TSchema> & {\n\t$client: Sql;\n} {\n\tconst transparentParser = (val: any) => val;\n\n\t// Override postgres.js default date parsers: https://github.com/porsager/postgres/discussions/761\n\tfor (const type of ['1184', '1082', '1083', '1114', '1182', '1185', '1115', '1231']) {\n\t\tclient.options.parsers[type as any] = transparentParser;\n\t\tclient.options.serializers[type as any] = transparentParser;\n\t}\n\tclient.options.serializers['114'] = transparentParser;\n\tclient.options.serializers['3802'] = transparentParser;\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 session = new PostgresJsSession(client, dialect, schema, { logger, cache: config.cache });\n\tconst db = new PostgresJsDatabase(dialect, session, schema as any) as PostgresJsDatabase<TSchema>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Sql = Sql,\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 | ({ url?: string } & Options<Record<string, PostgresType>>);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PostgresJsDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = pgClient(params[0] as string);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: { url?: string } & Options<Record<string, PostgresType>>;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\t\tconst { url, ...config } = connection;\n\n\t\t\tconst instance = pgClient(url, config);\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = pgClient(connection);\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): PostgresJsDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAoE;AACpE,oBAA2B;AAC3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AACP,mBAA6C;AAE7C,qBAAkC;AAE3B,MAAM,2BAEH,qBAA8C;AAAA,EACvD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UACR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,oBAAoB,CAAC,QAAa;AAGxC,aAAW,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,GAAG;AACpF,WAAO,QAAQ,QAAQ,IAAW,IAAI;AACtC,WAAO,QAAQ,YAAY,IAAW,IAAI;AAAA,EAC3C;AACA,SAAO,QAAQ,YAAY,KAAK,IAAI;AACpC,SAAO,QAAQ,YAAY,MAAM,IAAI;AAErC,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,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,CAAC;AAC9F,QAAM,KAAK,IAAI,mBAAmB,SAAS,SAAS,MAAa;AACjE,EAAO,GAAI,UAAU;AACrB,EAAO,GAAI,SAAS,OAAO;AAC3B,MAAW,GAAI,QAAQ;AACtB,IAAO,GAAI,OAAO,YAAY,IAAI,OAAO,OAAO;AAAA,EACjD;AAEA,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,eAAW,gBAAAA,SAAS,OAAO,CAAC,CAAW;AAE7C,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAKzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,YAAY,WAAW,QAAQ,QAAW;AACnE,YAAM,EAAE,KAAK,GAAG,OAAO,IAAI;AAE3B,YAAMC,gBAAW,gBAAAD,SAAS,KAAK,MAAM;AACrC,aAAO,UAAUC,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,eAAW,gBAAAD,SAAS,UAAU;AACpC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AACvF;AAAA,CAEO,CAAUE,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU;AAAA,MAChB,SAAS;AAAA,QACR,SAAS,CAAC;AAAA,QACV,aAAa,CAAC;AAAA,MACf;AAAA,IACD,GAAU,MAAM;AAAA,EACjB;AAXO,EAAAA,SAAS;AAAA,GADA;","names":["pgClient","instance","drizzle"]}
1
+ {"version":3,"sources":["../../src/postgres-js/driver.ts"],"sourcesContent":["import pgClient, { type Options, type PostgresType, type Sql } from 'postgres';\nimport { entityKind } from '~/entity.ts';\nimport type { DrizzlePgExtension } from '~/extension-core/pg/index.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 { PostgresJsQueryResultHKT } from './session.ts';\nimport { PostgresJsSession } from './session.ts';\n\nexport class PostgresJsDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<PostgresJsQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PostgresJsDatabase';\n}\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Sql,\n\tconfig: DrizzleConfig<TSchema, DrizzlePgExtension> = {},\n): PostgresJsDatabase<TSchema> & {\n\t$client: Sql;\n} {\n\tconst transparentParser = (val: any) => val;\n\n\t// Override postgres.js default date parsers: https://github.com/porsager/postgres/discussions/761\n\tfor (const type of ['1184', '1082', '1083', '1114', '1182', '1185', '1115', '1231']) {\n\t\tclient.options.parsers[type as any] = transparentParser;\n\t\tclient.options.serializers[type as any] = transparentParser;\n\t}\n\tclient.options.serializers['114'] = transparentParser;\n\tclient.options.serializers['3802'] = transparentParser;\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 session = new PostgresJsSession(client, dialect, schema, { logger, cache: config.cache }, extensions);\n\tconst db = new PostgresJsDatabase(dialect, session, schema as any, extensions) as PostgresJsDatabase<TSchema>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Sql = Sql,\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 | ({ url?: string } & Options<Record<string, PostgresType>>);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PostgresJsDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = pgClient(params[0] as string);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: { url?: string } & Options<Record<string, PostgresType>>;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema, DrizzlePgExtension>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\t\tconst { url, ...config } = connection;\n\n\t\t\tconst instance = pgClient(url, config);\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = pgClient(connection);\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): PostgresJsDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAoE;AACpE,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AACP,mBAA6C;AAE7C,qBAAkC;AAE3B,MAAM,2BAEH,qBAA8C;AAAA,EACvD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UACR,QACA,SAAqD,CAAC,GAGrD;AACD,QAAM,oBAAoB,CAAC,QAAa;AAGxC,aAAW,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,GAAG;AACpF,WAAO,QAAQ,QAAQ,IAAW,IAAI;AACtC,WAAO,QAAQ,YAAY,IAAW,IAAI;AAAA,EAC3C;AACA,SAAO,QAAQ,YAAY,KAAK,IAAI;AACpC,SAAO,QAAQ,YAAY,MAAM,IAAI;AAErC,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,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,GAAG,UAAU;AAC1G,QAAM,KAAK,IAAI,mBAAmB,SAAS,SAAS,QAAe,UAAU;AAC7E,EAAO,GAAI,UAAU;AACrB,EAAO,GAAI,SAAS,OAAO;AAC3B,MAAW,GAAI,QAAQ;AACtB,IAAO,GAAI,OAAO,YAAY,IAAI,OAAO,OAAO;AAAA,EACjD;AAEA,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,eAAW,gBAAAA,SAAS,OAAO,CAAC,CAAW;AAE7C,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAKzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,YAAY,WAAW,QAAQ,QAAW;AACnE,YAAM,EAAE,KAAK,GAAG,OAAO,IAAI;AAE3B,YAAMC,gBAAW,gBAAAD,SAAS,KAAK,MAAM;AACrC,aAAO,UAAUC,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,eAAW,gBAAAD,SAAS,UAAU;AACpC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAA2D;AAC3G;AAAA,CAEO,CAAUE,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU;AAAA,MAChB,SAAS;AAAA,QACR,SAAS,CAAC;AAAA,QACV,aAAa,CAAC;AAAA,MACf;AAAA,IACD,GAAU,MAAM;AAAA,EACjB;AAXO,EAAAA,SAAS;AAAA,GADA;","names":["pgClient","instance","drizzle"]}
@@ -1,5 +1,6 @@
1
1
  import { type Options, type PostgresType, type Sql } from 'postgres';
2
2
  import { entityKind } from "../entity.cjs";
3
+ import type { DrizzlePgExtension } from "../extension-core/pg/index.cjs";
3
4
  import { PgDatabase } from "../pg-core/db.cjs";
4
5
  import { type DrizzleConfig } from "../utils.cjs";
5
6
  import type { PostgresJsQueryResultHKT } from "./session.cjs";
@@ -10,9 +11,9 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
10
11
  TClient | string
11
12
  ] | [
12
13
  TClient | string,
13
- DrizzleConfig<TSchema>
14
+ DrizzleConfig<TSchema, DrizzlePgExtension>
14
15
  ] | [
15
- (DrizzleConfig<TSchema> & ({
16
+ (DrizzleConfig<TSchema, DrizzlePgExtension> & ({
16
17
  connection: string | ({
17
18
  url?: string;
18
19
  } & Options<Record<string, PostgresType>>);
@@ -23,7 +24,7 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
23
24
  $client: TClient;
24
25
  };
25
26
  export declare namespace drizzle {
26
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PostgresJsDatabase<TSchema> & {
27
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema, DrizzlePgExtension>): PostgresJsDatabase<TSchema> & {
27
28
  $client: '$client is not available on drizzle.mock()';
28
29
  };
29
30
  }
@@ -1,5 +1,6 @@
1
1
  import { type Options, type PostgresType, type Sql } from 'postgres';
2
2
  import { entityKind } from "../entity.js";
3
+ import type { DrizzlePgExtension } from "../extension-core/pg/index.js";
3
4
  import { PgDatabase } from "../pg-core/db.js";
4
5
  import { type DrizzleConfig } from "../utils.js";
5
6
  import type { PostgresJsQueryResultHKT } from "./session.js";
@@ -10,9 +11,9 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
10
11
  TClient | string
11
12
  ] | [
12
13
  TClient | string,
13
- DrizzleConfig<TSchema>
14
+ DrizzleConfig<TSchema, DrizzlePgExtension>
14
15
  ] | [
15
- (DrizzleConfig<TSchema> & ({
16
+ (DrizzleConfig<TSchema, DrizzlePgExtension> & ({
16
17
  connection: string | ({
17
18
  url?: string;
18
19
  } & Options<Record<string, PostgresType>>);
@@ -23,7 +24,7 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
23
24
  $client: TClient;
24
25
  };
25
26
  export declare namespace drizzle {
26
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PostgresJsDatabase<TSchema> & {
27
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema, DrizzlePgExtension>): PostgresJsDatabase<TSchema> & {
27
28
  $client: '$client is not available on drizzle.mock()';
28
29
  };
29
30
  }
@@ -39,8 +39,9 @@ function construct(client, config = {}) {
39
39
  tableNamesMap: tablesConfig.tableNamesMap
40
40
  };
41
41
  }
42
- const session = new PostgresJsSession(client, dialect, schema, { logger, cache: config.cache });
43
- const db = new PostgresJsDatabase(dialect, session, schema);
42
+ const extensions = config.extensions;
43
+ const session = new PostgresJsSession(client, dialect, schema, { logger, cache: config.cache }, extensions);
44
+ const db = new PostgresJsDatabase(dialect, session, schema, extensions);
44
45
  db.$client = client;
45
46
  db.$cache = config.cache;
46
47
  if (db.$cache) {