drizzle-orm 0.34.1 → 0.35.1-74d2f4c

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 (503) hide show
  1. package/aws-data-api/pg/driver.cjs +21 -1
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +20 -3
  4. package/aws-data-api/pg/driver.d.ts +20 -3
  5. package/aws-data-api/pg/driver.js +21 -1
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/session.cjs.map +1 -1
  8. package/aws-data-api/pg/session.d.cts +1 -1
  9. package/aws-data-api/pg/session.d.ts +1 -1
  10. package/aws-data-api/pg/session.js.map +1 -1
  11. package/better-sqlite3/driver.cjs +37 -1
  12. package/better-sqlite3/driver.cjs.map +1 -1
  13. package/better-sqlite3/driver.d.cts +24 -3
  14. package/better-sqlite3/driver.d.ts +24 -3
  15. package/better-sqlite3/driver.js +27 -1
  16. package/better-sqlite3/driver.js.map +1 -1
  17. package/better-sqlite3/session.cjs.map +1 -1
  18. package/better-sqlite3/session.js.map +1 -1
  19. package/bun-sqlite/driver.cjs +28 -1
  20. package/bun-sqlite/driver.cjs.map +1 -1
  21. package/bun-sqlite/driver.d.cts +46 -5
  22. package/bun-sqlite/driver.d.ts +46 -5
  23. package/bun-sqlite/driver.js +28 -1
  24. package/bun-sqlite/driver.js.map +1 -1
  25. package/bun-sqlite/session.cjs.map +1 -1
  26. package/bun-sqlite/session.d.cts +0 -1
  27. package/bun-sqlite/session.d.ts +0 -1
  28. package/bun-sqlite/session.js.map +1 -1
  29. package/column-builder.d.cts +4 -4
  30. package/column-builder.d.ts +4 -4
  31. package/d1/driver.cjs.map +1 -1
  32. package/d1/driver.d.cts +0 -1
  33. package/d1/driver.d.ts +0 -1
  34. package/d1/driver.js.map +1 -1
  35. package/d1/session.cjs.map +1 -1
  36. package/d1/session.d.cts +0 -1
  37. package/d1/session.d.ts +0 -1
  38. package/d1/session.js.map +1 -1
  39. package/entity.cjs +1 -1
  40. package/entity.cjs.map +1 -1
  41. package/entity.js +1 -1
  42. package/entity.js.map +1 -1
  43. package/errors.cjs.map +1 -1
  44. package/errors.js.map +1 -1
  45. package/expo-sqlite/driver.cjs.map +1 -1
  46. package/expo-sqlite/driver.js.map +1 -1
  47. package/expo-sqlite/session.cjs.map +1 -1
  48. package/expo-sqlite/session.js.map +1 -1
  49. package/libsql/driver.cjs +27 -1
  50. package/libsql/driver.cjs.map +1 -1
  51. package/libsql/driver.d.cts +22 -4
  52. package/libsql/driver.d.ts +22 -4
  53. package/libsql/driver.js +27 -1
  54. package/libsql/driver.js.map +1 -1
  55. package/libsql/session.cjs.map +1 -1
  56. package/libsql/session.js.map +1 -1
  57. package/mysql-core/columns/bigint.cjs.map +1 -1
  58. package/mysql-core/columns/bigint.js.map +1 -1
  59. package/mysql-core/columns/binary.cjs.map +1 -1
  60. package/mysql-core/columns/binary.js.map +1 -1
  61. package/mysql-core/columns/boolean.cjs.map +1 -1
  62. package/mysql-core/columns/boolean.js.map +1 -1
  63. package/mysql-core/columns/char.cjs.map +1 -1
  64. package/mysql-core/columns/char.js.map +1 -1
  65. package/mysql-core/columns/common.cjs.map +1 -1
  66. package/mysql-core/columns/common.js.map +1 -1
  67. package/mysql-core/columns/custom.cjs.map +1 -1
  68. package/mysql-core/columns/custom.js.map +1 -1
  69. package/mysql-core/columns/date.cjs.map +1 -1
  70. package/mysql-core/columns/date.common.cjs.map +1 -1
  71. package/mysql-core/columns/date.common.js.map +1 -1
  72. package/mysql-core/columns/date.js.map +1 -1
  73. package/mysql-core/columns/datetime.cjs.map +1 -1
  74. package/mysql-core/columns/datetime.js.map +1 -1
  75. package/mysql-core/columns/decimal.cjs.map +1 -1
  76. package/mysql-core/columns/decimal.js.map +1 -1
  77. package/mysql-core/columns/double.cjs.map +1 -1
  78. package/mysql-core/columns/double.js.map +1 -1
  79. package/mysql-core/columns/enum.cjs.map +1 -1
  80. package/mysql-core/columns/enum.js.map +1 -1
  81. package/mysql-core/columns/float.cjs.map +1 -1
  82. package/mysql-core/columns/float.js.map +1 -1
  83. package/mysql-core/columns/int.cjs.map +1 -1
  84. package/mysql-core/columns/int.js.map +1 -1
  85. package/mysql-core/columns/json.cjs.map +1 -1
  86. package/mysql-core/columns/json.js.map +1 -1
  87. package/mysql-core/columns/mediumint.cjs.map +1 -1
  88. package/mysql-core/columns/mediumint.js.map +1 -1
  89. package/mysql-core/columns/real.cjs.map +1 -1
  90. package/mysql-core/columns/real.js.map +1 -1
  91. package/mysql-core/columns/serial.cjs.map +1 -1
  92. package/mysql-core/columns/serial.js.map +1 -1
  93. package/mysql-core/columns/smallint.cjs.map +1 -1
  94. package/mysql-core/columns/smallint.js.map +1 -1
  95. package/mysql-core/columns/text.cjs.map +1 -1
  96. package/mysql-core/columns/text.js.map +1 -1
  97. package/mysql-core/columns/time.cjs.map +1 -1
  98. package/mysql-core/columns/time.js.map +1 -1
  99. package/mysql-core/columns/timestamp.cjs.map +1 -1
  100. package/mysql-core/columns/timestamp.js.map +1 -1
  101. package/mysql-core/columns/tinyint.cjs.map +1 -1
  102. package/mysql-core/columns/tinyint.js.map +1 -1
  103. package/mysql-core/columns/varbinary.cjs.map +1 -1
  104. package/mysql-core/columns/varbinary.js.map +1 -1
  105. package/mysql-core/columns/varchar.cjs.map +1 -1
  106. package/mysql-core/columns/varchar.js.map +1 -1
  107. package/mysql-core/columns/year.cjs.map +1 -1
  108. package/mysql-core/columns/year.js.map +1 -1
  109. package/mysql-core/db.d.cts +3 -3
  110. package/mysql-core/db.d.ts +3 -3
  111. package/mysql-core/dialect.cjs +17 -13
  112. package/mysql-core/dialect.cjs.map +1 -1
  113. package/mysql-core/dialect.d.cts +4 -2
  114. package/mysql-core/dialect.d.ts +4 -2
  115. package/mysql-core/dialect.js +17 -13
  116. package/mysql-core/dialect.js.map +1 -1
  117. package/mysql-core/query-builders/count.cjs.map +1 -1
  118. package/mysql-core/query-builders/count.js.map +1 -1
  119. package/mysql-core/query-builders/delete.cjs +22 -0
  120. package/mysql-core/query-builders/delete.cjs.map +1 -1
  121. package/mysql-core/query-builders/delete.d.cts +8 -1
  122. package/mysql-core/query-builders/delete.d.ts +8 -1
  123. package/mysql-core/query-builders/delete.js +22 -0
  124. package/mysql-core/query-builders/delete.js.map +1 -1
  125. package/mysql-core/query-builders/insert.cjs.map +1 -1
  126. package/mysql-core/query-builders/insert.js.map +1 -1
  127. package/mysql-core/query-builders/query-builder.d.cts +4 -4
  128. package/mysql-core/query-builders/query-builder.d.ts +4 -4
  129. package/mysql-core/query-builders/query.cjs.map +1 -1
  130. package/mysql-core/query-builders/query.d.cts +3 -7
  131. package/mysql-core/query-builders/query.d.ts +3 -7
  132. package/mysql-core/query-builders/query.js.map +1 -1
  133. package/mysql-core/query-builders/select.cjs.map +1 -1
  134. package/mysql-core/query-builders/select.js.map +1 -1
  135. package/mysql-core/query-builders/update.cjs +22 -0
  136. package/mysql-core/query-builders/update.cjs.map +1 -1
  137. package/mysql-core/query-builders/update.d.cts +9 -3
  138. package/mysql-core/query-builders/update.d.ts +9 -3
  139. package/mysql-core/query-builders/update.js +22 -0
  140. package/mysql-core/query-builders/update.js.map +1 -1
  141. package/mysql-core/session.cjs.map +1 -1
  142. package/mysql-core/session.js.map +1 -1
  143. package/mysql-core/table.cjs.map +1 -1
  144. package/mysql-core/table.js.map +1 -1
  145. package/mysql-core/utils.d.cts +4 -5
  146. package/mysql-core/utils.d.ts +4 -5
  147. package/mysql-core/view-base.cjs.map +1 -1
  148. package/mysql-core/view-base.js.map +1 -1
  149. package/mysql-core/view.cjs +0 -4
  150. package/mysql-core/view.cjs.map +1 -1
  151. package/mysql-core/view.d.cts +0 -2
  152. package/mysql-core/view.d.ts +0 -2
  153. package/mysql-core/view.js +0 -4
  154. package/mysql-core/view.js.map +1 -1
  155. package/mysql-proxy/driver.cjs.map +1 -1
  156. package/mysql-proxy/driver.js.map +1 -1
  157. package/mysql-proxy/session.cjs.map +1 -1
  158. package/mysql-proxy/session.d.cts +1 -1
  159. package/mysql-proxy/session.d.ts +1 -1
  160. package/mysql-proxy/session.js.map +1 -1
  161. package/mysql2/driver.cjs +29 -1
  162. package/mysql2/driver.cjs.map +1 -1
  163. package/mysql2/driver.d.cts +23 -3
  164. package/mysql2/driver.d.ts +23 -3
  165. package/mysql2/driver.js +29 -1
  166. package/mysql2/driver.js.map +1 -1
  167. package/mysql2/session.cjs.map +1 -1
  168. package/mysql2/session.d.cts +1 -1
  169. package/mysql2/session.d.ts +1 -1
  170. package/mysql2/session.js.map +1 -1
  171. package/neon-http/driver.cjs +26 -1
  172. package/neon-http/driver.cjs.map +1 -1
  173. package/neon-http/driver.d.cts +23 -3
  174. package/neon-http/driver.d.ts +23 -3
  175. package/neon-http/driver.js +27 -2
  176. package/neon-http/driver.js.map +1 -1
  177. package/neon-http/session.cjs.map +1 -1
  178. package/neon-http/session.d.cts +1 -1
  179. package/neon-http/session.d.ts +1 -1
  180. package/neon-http/session.js.map +1 -1
  181. package/neon-serverless/driver.cjs +28 -8
  182. package/neon-serverless/driver.cjs.map +1 -1
  183. package/neon-serverless/driver.d.cts +23 -3
  184. package/neon-serverless/driver.d.ts +23 -3
  185. package/neon-serverless/driver.js +29 -9
  186. package/neon-serverless/driver.js.map +1 -1
  187. package/neon-serverless/session.cjs +44 -2
  188. package/neon-serverless/session.cjs.map +1 -1
  189. package/neon-serverless/session.d.cts +3 -2
  190. package/neon-serverless/session.d.ts +3 -2
  191. package/neon-serverless/session.js +46 -3
  192. package/neon-serverless/session.js.map +1 -1
  193. package/node-postgres/driver.cjs +26 -9
  194. package/node-postgres/driver.cjs.map +1 -1
  195. package/node-postgres/driver.d.cts +21 -3
  196. package/node-postgres/driver.d.ts +21 -3
  197. package/node-postgres/driver.js +26 -9
  198. package/node-postgres/driver.js.map +1 -1
  199. package/node-postgres/session.cjs +39 -3
  200. package/node-postgres/session.cjs.map +1 -1
  201. package/node-postgres/session.d.cts +1 -1
  202. package/node-postgres/session.d.ts +1 -1
  203. package/node-postgres/session.js +39 -3
  204. package/node-postgres/session.js.map +1 -1
  205. package/op-sqlite/driver.cjs.map +1 -1
  206. package/op-sqlite/driver.js.map +1 -1
  207. package/op-sqlite/session.cjs.map +1 -1
  208. package/op-sqlite/session.js.map +1 -1
  209. package/package.json +50 -86
  210. package/pg-core/columns/bigint.cjs.map +1 -1
  211. package/pg-core/columns/bigint.js.map +1 -1
  212. package/pg-core/columns/bigserial.cjs.map +1 -1
  213. package/pg-core/columns/bigserial.js.map +1 -1
  214. package/pg-core/columns/boolean.cjs.map +1 -1
  215. package/pg-core/columns/boolean.js.map +1 -1
  216. package/pg-core/columns/char.cjs.map +1 -1
  217. package/pg-core/columns/char.js.map +1 -1
  218. package/pg-core/columns/cidr.cjs.map +1 -1
  219. package/pg-core/columns/cidr.js.map +1 -1
  220. package/pg-core/columns/common.cjs.map +1 -1
  221. package/pg-core/columns/common.js.map +1 -1
  222. package/pg-core/columns/custom.cjs.map +1 -1
  223. package/pg-core/columns/custom.js.map +1 -1
  224. package/pg-core/columns/date.cjs.map +1 -1
  225. package/pg-core/columns/date.common.cjs.map +1 -1
  226. package/pg-core/columns/date.common.js.map +1 -1
  227. package/pg-core/columns/date.js.map +1 -1
  228. package/pg-core/columns/double-precision.cjs.map +1 -1
  229. package/pg-core/columns/double-precision.js.map +1 -1
  230. package/pg-core/columns/enum.cjs.map +1 -1
  231. package/pg-core/columns/enum.js.map +1 -1
  232. package/pg-core/columns/inet.cjs.map +1 -1
  233. package/pg-core/columns/inet.js.map +1 -1
  234. package/pg-core/columns/int.common.cjs.map +1 -1
  235. package/pg-core/columns/int.common.js.map +1 -1
  236. package/pg-core/columns/integer.cjs.map +1 -1
  237. package/pg-core/columns/integer.js.map +1 -1
  238. package/pg-core/columns/interval.cjs.map +1 -1
  239. package/pg-core/columns/interval.js.map +1 -1
  240. package/pg-core/columns/json.cjs.map +1 -1
  241. package/pg-core/columns/json.js.map +1 -1
  242. package/pg-core/columns/jsonb.cjs.map +1 -1
  243. package/pg-core/columns/jsonb.js.map +1 -1
  244. package/pg-core/columns/line.cjs.map +1 -1
  245. package/pg-core/columns/line.js.map +1 -1
  246. package/pg-core/columns/macaddr.cjs.map +1 -1
  247. package/pg-core/columns/macaddr.js.map +1 -1
  248. package/pg-core/columns/macaddr8.cjs.map +1 -1
  249. package/pg-core/columns/macaddr8.js.map +1 -1
  250. package/pg-core/columns/numeric.cjs.map +1 -1
  251. package/pg-core/columns/numeric.js.map +1 -1
  252. package/pg-core/columns/point.cjs.map +1 -1
  253. package/pg-core/columns/point.js.map +1 -1
  254. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  255. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  256. package/pg-core/columns/real.cjs.map +1 -1
  257. package/pg-core/columns/real.js.map +1 -1
  258. package/pg-core/columns/serial.cjs.map +1 -1
  259. package/pg-core/columns/serial.js.map +1 -1
  260. package/pg-core/columns/smallint.cjs.map +1 -1
  261. package/pg-core/columns/smallint.js.map +1 -1
  262. package/pg-core/columns/smallserial.cjs.map +1 -1
  263. package/pg-core/columns/smallserial.js.map +1 -1
  264. package/pg-core/columns/text.cjs.map +1 -1
  265. package/pg-core/columns/text.js.map +1 -1
  266. package/pg-core/columns/time.cjs.map +1 -1
  267. package/pg-core/columns/time.js.map +1 -1
  268. package/pg-core/columns/timestamp.cjs.map +1 -1
  269. package/pg-core/columns/timestamp.js.map +1 -1
  270. package/pg-core/columns/uuid.cjs.map +1 -1
  271. package/pg-core/columns/uuid.js.map +1 -1
  272. package/pg-core/columns/varchar.cjs.map +1 -1
  273. package/pg-core/columns/varchar.js.map +1 -1
  274. package/pg-core/columns/vector_extension/bit.cjs.map +1 -1
  275. package/pg-core/columns/vector_extension/bit.js.map +1 -1
  276. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -1
  277. package/pg-core/columns/vector_extension/halfvec.js.map +1 -1
  278. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -1
  279. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -1
  280. package/pg-core/columns/vector_extension/vector.cjs.map +1 -1
  281. package/pg-core/columns/vector_extension/vector.js.map +1 -1
  282. package/pg-core/db.d.cts +5 -5
  283. package/pg-core/db.d.ts +5 -5
  284. package/pg-core/query-builders/count.cjs.map +1 -1
  285. package/pg-core/query-builders/count.js.map +1 -1
  286. package/pg-core/query-builders/delete.cjs.map +1 -1
  287. package/pg-core/query-builders/delete.js.map +1 -1
  288. package/pg-core/query-builders/insert.cjs.map +1 -1
  289. package/pg-core/query-builders/insert.d.cts +1 -1
  290. package/pg-core/query-builders/insert.d.ts +1 -1
  291. package/pg-core/query-builders/insert.js.map +1 -1
  292. package/pg-core/query-builders/query-builder.d.cts +6 -6
  293. package/pg-core/query-builders/query-builder.d.ts +6 -6
  294. package/pg-core/query-builders/query.cjs.map +1 -1
  295. package/pg-core/query-builders/query.js.map +1 -1
  296. package/pg-core/query-builders/raw.cjs.map +1 -1
  297. package/pg-core/query-builders/raw.js.map +1 -1
  298. package/pg-core/query-builders/refresh-materialized-view.cjs.map +1 -1
  299. package/pg-core/query-builders/refresh-materialized-view.js.map +1 -1
  300. package/pg-core/query-builders/select.cjs.map +1 -1
  301. package/pg-core/query-builders/select.js.map +1 -1
  302. package/pg-core/query-builders/update.cjs.map +1 -1
  303. package/pg-core/query-builders/update.d.cts +1 -1
  304. package/pg-core/query-builders/update.d.ts +1 -1
  305. package/pg-core/query-builders/update.js.map +1 -1
  306. package/pg-core/session.cjs.map +1 -1
  307. package/pg-core/session.js.map +1 -1
  308. package/pg-core/table.cjs.map +1 -1
  309. package/pg-core/table.js.map +1 -1
  310. package/pg-core/utils.d.cts +8 -8
  311. package/pg-core/utils.d.ts +8 -8
  312. package/pg-core/view-base.cjs.map +1 -1
  313. package/pg-core/view-base.js.map +1 -1
  314. package/pg-core/view.cjs +22 -2
  315. package/pg-core/view.cjs.map +1 -1
  316. package/pg-core/view.d.cts +25 -5
  317. package/pg-core/view.d.ts +25 -5
  318. package/pg-core/view.js +21 -3
  319. package/pg-core/view.js.map +1 -1
  320. package/pg-proxy/driver.cjs.map +1 -1
  321. package/pg-proxy/driver.js.map +1 -1
  322. package/pg-proxy/session.cjs.map +1 -1
  323. package/pg-proxy/session.d.cts +1 -1
  324. package/pg-proxy/session.d.ts +1 -1
  325. package/pg-proxy/session.js.map +1 -1
  326. package/pglite/driver.cjs +27 -1
  327. package/pglite/driver.cjs.map +1 -1
  328. package/pglite/driver.d.cts +24 -3
  329. package/pglite/driver.d.ts +24 -3
  330. package/pglite/driver.js +27 -1
  331. package/pglite/driver.js.map +1 -1
  332. package/pglite/session.cjs.map +1 -1
  333. package/pglite/session.d.cts +1 -1
  334. package/pglite/session.d.ts +1 -1
  335. package/pglite/session.js.map +1 -1
  336. package/planetscale-serverless/driver.cjs +27 -1
  337. package/planetscale-serverless/driver.cjs.map +1 -1
  338. package/planetscale-serverless/driver.d.cts +21 -3
  339. package/planetscale-serverless/driver.d.ts +21 -3
  340. package/planetscale-serverless/driver.js +27 -1
  341. package/planetscale-serverless/driver.js.map +1 -1
  342. package/planetscale-serverless/session.cjs.map +1 -1
  343. package/planetscale-serverless/session.d.cts +1 -1
  344. package/planetscale-serverless/session.d.ts +1 -1
  345. package/planetscale-serverless/session.js.map +1 -1
  346. package/postgres-js/driver.cjs +37 -1
  347. package/postgres-js/driver.cjs.map +1 -1
  348. package/postgres-js/driver.d.cts +24 -4
  349. package/postgres-js/driver.d.ts +24 -4
  350. package/postgres-js/driver.js +27 -1
  351. package/postgres-js/driver.js.map +1 -1
  352. package/postgres-js/session.cjs.map +1 -1
  353. package/postgres-js/session.d.cts +1 -1
  354. package/postgres-js/session.d.ts +1 -1
  355. package/postgres-js/session.js.map +1 -1
  356. package/prisma/mysql/driver.cjs.map +1 -1
  357. package/prisma/mysql/driver.js.map +1 -1
  358. package/prisma/mysql/session.cjs.map +1 -1
  359. package/prisma/mysql/session.js.map +1 -1
  360. package/prisma/pg/driver.cjs.map +1 -1
  361. package/prisma/pg/driver.js.map +1 -1
  362. package/prisma/pg/session.cjs.map +1 -1
  363. package/prisma/pg/session.js.map +1 -1
  364. package/prisma/sqlite/session.cjs.map +1 -1
  365. package/prisma/sqlite/session.js.map +1 -1
  366. package/relations.cjs.map +1 -1
  367. package/relations.d.cts +13 -13
  368. package/relations.d.ts +13 -13
  369. package/relations.js.map +1 -1
  370. package/sql-js/session.cjs.map +1 -1
  371. package/sql-js/session.js.map +1 -1
  372. package/sqlite-core/columns/blob.cjs.map +1 -1
  373. package/sqlite-core/columns/blob.d.cts +0 -2
  374. package/sqlite-core/columns/blob.d.ts +0 -2
  375. package/sqlite-core/columns/blob.js.map +1 -1
  376. package/sqlite-core/columns/common.cjs.map +1 -1
  377. package/sqlite-core/columns/common.js.map +1 -1
  378. package/sqlite-core/columns/custom.cjs.map +1 -1
  379. package/sqlite-core/columns/custom.js.map +1 -1
  380. package/sqlite-core/columns/integer.cjs.map +1 -1
  381. package/sqlite-core/columns/integer.js.map +1 -1
  382. package/sqlite-core/columns/numeric.cjs.map +1 -1
  383. package/sqlite-core/columns/numeric.js.map +1 -1
  384. package/sqlite-core/columns/real.cjs.map +1 -1
  385. package/sqlite-core/columns/real.js.map +1 -1
  386. package/sqlite-core/columns/text.cjs.map +1 -1
  387. package/sqlite-core/columns/text.js.map +1 -1
  388. package/sqlite-core/db.d.cts +4 -4
  389. package/sqlite-core/db.d.ts +4 -4
  390. package/sqlite-core/dialect.cjs +25 -15
  391. package/sqlite-core/dialect.cjs.map +1 -1
  392. package/sqlite-core/dialect.d.cts +4 -2
  393. package/sqlite-core/dialect.d.ts +4 -2
  394. package/sqlite-core/dialect.js +25 -15
  395. package/sqlite-core/dialect.js.map +1 -1
  396. package/sqlite-core/query-builders/count.cjs.map +1 -1
  397. package/sqlite-core/query-builders/count.js.map +1 -1
  398. package/sqlite-core/query-builders/delete.cjs +22 -0
  399. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  400. package/sqlite-core/query-builders/delete.d.cts +8 -2
  401. package/sqlite-core/query-builders/delete.d.ts +8 -2
  402. package/sqlite-core/query-builders/delete.js +22 -0
  403. package/sqlite-core/query-builders/delete.js.map +1 -1
  404. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  405. package/sqlite-core/query-builders/insert.d.cts +1 -1
  406. package/sqlite-core/query-builders/insert.d.ts +1 -1
  407. package/sqlite-core/query-builders/insert.js.map +1 -1
  408. package/sqlite-core/query-builders/query-builder.d.cts +4 -4
  409. package/sqlite-core/query-builders/query-builder.d.ts +4 -4
  410. package/sqlite-core/query-builders/query.cjs.map +1 -1
  411. package/sqlite-core/query-builders/query.js.map +1 -1
  412. package/sqlite-core/query-builders/raw.cjs.map +1 -1
  413. package/sqlite-core/query-builders/raw.d.cts +1 -1
  414. package/sqlite-core/query-builders/raw.d.ts +1 -1
  415. package/sqlite-core/query-builders/raw.js.map +1 -1
  416. package/sqlite-core/query-builders/select.cjs.map +1 -1
  417. package/sqlite-core/query-builders/select.js.map +1 -1
  418. package/sqlite-core/query-builders/update.cjs +22 -0
  419. package/sqlite-core/query-builders/update.cjs.map +1 -1
  420. package/sqlite-core/query-builders/update.d.cts +9 -3
  421. package/sqlite-core/query-builders/update.d.ts +9 -3
  422. package/sqlite-core/query-builders/update.js +26 -1
  423. package/sqlite-core/query-builders/update.js.map +1 -1
  424. package/sqlite-core/session.cjs.map +1 -1
  425. package/sqlite-core/session.js.map +1 -1
  426. package/sqlite-core/table.cjs.map +1 -1
  427. package/sqlite-core/table.js.map +1 -1
  428. package/sqlite-core/utils.cjs +2 -3
  429. package/sqlite-core/utils.cjs.map +1 -1
  430. package/sqlite-core/utils.d.cts +1 -5
  431. package/sqlite-core/utils.d.ts +1 -5
  432. package/sqlite-core/utils.js +2 -3
  433. package/sqlite-core/utils.js.map +1 -1
  434. package/sqlite-core/view-base.cjs.map +1 -1
  435. package/sqlite-core/view-base.js.map +1 -1
  436. package/sqlite-core/view.cjs +2 -8
  437. package/sqlite-core/view.cjs.map +1 -1
  438. package/sqlite-core/view.d.cts +1 -2
  439. package/sqlite-core/view.d.ts +1 -2
  440. package/sqlite-core/view.js +2 -8
  441. package/sqlite-core/view.js.map +1 -1
  442. package/sqlite-proxy/driver.cjs.map +1 -1
  443. package/sqlite-proxy/driver.js.map +1 -1
  444. package/sqlite-proxy/session.cjs.map +1 -1
  445. package/sqlite-proxy/session.js.map +1 -1
  446. package/subquery.cjs.map +1 -1
  447. package/subquery.js.map +1 -1
  448. package/tidb-serverless/driver.cjs +26 -1
  449. package/tidb-serverless/driver.cjs.map +1 -1
  450. package/tidb-serverless/driver.d.cts +22 -4
  451. package/tidb-serverless/driver.d.ts +22 -4
  452. package/tidb-serverless/driver.js +26 -1
  453. package/tidb-serverless/driver.js.map +1 -1
  454. package/tidb-serverless/session.cjs.map +1 -1
  455. package/tidb-serverless/session.d.cts +1 -1
  456. package/tidb-serverless/session.d.ts +1 -1
  457. package/tidb-serverless/session.js.map +1 -1
  458. package/utils.cjs.map +1 -1
  459. package/utils.d.cts +2 -0
  460. package/utils.d.ts +2 -0
  461. package/utils.js.map +1 -1
  462. package/vercel-postgres/driver.cjs +17 -8
  463. package/vercel-postgres/driver.cjs.map +1 -1
  464. package/vercel-postgres/driver.d.cts +23 -4
  465. package/vercel-postgres/driver.d.ts +23 -4
  466. package/vercel-postgres/driver.js +18 -9
  467. package/vercel-postgres/driver.js.map +1 -1
  468. package/vercel-postgres/session.cjs +38 -2
  469. package/vercel-postgres/session.cjs.map +1 -1
  470. package/vercel-postgres/session.d.cts +1 -1
  471. package/vercel-postgres/session.d.ts +1 -1
  472. package/vercel-postgres/session.js +39 -2
  473. package/vercel-postgres/session.js.map +1 -1
  474. package/version.cjs +2 -2
  475. package/version.cjs.map +1 -1
  476. package/version.d.cts +2 -2
  477. package/version.d.ts +2 -2
  478. package/version.js +2 -2
  479. package/version.js.map +1 -1
  480. package/xata-http/driver.cjs.map +1 -1
  481. package/xata-http/driver.js.map +1 -1
  482. package/xata-http/session.cjs.map +1 -1
  483. package/xata-http/session.d.cts +1 -1
  484. package/xata-http/session.d.ts +1 -1
  485. package/xata-http/session.js.map +1 -1
  486. package/connect.cjs +0 -25
  487. package/connect.cjs.map +0 -1
  488. package/connect.d.cts +0 -2
  489. package/connect.d.ts +0 -2
  490. package/connect.js +0 -3
  491. package/connect.js.map +0 -1
  492. package/monodriver.cjs +0 -283
  493. package/monodriver.cjs.map +0 -1
  494. package/monodriver.d.cts +0 -194
  495. package/monodriver.d.ts +0 -194
  496. package/monodriver.js +0 -249
  497. package/monodriver.js.map +0 -1
  498. package/monomigrator.cjs +0 -99
  499. package/monomigrator.cjs.map +0 -1
  500. package/monomigrator.d.cts +0 -16
  501. package/monomigrator.d.ts +0 -16
  502. package/monomigrator.js +0 -65
  503. package/monomigrator.js.map +0 -1
package/pglite/driver.cjs CHANGED
@@ -23,6 +23,7 @@ __export(driver_exports, {
23
23
  drizzle: () => drizzle
24
24
  });
25
25
  module.exports = __toCommonJS(driver_exports);
26
+ var import_pglite = require("@electric-sql/pglite");
26
27
  var import_entity = require("../entity.cjs");
27
28
  var import_logger = require("../logger.cjs");
28
29
  var import_db = require("../pg-core/db.cjs");
@@ -43,7 +44,7 @@ class PgliteDriver {
43
44
  class PgliteDatabase extends import_db.PgDatabase {
44
45
  static [import_entity.entityKind] = "PgliteDatabase";
45
46
  }
46
- function drizzle(client, config = {}) {
47
+ function construct(client, config = {}) {
47
48
  const dialect = new import_dialect.PgDialect({ casing: config.casing });
48
49
  let logger;
49
50
  if (config.logger === true) {
@@ -69,6 +70,31 @@ function drizzle(client, config = {}) {
69
70
  db.$client = client;
70
71
  return db;
71
72
  }
73
+ function drizzle(...params) {
74
+ if (params[0] instanceof import_pglite.PGlite) {
75
+ return construct(params[0], params[1]);
76
+ }
77
+ if (typeof params[0] === "object") {
78
+ const { connection, client, ...drizzleConfig } = params[0];
79
+ if (client)
80
+ return construct(client, drizzleConfig);
81
+ if (typeof connection === "object") {
82
+ const { dataDir, ...options } = connection;
83
+ const instance3 = new import_pglite.PGlite(dataDir, options);
84
+ return construct(instance3, drizzleConfig);
85
+ }
86
+ const instance2 = new import_pglite.PGlite(connection);
87
+ return construct(instance2, drizzleConfig);
88
+ }
89
+ const instance = new import_pglite.PGlite(params[0]);
90
+ return construct(instance, params[1]);
91
+ }
92
+ ((drizzle2) => {
93
+ function mock(config) {
94
+ return construct({}, config);
95
+ }
96
+ drizzle2.mock = mock;
97
+ })(drizzle || (drizzle = {}));
72
98
  // Annotate the CommonJS export names for ESM import in node:
73
99
  0 && (module.exports = {
74
100
  PgliteDatabase,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pglite/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { PgliteClient, PgliteQueryResultHKT } from './session.ts';\nimport { PgliteSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteDriver {\n\tstatic readonly [entityKind]: string = 'PgliteDriver';\n\n\tconstructor(\n\t\tprivate client: PgliteClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: PgDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): PgliteSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new PgliteSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class PgliteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<PgliteQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'PgliteDatabase';\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: PgliteClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PgliteDatabase<TSchema> & {\n\t$client: PgliteClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new PgliteDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new PgliteDatabase(dialect, session, schema as any) as PgliteDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAGP,qBAA8B;AAMvB,MAAM,aAAa;AAAA,EAGzB,YACS,QACA,SACA,UAA2B,CAAC,GACnC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,wBAAU,IAAY;AAAA,EASvC,cACC,QACiE;AACjE,WAAO,IAAI,6BAAc,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC5F;AACD;AAEO,MAAM,uBAEH,qBAA0C;AAAA,EACnD,QAAiB,wBAAU,IAAY;AACxC;AAEO,SAAS,QACf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,EAAE,OAAO,CAAC;AAC3D,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,MAAa;AAC7D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/pglite/driver.ts"],"sourcesContent":["import { PGlite, type PGliteOptions } from '@electric-sql/pglite';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport type { PgliteClient, PgliteQueryResultHKT } from './session.ts';\nimport { PgliteSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteDriver {\n\tstatic readonly [entityKind]: string = 'PgliteDriver';\n\n\tconstructor(\n\t\tprivate client: PgliteClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: PgDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): PgliteSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new PgliteSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class PgliteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<PgliteQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteDatabase';\n}\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: PgliteClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PgliteDatabase<TSchema> & {\n\t$client: PgliteClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new PgliteDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new PgliteDatabase(dialect, session, schema as any) as PgliteDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends PGlite = PGlite,\n>(\n\t...params: IfNotImported<\n\t\tPGlite,\n\t\t[ImportTypeError<'@electric-sql/pglite'>],\n\t\t| []\n\t\t| [\n\t\t\tTClient | string,\n\t\t]\n\t\t| [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: (PGliteOptions & { dataDir?: string }) | string;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n\t>\n): PgliteDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof PGlite) {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tif (typeof params[0] === 'object') {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PGliteOptions & { dataDir: string };\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') {\n\t\t\tconst { dataDir, ...options } = connection;\n\n\t\t\tconst instance = new PGlite(dataDir, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new PGlite(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\tconst instance = new PGlite(params[0]);\n\treturn construct(instance, params[1]) 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): PgliteDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2C;AAC3C,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAGP,qBAA8B;AAMvB,MAAM,aAAa;AAAA,EAGzB,YACS,QACA,SACA,UAA2B,CAAC,GACnC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,wBAAU,IAAY;AAAA,EASvC,cACC,QACiE;AACjE,WAAO,IAAI,6BAAc,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC5F;AACD;AAEO,MAAM,uBAEH,qBAA0C;AAAA,EACnD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UACR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,EAAE,OAAO,CAAC;AAC3D,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,MAAa;AAC7D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAwBF;AAED,MAAI,OAAO,CAAC,aAAa,sBAAQ;AAChC,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAKzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,SAAS,GAAG,QAAQ,IAAI;AAEhC,YAAMA,YAAW,IAAI,qBAAO,SAAS,OAAO;AAE5C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAMA,YAAW,IAAI,qBAAO,UAAU;AAEtC,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,qBAAO,OAAO,CAAC,CAAC;AACrC,SAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AACrC;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -1,9 +1,10 @@
1
+ import { PGlite, type PGliteOptions } from '@electric-sql/pglite';
1
2
  import { entityKind } from "../entity.cjs";
2
3
  import type { Logger } from "../logger.cjs";
3
4
  import { PgDatabase } from "../pg-core/db.cjs";
4
5
  import { PgDialect } from "../pg-core/dialect.cjs";
5
6
  import { type RelationalSchemaConfig, type TablesRelationalConfig } from "../relations.cjs";
6
- import type { DrizzleConfig } from "../utils.cjs";
7
+ import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.cjs";
7
8
  import type { PgliteClient, PgliteQueryResultHKT } from "./session.cjs";
8
9
  import { PgliteSession } from "./session.cjs";
9
10
  export interface PgDriverOptions {
@@ -20,6 +21,26 @@ export declare class PgliteDriver {
20
21
  export declare class PgliteDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<PgliteQueryResultHKT, TSchema> {
21
22
  static readonly [entityKind]: string;
22
23
  }
23
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: PgliteClient, config?: DrizzleConfig<TSchema>): PgliteDatabase<TSchema> & {
24
- $client: PgliteClient;
24
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends PGlite = PGlite>(...params: IfNotImported<PGlite, [
25
+ ImportTypeError<'@electric-sql/pglite'>
26
+ ], [] | [
27
+ TClient | string
28
+ ] | [
29
+ TClient | string,
30
+ DrizzleConfig<TSchema>
31
+ ] | [
32
+ (DrizzleConfig<TSchema> & ({
33
+ connection?: (PGliteOptions & {
34
+ dataDir?: string;
35
+ }) | string;
36
+ } | {
37
+ client: TClient;
38
+ }))
39
+ ]>): PgliteDatabase<TSchema> & {
40
+ $client: TClient;
25
41
  };
42
+ export declare namespace drizzle {
43
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PgliteDatabase<TSchema> & {
44
+ $client: '$client is not available on drizzle.mock()';
45
+ };
46
+ }
@@ -1,9 +1,10 @@
1
+ import { PGlite, type PGliteOptions } from '@electric-sql/pglite';
1
2
  import { entityKind } from "../entity.js";
2
3
  import type { Logger } from "../logger.js";
3
4
  import { PgDatabase } from "../pg-core/db.js";
4
5
  import { PgDialect } from "../pg-core/dialect.js";
5
6
  import { type RelationalSchemaConfig, type TablesRelationalConfig } from "../relations.js";
6
- import type { DrizzleConfig } from "../utils.js";
7
+ import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.js";
7
8
  import type { PgliteClient, PgliteQueryResultHKT } from "./session.js";
8
9
  import { PgliteSession } from "./session.js";
9
10
  export interface PgDriverOptions {
@@ -20,6 +21,26 @@ export declare class PgliteDriver {
20
21
  export declare class PgliteDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<PgliteQueryResultHKT, TSchema> {
21
22
  static readonly [entityKind]: string;
22
23
  }
23
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: PgliteClient, config?: DrizzleConfig<TSchema>): PgliteDatabase<TSchema> & {
24
- $client: PgliteClient;
24
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends PGlite = PGlite>(...params: IfNotImported<PGlite, [
25
+ ImportTypeError<'@electric-sql/pglite'>
26
+ ], [] | [
27
+ TClient | string
28
+ ] | [
29
+ TClient | string,
30
+ DrizzleConfig<TSchema>
31
+ ] | [
32
+ (DrizzleConfig<TSchema> & ({
33
+ connection?: (PGliteOptions & {
34
+ dataDir?: string;
35
+ }) | string;
36
+ } | {
37
+ client: TClient;
38
+ }))
39
+ ]>): PgliteDatabase<TSchema> & {
40
+ $client: TClient;
25
41
  };
42
+ export declare namespace drizzle {
43
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PgliteDatabase<TSchema> & {
44
+ $client: '$client is not available on drizzle.mock()';
45
+ };
46
+ }
package/pglite/driver.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { PGlite } from "@electric-sql/pglite";
1
2
  import { entityKind } from "../entity.js";
2
3
  import { DefaultLogger } from "../logger.js";
3
4
  import { PgDatabase } from "../pg-core/db.js";
@@ -21,7 +22,7 @@ class PgliteDriver {
21
22
  class PgliteDatabase extends PgDatabase {
22
23
  static [entityKind] = "PgliteDatabase";
23
24
  }
24
- function drizzle(client, config = {}) {
25
+ function construct(client, config = {}) {
25
26
  const dialect = new PgDialect({ casing: config.casing });
26
27
  let logger;
27
28
  if (config.logger === true) {
@@ -47,6 +48,31 @@ function drizzle(client, config = {}) {
47
48
  db.$client = client;
48
49
  return db;
49
50
  }
51
+ function drizzle(...params) {
52
+ if (params[0] instanceof PGlite) {
53
+ return construct(params[0], params[1]);
54
+ }
55
+ if (typeof params[0] === "object") {
56
+ const { connection, client, ...drizzleConfig } = params[0];
57
+ if (client)
58
+ return construct(client, drizzleConfig);
59
+ if (typeof connection === "object") {
60
+ const { dataDir, ...options } = connection;
61
+ const instance3 = new PGlite(dataDir, options);
62
+ return construct(instance3, drizzleConfig);
63
+ }
64
+ const instance2 = new PGlite(connection);
65
+ return construct(instance2, drizzleConfig);
66
+ }
67
+ const instance = new PGlite(params[0]);
68
+ return construct(instance, params[1]);
69
+ }
70
+ ((drizzle2) => {
71
+ function mock(config) {
72
+ return construct({}, config);
73
+ }
74
+ drizzle2.mock = mock;
75
+ })(drizzle || (drizzle = {}));
50
76
  export {
51
77
  PgliteDatabase,
52
78
  PgliteDriver,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pglite/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { PgliteClient, PgliteQueryResultHKT } from './session.ts';\nimport { PgliteSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteDriver {\n\tstatic readonly [entityKind]: string = 'PgliteDriver';\n\n\tconstructor(\n\t\tprivate client: PgliteClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: PgDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): PgliteSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new PgliteSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class PgliteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<PgliteQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'PgliteDatabase';\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: PgliteClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PgliteDatabase<TSchema> & {\n\t$client: PgliteClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new PgliteDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new PgliteDatabase(dialect, session, schema as any) as PgliteDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,qBAAqB;AAMvB,MAAM,aAAa;AAAA,EAGzB,YACS,QACA,SACA,UAA2B,CAAC,GACnC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,UAAU,IAAY;AAAA,EASvC,cACC,QACiE;AACjE,WAAO,IAAI,cAAc,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC5F;AACD;AAEO,MAAM,uBAEH,WAA0C;AAAA,EACnD,QAAiB,UAAU,IAAY;AACxC;AAEO,SAAS,QACf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,EAAE,OAAO,CAAC;AAC3D,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,MAAa;AAC7D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/pglite/driver.ts"],"sourcesContent":["import { PGlite, type PGliteOptions } from '@electric-sql/pglite';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport type { PgliteClient, PgliteQueryResultHKT } from './session.ts';\nimport { PgliteSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteDriver {\n\tstatic readonly [entityKind]: string = 'PgliteDriver';\n\n\tconstructor(\n\t\tprivate client: PgliteClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: PgDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): PgliteSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new PgliteSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class PgliteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<PgliteQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteDatabase';\n}\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: PgliteClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PgliteDatabase<TSchema> & {\n\t$client: PgliteClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new PgliteDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new PgliteDatabase(dialect, session, schema as any) as PgliteDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends PGlite = PGlite,\n>(\n\t...params: IfNotImported<\n\t\tPGlite,\n\t\t[ImportTypeError<'@electric-sql/pglite'>],\n\t\t| []\n\t\t| [\n\t\t\tTClient | string,\n\t\t]\n\t\t| [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: (PGliteOptions & { dataDir?: string }) | string;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n\t>\n): PgliteDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof PGlite) {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tif (typeof params[0] === 'object') {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PGliteOptions & { dataDir: string };\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') {\n\t\t\tconst { dataDir, ...options } = connection;\n\n\t\t\tconst instance = new PGlite(dataDir, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new PGlite(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\tconst instance = new PGlite(params[0]);\n\treturn construct(instance, params[1]) 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): PgliteDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AAAA,SAAS,cAAkC;AAC3C,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,qBAAqB;AAMvB,MAAM,aAAa;AAAA,EAGzB,YACS,QACA,SACA,UAA2B,CAAC,GACnC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,UAAU,IAAY;AAAA,EASvC,cACC,QACiE;AACjE,WAAO,IAAI,cAAc,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC5F;AACD;AAEO,MAAM,uBAEH,WAA0C;AAAA,EACnD,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UACR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,EAAE,OAAO,CAAC;AAC3D,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,MAAa;AAC7D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAwBF;AAED,MAAI,OAAO,CAAC,aAAa,QAAQ;AAChC,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAKzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,SAAS,GAAG,QAAQ,IAAI;AAEhC,YAAMA,YAAW,IAAI,OAAO,SAAS,OAAO;AAE5C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAMA,YAAW,IAAI,OAAO,UAAU;AAEtC,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,OAAO,OAAO,CAAC,CAAC;AACrC,SAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AACrC;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pglite/session.ts"],"sourcesContent":["import type { PGlite, QueryOptions, Results, Row, Transaction } from '@electric-sql/pglite';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nimport { types } from '@electric-sql/pglite';\n\nexport type PgliteClient = PGlite;\n\nexport class PglitePreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'PglitePreparedQuery';\n\n\tprivate rawQueryConfig: QueryOptions;\n\tprivate queryConfig: QueryOptions;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\trowMode: 'object',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\trowMode: 'array',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst { fields, rawQueryConfig, client, queryConfig, joinsNotNullableMap, customResultMapper, queryString } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn client.query<any[]>(queryString, params, rawQueryConfig);\n\t\t}\n\n\t\tconst result = await client.query<any[][]>(queryString, params, queryConfig);\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.queryString, params);\n\t\treturn this.client.query(this.queryString, params, this.rawQueryConfig).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface PgliteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'PgliteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PgliteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new PglitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\treturn (this.client as PgliteClient).transaction(async (client) => {\n\t\t\tconst session = new PgliteSession<TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new PgliteTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class PgliteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'PgliteTransaction';\n\n\toverride async transaction<T>(transaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PgliteTransaction<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 PgliteQueryResultHKT extends PgQueryResultHKT {\n\ttype: Results<Assume<this['row'], Row>>;\n}\n"],"mappings":"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","names":["sql"]}
1
+ {"version":3,"sources":["../../src/pglite/session.ts"],"sourcesContent":["import type { PGlite, QueryOptions, Results, Row, Transaction } from '@electric-sql/pglite';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nimport { types } from '@electric-sql/pglite';\n\nexport type PgliteClient = PGlite;\n\nexport class PglitePreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PglitePreparedQuery';\n\n\tprivate rawQueryConfig: QueryOptions;\n\tprivate queryConfig: QueryOptions;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\trowMode: 'object',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\trowMode: 'array',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst { fields, rawQueryConfig, client, queryConfig, joinsNotNullableMap, customResultMapper, queryString } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn client.query<any[]>(queryString, params, rawQueryConfig);\n\t\t}\n\n\t\tconst result = await client.query<any[][]>(queryString, params, queryConfig);\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.queryString, params);\n\t\treturn this.client.query(this.queryString, params, this.rawQueryConfig).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface PgliteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PgliteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new PglitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\treturn (this.client as PgliteClient).transaction(async (client) => {\n\t\t\tconst session = new PgliteSession<TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new PgliteTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class PgliteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteTransaction';\n\n\toverride async transaction<T>(transaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PgliteTransaction<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 PgliteQueryResultHKT extends PgQueryResultHKT {\n\ttype: Results<Assume<this['row'], Row>>;\n}\n"],"mappings":"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","names":["sql"]}
@@ -21,7 +21,7 @@ export declare class PglitePreparedQuery<T extends PreparedQueryConfig> extends
21
21
  static readonly [entityKind]: string;
22
22
  private rawQueryConfig;
23
23
  private queryConfig;
24
- constructor(client: PgliteClient | Transaction, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T['execute']) | undefined);
24
+ constructor(client: PgliteClient | Transaction, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
25
25
  execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
26
26
  all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
27
27
  }
@@ -21,7 +21,7 @@ export declare class PglitePreparedQuery<T extends PreparedQueryConfig> extends
21
21
  static readonly [entityKind]: string;
22
22
  private rawQueryConfig;
23
23
  private queryConfig;
24
- constructor(client: PgliteClient | Transaction, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T['execute']) | undefined);
24
+ constructor(client: PgliteClient | Transaction, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
25
25
  execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
26
26
  all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pglite/session.ts"],"sourcesContent":["import type { PGlite, QueryOptions, Results, Row, Transaction } from '@electric-sql/pglite';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nimport { types } from '@electric-sql/pglite';\n\nexport type PgliteClient = PGlite;\n\nexport class PglitePreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'PglitePreparedQuery';\n\n\tprivate rawQueryConfig: QueryOptions;\n\tprivate queryConfig: QueryOptions;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\trowMode: 'object',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\trowMode: 'array',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst { fields, rawQueryConfig, client, queryConfig, joinsNotNullableMap, customResultMapper, queryString } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn client.query<any[]>(queryString, params, rawQueryConfig);\n\t\t}\n\n\t\tconst result = await client.query<any[][]>(queryString, params, queryConfig);\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.queryString, params);\n\t\treturn this.client.query(this.queryString, params, this.rawQueryConfig).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface PgliteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'PgliteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PgliteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new PglitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\treturn (this.client as PgliteClient).transaction(async (client) => {\n\t\t\tconst session = new PgliteSession<TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new PgliteTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class PgliteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'PgliteTransaction';\n\n\toverride async transaction<T>(transaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PgliteTransaction<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 PgliteQueryResultHKT extends PgQueryResultHKT {\n\ttype: Results<Assume<this['row'], Row>>;\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAC3B,SAAsB,kBAAkB;AAExC,SAAS,qBAAqB;AAG9B,SAAS,iBAAiB,iBAAiB;AAE3C,SAAS,kBAAwC,WAAW;AAC5D,SAAsB,oBAAoB;AAE1C,SAAS,aAAa;AAIf,MAAM,4BAA2D,gBAAmB;AAAA,EAM1F,YACS,QACA,aACA,QACA,QACA,QACR,MACQ,wBACA,oBACP;AACD,UAAM,EAAE,KAAK,aAAa,OAAO,CAAC;AAT1B;AACA;AACA;AACA;AACA;AAEA;AACA;AAGR,SAAK,iBAAiB;AAAA,MACrB,SAAS;AAAA,MACT,SAAS;AAAA,QACR,CAAC,MAAM,SAAS,GAAG,CAAC,UAAU;AAAA,QAC9B,CAAC,MAAM,WAAW,GAAG,CAAC,UAAU;AAAA,QAChC,CAAC,MAAM,QAAQ,GAAG,CAAC,UAAU;AAAA,QAC7B,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU;AAAA,MAC1B;AAAA,IACD;AACA,SAAK,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,SAAS;AAAA,QACR,CAAC,MAAM,SAAS,GAAG,CAAC,UAAU;AAAA,QAC9B,CAAC,MAAM,WAAW,GAAG,CAAC,UAAU;AAAA,QAChC,CAAC,MAAM,QAAQ,GAAG,CAAC,UAAU;AAAA,QAC7B,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU;AAAA,MAC1B;AAAA,IACD;AAAA,EACD;AAAA,EAlCA,QAAiB,UAAU,IAAY;AAAA,EAE/B;AAAA,EACA;AAAA,EAiCR,MAAM,QAAQ,oBAAyD,CAAC,GAA0B;AACjG,UAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAE9D,SAAK,OAAO,SAAS,KAAK,aAAa,MAAM;AAE7C,UAAM,EAAE,QAAQ,gBAAgB,QAAQ,aAAa,qBAAqB,oBAAoB,YAAY,IAAI;AAE9G,QAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,aAAO,OAAO,MAAa,aAAa,QAAQ,cAAc;AAAA,IAC/D;AAEA,UAAM,SAAS,MAAM,OAAO,MAAe,aAAa,QAAQ,WAAW;AAE3E,WAAO,qBACJ,mBAAmB,OAAO,IAAI,IAC9B,OAAO,KAAK,IAAI,CAAC,QAAQ,aAA2B,QAAS,KAAK,mBAAmB,CAAC;AAAA,EAC1F;AAAA,EAEA,IAAI,oBAAyD,CAAC,GAAsB;AACnF,UAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAC9D,SAAK,OAAO,SAAS,KAAK,aAAa,MAAM;AAC7C,WAAO,KAAK,OAAO,MAAM,KAAK,aAAa,QAAQ,KAAK,cAAc,EAAE,KAAK,CAAC,WAAW,OAAO,IAAI;AAAA,EACrG;AAAA;AAAA,EAGA,wBAAiC;AAChC,WAAO,KAAK;AAAA,EACb;AACD;AAMO,MAAM,sBAGH,UAAsD;AAAA,EAK/D,YACS,QACR,SACQ,QACA,UAAgC,CAAC,GACxC;AACD,UAAM,OAAO;AALL;AAEA;AACA;AAGR,SAAK,SAAS,QAAQ,UAAU,IAAI,WAAW;AAAA,EAChD;AAAA,EAZA,QAAiB,UAAU,IAAY;AAAA,EAE/B;AAAA,EAYR,aACC,OACA,QACA,MACA,uBACA,oBACqB;AACrB,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAe,YACd,aACA,QACa;AACb,WAAQ,KAAK,OAAwB,YAAY,OAAO,WAAW;AAClE,YAAM,UAAU,IAAI;AAAA,QACnB;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AACA,YAAM,KAAK,IAAI,kBAAwC,KAAK,SAAS,SAAS,KAAK,MAAM;AACzF,UAAI,QAAQ;AACX,cAAM,GAAG,eAAe,MAAM;AAAA,MAC/B;AACA,aAAO,YAAY,EAAE;AAAA,IACtB,CAAC;AAAA,EACF;AAAA,EAEA,MAAe,MAAMA,MAA2B;AAC/C,UAAM,MAAM,MAAM,KAAK,QAAuCA,IAAG;AACjE,WAAO;AAAA,MACN,IAAI,MAAM,EAAE,CAAC,EAAE,OAAO;AAAA,IACvB;AAAA,EACD;AACD;AAEO,MAAM,0BAGH,cAA0D;AAAA,EACnE,QAAiB,UAAU,IAAY;AAAA,EAEvC,MAAe,YAAe,aAAsF;AACnH,UAAM,gBAAgB,KAAK,KAAK,cAAc,CAAC;AAC/C,UAAM,KAAK,IAAI;AAAA,MACd,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,cAAc;AAAA,IACpB;AACA,UAAM,GAAG,QAAQ,IAAI,IAAI,aAAa,aAAa,EAAE,CAAC;AACtD,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,GAAG,QAAQ,IAAI,IAAI,qBAAqB,aAAa,EAAE,CAAC;AAC9D,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,GAAG,QAAQ,IAAI,IAAI,yBAAyB,aAAa,EAAE,CAAC;AAClE,YAAM;AAAA,IACP;AAAA,EACD;AACD;","names":["sql"]}
1
+ {"version":3,"sources":["../../src/pglite/session.ts"],"sourcesContent":["import type { PGlite, QueryOptions, Results, Row, Transaction } from '@electric-sql/pglite';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nimport { types } from '@electric-sql/pglite';\n\nexport type PgliteClient = PGlite;\n\nexport class PglitePreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PglitePreparedQuery';\n\n\tprivate rawQueryConfig: QueryOptions;\n\tprivate queryConfig: QueryOptions;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\trowMode: 'object',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\trowMode: 'array',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst { fields, rawQueryConfig, client, queryConfig, joinsNotNullableMap, customResultMapper, queryString } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn client.query<any[]>(queryString, params, rawQueryConfig);\n\t\t}\n\n\t\tconst result = await client.query<any[][]>(queryString, params, queryConfig);\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.queryString, params);\n\t\treturn this.client.query(this.queryString, params, this.rawQueryConfig).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface PgliteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PgliteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new PglitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\treturn (this.client as PgliteClient).transaction(async (client) => {\n\t\t\tconst session = new PgliteSession<TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new PgliteTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class PgliteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteTransaction';\n\n\toverride async transaction<T>(transaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PgliteTransaction<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 PgliteQueryResultHKT extends PgQueryResultHKT {\n\ttype: Results<Assume<this['row'], Row>>;\n}\n"],"mappings":"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","names":["sql"]}
@@ -32,7 +32,7 @@ var import_session = require("./session.cjs");
32
32
  class PlanetScaleDatabase extends import_db.MySqlDatabase {
33
33
  static [import_entity.entityKind] = "PlanetScaleDatabase";
34
34
  }
35
- function drizzle(client, config = {}) {
35
+ function construct(client, config = {}) {
36
36
  if (!(client instanceof import_database.Client)) {
37
37
  console.log(`Warning: You need to pass an instance of Client:
38
38
 
@@ -74,6 +74,32 @@ Please make the necessary changes now to prevent any runtime errors in the futur
74
74
  db.$client = client;
75
75
  return db;
76
76
  }
77
+ function drizzle(...params) {
78
+ if (params[0] instanceof import_database.Client) {
79
+ return construct(params[0], params[1]);
80
+ }
81
+ if (typeof params[0] === "object") {
82
+ const { connection, client, ...drizzleConfig } = params[0];
83
+ if (client)
84
+ return construct(client, drizzleConfig);
85
+ const instance2 = typeof connection === "string" ? new import_database.Client({
86
+ url: connection
87
+ }) : new import_database.Client(
88
+ connection
89
+ );
90
+ return construct(instance2, drizzleConfig);
91
+ }
92
+ const instance = new import_database.Client({
93
+ url: params[0]
94
+ });
95
+ return construct(instance, params[1]);
96
+ }
97
+ ((drizzle2) => {
98
+ function mock(config) {
99
+ return construct({}, config);
100
+ }
101
+ drizzle2.mock = mock;
102
+ })(drizzle || (drizzle = {}));
77
103
  // Annotate the CommonJS export names for ESM import in node:
78
104
  0 && (module.exports = {
79
105
  PlanetScaleDatabase,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Connection } 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 } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client | Connection = Client | Connection,\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\t// Should use error on 0.30.0 release\n\t\t// \t\tthrow new DrizzleError({\n\t\t// \t\t\tmessage: `You need to pass an instance of Client:\n\n\t\t// import { Client } from \"@planetscale/database\";\n\n\t\t// const client = new Client({\n\t\t// host: process.env[\"DATABASE_HOST\"],\n\t\t// username: process.env[\"DATABASE_USERNAME\"],\n\t\t// password: process.env[\"DATABASE_PASSWORD\"],\n\t\t// });\n\n\t\t// const db = drizzle(client);\n\t\t// `,\n\t\t// \t\t});\n\t\tconsole.log(`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\nStarting from version 0.30.0, you will encounter an error if you attempt to use anything other than a Client instance.\\nPlease make the necessary changes now to prevent any runtime errors in the future\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 });\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAuB;AACvB,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA8B;AAC9B,qBAA6B;AAC7B,uBAKO;AAGP,qBAAmC;AAM5B,MAAM,4BAEH,wBAA+E;AAAA,EACxF,QAAiB,wBAAU,IAAY;AACxC;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AAGD,MAAI,EAAE,kBAAkB,yBAAS;AAgBhC,YAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAaX;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,4BAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,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,kCAAmB,QAAQ,SAAS,QAAW,QAAQ,EAAE,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,aAAa;AACjF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config, Connection } 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, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\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 | Connection = Client | Connection,\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\t// Should use error on 0.30.0 release\n\t\t// \t\tthrow new DrizzleError({\n\t\t// \t\t\tmessage: `You need to pass an instance of Client:\n\n\t\t// import { Client } from \"@planetscale/database\";\n\n\t\t// const client = new Client({\n\t\t// host: process.env[\"DATABASE_HOST\"],\n\t\t// username: process.env[\"DATABASE_USERNAME\"],\n\t\t// password: process.env[\"DATABASE_PASSWORD\"],\n\t\t// });\n\n\t\t// const db = drizzle(client);\n\t\t// `,\n\t\t// \t\t});\n\t\tconsole.log(`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\nStarting from version 0.30.0, you will encounter an error if you attempt to use anything other than a Client instance.\\nPlease make the necessary changes now to prevent any runtime errors in the future\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 });\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\t...params: IfNotImported<\n\t\tConfig,\n\t\t[ImportTypeError<'@planetscale/database'>],\n\t\t[\n\t\t\tTClient | string,\n\t\t] | [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t] | [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection: string | Config;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n\t>\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof Client) {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tif (typeof params[0] === 'object') {\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\tconst instance = new Client({\n\t\turl: params[0],\n\t});\n\n\treturn construct(instance, params[1]) 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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAuB;AACvB,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA8B;AAC9B,qBAA6B;AAC7B,uBAKO;AAGP,qBAAmC;AAM5B,MAAM,4BAEH,wBAA+E;AAAA,EACxF,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AAGD,MAAI,EAAE,kBAAkB,yBAAS;AAgBhC,YAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAaX;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,4BAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,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,kCAAmB,QAAQ,SAAS,QAAW,QAAQ,EAAE,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,aAAa;AACjF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAqBF;AAED,MAAI,OAAO,CAAC,aAAa,wBAAQ;AAChC,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAMA,YAAW,OAAO,eAAe,WACpC,IAAI,uBAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,uBAAO;AAAA,IAC3B,KAAK,OAAO,CAAC;AAAA,EACd,CAAC;AAED,SAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AACrC;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -1,9 +1,9 @@
1
- import type { Connection } from '@planetscale/database';
1
+ import type { Config } from '@planetscale/database';
2
2
  import { Client } from '@planetscale/database';
3
3
  import { entityKind } from "../entity.cjs";
4
4
  import type { Logger } from "../logger.cjs";
5
5
  import { MySqlDatabase } from "../mysql-core/db.cjs";
6
- import type { DrizzleConfig } from "../utils.cjs";
6
+ import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.cjs";
7
7
  import type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from "./session.cjs";
8
8
  export interface PlanetscaleSDriverOptions {
9
9
  logger?: Logger;
@@ -11,6 +11,24 @@ export interface PlanetscaleSDriverOptions {
11
11
  export declare class PlanetScaleDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {
12
12
  static readonly [entityKind]: string;
13
13
  }
14
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client | Connection = Client | Connection>(client: TClient, config?: DrizzleConfig<TSchema>): PlanetScaleDatabase<TSchema> & {
14
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client = Client>(...params: IfNotImported<Config, [
15
+ ImportTypeError<'@planetscale/database'>
16
+ ], [
17
+ TClient | string
18
+ ] | [
19
+ TClient | string,
20
+ DrizzleConfig<TSchema>
21
+ ] | [
22
+ (DrizzleConfig<TSchema> & ({
23
+ connection: string | Config;
24
+ } | {
25
+ client: TClient;
26
+ }))
27
+ ]>): PlanetScaleDatabase<TSchema> & {
15
28
  $client: TClient;
16
29
  };
30
+ export declare namespace drizzle {
31
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PlanetScaleDatabase<TSchema> & {
32
+ $client: '$client is not available on drizzle.mock()';
33
+ };
34
+ }
@@ -1,9 +1,9 @@
1
- import type { Connection } from '@planetscale/database';
1
+ import type { Config } from '@planetscale/database';
2
2
  import { Client } from '@planetscale/database';
3
3
  import { entityKind } from "../entity.js";
4
4
  import type { Logger } from "../logger.js";
5
5
  import { MySqlDatabase } from "../mysql-core/db.js";
6
- import type { DrizzleConfig } from "../utils.js";
6
+ import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.js";
7
7
  import type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from "./session.js";
8
8
  export interface PlanetscaleSDriverOptions {
9
9
  logger?: Logger;
@@ -11,6 +11,24 @@ export interface PlanetscaleSDriverOptions {
11
11
  export declare class PlanetScaleDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {
12
12
  static readonly [entityKind]: string;
13
13
  }
14
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client | Connection = Client | Connection>(client: TClient, config?: DrizzleConfig<TSchema>): PlanetScaleDatabase<TSchema> & {
14
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client = Client>(...params: IfNotImported<Config, [
15
+ ImportTypeError<'@planetscale/database'>
16
+ ], [
17
+ TClient | string
18
+ ] | [
19
+ TClient | string,
20
+ DrizzleConfig<TSchema>
21
+ ] | [
22
+ (DrizzleConfig<TSchema> & ({
23
+ connection: string | Config;
24
+ } | {
25
+ client: TClient;
26
+ }))
27
+ ]>): PlanetScaleDatabase<TSchema> & {
15
28
  $client: TClient;
16
29
  };
30
+ export declare namespace drizzle {
31
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PlanetScaleDatabase<TSchema> & {
32
+ $client: '$client is not available on drizzle.mock()';
33
+ };
34
+ }
@@ -11,7 +11,7 @@ import { PlanetscaleSession } from "./session.js";
11
11
  class PlanetScaleDatabase extends MySqlDatabase {
12
12
  static [entityKind] = "PlanetScaleDatabase";
13
13
  }
14
- function drizzle(client, config = {}) {
14
+ function construct(client, config = {}) {
15
15
  if (!(client instanceof Client)) {
16
16
  console.log(`Warning: You need to pass an instance of Client:
17
17
 
@@ -53,6 +53,32 @@ Please make the necessary changes now to prevent any runtime errors in the futur
53
53
  db.$client = client;
54
54
  return db;
55
55
  }
56
+ function drizzle(...params) {
57
+ if (params[0] instanceof Client) {
58
+ return construct(params[0], params[1]);
59
+ }
60
+ if (typeof params[0] === "object") {
61
+ const { connection, client, ...drizzleConfig } = params[0];
62
+ if (client)
63
+ return construct(client, drizzleConfig);
64
+ const instance2 = typeof connection === "string" ? new Client({
65
+ url: connection
66
+ }) : new Client(
67
+ connection
68
+ );
69
+ return construct(instance2, drizzleConfig);
70
+ }
71
+ const instance = new Client({
72
+ url: params[0]
73
+ });
74
+ return construct(instance, params[1]);
75
+ }
76
+ ((drizzle2) => {
77
+ function mock(config) {
78
+ return construct({}, config);
79
+ }
80
+ drizzle2.mock = mock;
81
+ })(drizzle || (drizzle = {}));
56
82
  export {
57
83
  PlanetScaleDatabase,
58
84
  drizzle
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Connection } 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 } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client | Connection = Client | Connection,\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\t// Should use error on 0.30.0 release\n\t\t// \t\tthrow new DrizzleError({\n\t\t// \t\t\tmessage: `You need to pass an instance of Client:\n\n\t\t// import { Client } from \"@planetscale/database\";\n\n\t\t// const client = new Client({\n\t\t// host: process.env[\"DATABASE_HOST\"],\n\t\t// username: process.env[\"DATABASE_USERNAME\"],\n\t\t// password: process.env[\"DATABASE_PASSWORD\"],\n\t\t// });\n\n\t\t// const db = drizzle(client);\n\t\t// `,\n\t\t// \t\t});\n\t\tconsole.log(`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\nStarting from version 0.30.0, you will encounter an error if you attempt to use anything other than a Client instance.\\nPlease make the necessary changes now to prevent any runtime errors in the future\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 });\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\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;AAGP,SAAS,0BAA0B;AAM5B,MAAM,4BAEH,cAA+E;AAAA,EACxF,QAAiB,UAAU,IAAY;AACxC;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AAGD,MAAI,EAAE,kBAAkB,SAAS;AAgBhC,YAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAaX;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,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,aAAa;AACjF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config, Connection } 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, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\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 | Connection = Client | Connection,\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\t// Should use error on 0.30.0 release\n\t\t// \t\tthrow new DrizzleError({\n\t\t// \t\t\tmessage: `You need to pass an instance of Client:\n\n\t\t// import { Client } from \"@planetscale/database\";\n\n\t\t// const client = new Client({\n\t\t// host: process.env[\"DATABASE_HOST\"],\n\t\t// username: process.env[\"DATABASE_USERNAME\"],\n\t\t// password: process.env[\"DATABASE_PASSWORD\"],\n\t\t// });\n\n\t\t// const db = drizzle(client);\n\t\t// `,\n\t\t// \t\t});\n\t\tconsole.log(`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\nStarting from version 0.30.0, you will encounter an error if you attempt to use anything other than a Client instance.\\nPlease make the necessary changes now to prevent any runtime errors in the future\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 });\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\t...params: IfNotImported<\n\t\tConfig,\n\t\t[ImportTypeError<'@planetscale/database'>],\n\t\t[\n\t\t\tTClient | string,\n\t\t] | [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t] | [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection: string | Config;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n\t>\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof Client) {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tif (typeof params[0] === 'object') {\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\tconst instance = new Client({\n\t\turl: params[0],\n\t});\n\n\treturn construct(instance, params[1]) 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;AAGP,SAAS,0BAA0B;AAM5B,MAAM,4BAEH,cAA+E;AAAA,EACxF,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AAGD,MAAI,EAAE,kBAAkB,SAAS;AAgBhC,YAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAaX;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,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,aAAa;AACjF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAqBF;AAED,MAAI,OAAO,CAAC,aAAa,QAAQ;AAChC,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAMA,YAAW,OAAO,eAAe,WACpC,IAAI,OAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,OAAO;AAAA,IAC3B,KAAK,OAAO,CAAC;AAAA,EACd,CAAC;AAED,SAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AACrC;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}