drizzle-orm 1.0.0-beta.22 → 1.0.0-beta.22-3f96465

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 (2069) hide show
  1. package/_relations.cjs.map +1 -1
  2. package/_relations.d.cts +2 -13
  3. package/_relations.d.ts +2 -13
  4. package/_relations.js.map +1 -1
  5. package/aws-data-api/common/index.cjs +2 -0
  6. package/aws-data-api/common/index.cjs.map +1 -1
  7. package/aws-data-api/common/index.d.cts +1 -1
  8. package/aws-data-api/common/index.d.ts +1 -1
  9. package/aws-data-api/common/index.js +2 -0
  10. package/aws-data-api/common/index.js.map +1 -1
  11. package/aws-data-api/pg/driver.cjs +126 -20
  12. package/aws-data-api/pg/driver.cjs.map +1 -1
  13. package/aws-data-api/pg/driver.d.cts +17 -13
  14. package/aws-data-api/pg/driver.d.ts +16 -12
  15. package/aws-data-api/pg/driver.js +126 -20
  16. package/aws-data-api/pg/driver.js.map +1 -1
  17. package/aws-data-api/pg/index.cjs +1 -1
  18. package/aws-data-api/pg/index.d.cts +3 -3
  19. package/aws-data-api/pg/index.d.ts +3 -3
  20. package/aws-data-api/pg/index.js +3 -3
  21. package/aws-data-api/pg/migrator.cjs.map +1 -1
  22. package/aws-data-api/pg/migrator.d.cts +1 -1
  23. package/aws-data-api/pg/migrator.d.ts +1 -1
  24. package/aws-data-api/pg/migrator.js.map +1 -1
  25. package/aws-data-api/pg/session.cjs +44 -113
  26. package/aws-data-api/pg/session.cjs.map +1 -1
  27. package/aws-data-api/pg/session.d.cts +13 -43
  28. package/aws-data-api/pg/session.d.ts +12 -42
  29. package/aws-data-api/pg/session.js +46 -114
  30. package/aws-data-api/pg/session.js.map +1 -1
  31. package/better-sqlite3/driver.cjs +6 -3
  32. package/better-sqlite3/driver.cjs.map +1 -1
  33. package/better-sqlite3/driver.d.ts +1 -1
  34. package/better-sqlite3/driver.js +6 -3
  35. package/better-sqlite3/driver.js.map +1 -1
  36. package/better-sqlite3/session.cjs +15 -14
  37. package/better-sqlite3/session.cjs.map +1 -1
  38. package/better-sqlite3/session.d.cts +13 -9
  39. package/better-sqlite3/session.d.ts +16 -12
  40. package/better-sqlite3/session.js +19 -18
  41. package/better-sqlite3/session.js.map +1 -1
  42. package/bun-sql/driver.cjs.map +1 -1
  43. package/bun-sql/driver.d.cts +7 -6
  44. package/bun-sql/driver.d.ts +7 -6
  45. package/bun-sql/driver.js.map +1 -1
  46. package/bun-sql/index.cjs +0 -1
  47. package/bun-sql/index.d.cts +2 -2
  48. package/bun-sql/index.d.ts +2 -2
  49. package/bun-sql/index.js +2 -2
  50. package/bun-sql/migrator.cjs.map +1 -1
  51. package/bun-sql/migrator.d.cts +2 -2
  52. package/bun-sql/migrator.d.ts +2 -2
  53. package/bun-sql/migrator.js.map +1 -1
  54. package/bun-sql/mysql/driver.cjs +5 -4
  55. package/bun-sql/mysql/driver.cjs.map +1 -1
  56. package/bun-sql/mysql/driver.js +4 -3
  57. package/bun-sql/mysql/driver.js.map +1 -1
  58. package/bun-sql/mysql/session.cjs +36 -23
  59. package/bun-sql/mysql/session.cjs.map +1 -1
  60. package/bun-sql/mysql/session.d.cts +10 -4
  61. package/bun-sql/mysql/session.d.ts +11 -5
  62. package/bun-sql/mysql/session.js +37 -24
  63. package/bun-sql/mysql/session.js.map +1 -1
  64. package/bun-sql/postgres/driver.cjs +166 -18
  65. package/bun-sql/postgres/driver.cjs.map +1 -1
  66. package/bun-sql/postgres/driver.d.cts +10 -6
  67. package/bun-sql/postgres/driver.d.ts +10 -6
  68. package/bun-sql/postgres/driver.js +166 -18
  69. package/bun-sql/postgres/driver.js.map +1 -1
  70. package/bun-sql/postgres/index.cjs +1 -1
  71. package/bun-sql/postgres/index.d.cts +3 -3
  72. package/bun-sql/postgres/index.d.ts +3 -3
  73. package/bun-sql/postgres/index.js +3 -3
  74. package/bun-sql/postgres/migrator.cjs.map +1 -1
  75. package/bun-sql/postgres/migrator.d.cts +1 -1
  76. package/bun-sql/postgres/migrator.d.ts +1 -1
  77. package/bun-sql/postgres/migrator.js.map +1 -1
  78. package/bun-sql/postgres/session.cjs +16 -111
  79. package/bun-sql/postgres/session.cjs.map +1 -1
  80. package/bun-sql/postgres/session.d.cts +11 -34
  81. package/bun-sql/postgres/session.d.ts +9 -32
  82. package/bun-sql/postgres/session.js +17 -111
  83. package/bun-sql/postgres/session.js.map +1 -1
  84. package/bun-sql/session.cjs +0 -1
  85. package/bun-sql/session.d.cts +2 -2
  86. package/bun-sql/session.d.ts +2 -2
  87. package/bun-sql/session.js +2 -2
  88. package/bun-sql/sqlite/driver.cjs +5 -4
  89. package/bun-sql/sqlite/driver.cjs.map +1 -1
  90. package/bun-sql/sqlite/driver.d.ts +1 -1
  91. package/bun-sql/sqlite/driver.js +4 -3
  92. package/bun-sql/sqlite/driver.js.map +1 -1
  93. package/bun-sql/sqlite/session.cjs +17 -16
  94. package/bun-sql/sqlite/session.cjs.map +1 -1
  95. package/bun-sql/sqlite/session.d.cts +12 -9
  96. package/bun-sql/sqlite/session.d.ts +15 -12
  97. package/bun-sql/sqlite/session.js +21 -20
  98. package/bun-sql/sqlite/session.js.map +1 -1
  99. package/bun-sqlite/driver.cjs +6 -3
  100. package/bun-sqlite/driver.cjs.map +1 -1
  101. package/bun-sqlite/driver.d.ts +1 -1
  102. package/bun-sqlite/driver.js +6 -3
  103. package/bun-sqlite/driver.js.map +1 -1
  104. package/bun-sqlite/session.cjs +15 -14
  105. package/bun-sqlite/session.cjs.map +1 -1
  106. package/bun-sqlite/session.d.cts +13 -9
  107. package/bun-sqlite/session.d.ts +16 -12
  108. package/bun-sqlite/session.js +19 -18
  109. package/bun-sqlite/session.js.map +1 -1
  110. package/cache/core/cache-effect.d.cts +1 -1
  111. package/cache/core/cache-effect.d.ts +1 -1
  112. package/cache/upstash/cache.d.cts +1 -1
  113. package/cache/upstash/cache.d.ts +1 -1
  114. package/casing.cjs +5 -38
  115. package/casing.cjs.map +1 -1
  116. package/casing.d.cts +3 -14
  117. package/casing.d.ts +3 -14
  118. package/casing.js +5 -38
  119. package/casing.js.map +1 -1
  120. package/cockroach/driver.cjs +10 -4
  121. package/cockroach/driver.cjs.map +1 -1
  122. package/cockroach/driver.d.cts +1 -0
  123. package/cockroach/driver.d.ts +2 -1
  124. package/cockroach/driver.js +10 -4
  125. package/cockroach/driver.js.map +1 -1
  126. package/cockroach/session.cjs +7 -9
  127. package/cockroach/session.cjs.map +1 -1
  128. package/cockroach/session.d.cts +5 -3
  129. package/cockroach/session.d.ts +6 -4
  130. package/cockroach/session.js +8 -10
  131. package/cockroach/session.js.map +1 -1
  132. package/cockroach-core/casing.cjs +27 -0
  133. package/cockroach-core/casing.cjs.map +1 -0
  134. package/cockroach-core/casing.d.cts +20 -0
  135. package/cockroach-core/casing.d.ts +20 -0
  136. package/cockroach-core/casing.js +25 -0
  137. package/cockroach-core/casing.js.map +1 -0
  138. package/cockroach-core/columns/bigint.cjs +4 -4
  139. package/cockroach-core/columns/bigint.cjs.map +1 -1
  140. package/cockroach-core/columns/bigint.d.cts +2 -2
  141. package/cockroach-core/columns/bigint.d.ts +2 -2
  142. package/cockroach-core/columns/bigint.js +4 -4
  143. package/cockroach-core/columns/bigint.js.map +1 -1
  144. package/cockroach-core/columns/common.cjs +4 -4
  145. package/cockroach-core/columns/common.cjs.map +1 -1
  146. package/cockroach-core/columns/common.d.cts +4 -4
  147. package/cockroach-core/columns/common.d.ts +4 -4
  148. package/cockroach-core/columns/common.js +4 -4
  149. package/cockroach-core/columns/common.js.map +1 -1
  150. package/cockroach-core/columns/custom.cjs +4 -4
  151. package/cockroach-core/columns/custom.cjs.map +1 -1
  152. package/cockroach-core/columns/custom.d.cts +2 -2
  153. package/cockroach-core/columns/custom.d.ts +2 -2
  154. package/cockroach-core/columns/custom.js +4 -4
  155. package/cockroach-core/columns/custom.js.map +1 -1
  156. package/cockroach-core/columns/date.cjs +6 -6
  157. package/cockroach-core/columns/date.cjs.map +1 -1
  158. package/cockroach-core/columns/date.d.cts +3 -3
  159. package/cockroach-core/columns/date.d.ts +3 -3
  160. package/cockroach-core/columns/date.js +6 -6
  161. package/cockroach-core/columns/date.js.map +1 -1
  162. package/cockroach-core/columns/decimal.cjs +4 -4
  163. package/cockroach-core/columns/decimal.cjs.map +1 -1
  164. package/cockroach-core/columns/decimal.d.cts +2 -2
  165. package/cockroach-core/columns/decimal.d.ts +2 -2
  166. package/cockroach-core/columns/decimal.js +4 -4
  167. package/cockroach-core/columns/decimal.js.map +1 -1
  168. package/cockroach-core/columns/float.cjs +2 -2
  169. package/cockroach-core/columns/float.cjs.map +1 -1
  170. package/cockroach-core/columns/float.d.cts +1 -1
  171. package/cockroach-core/columns/float.d.ts +1 -1
  172. package/cockroach-core/columns/float.js +2 -2
  173. package/cockroach-core/columns/float.js.map +1 -1
  174. package/cockroach-core/columns/geometry.cjs +8 -8
  175. package/cockroach-core/columns/geometry.cjs.map +1 -1
  176. package/cockroach-core/columns/geometry.d.cts +5 -5
  177. package/cockroach-core/columns/geometry.d.ts +5 -5
  178. package/cockroach-core/columns/geometry.js +8 -8
  179. package/cockroach-core/columns/geometry.js.map +1 -1
  180. package/cockroach-core/columns/integer.cjs +2 -2
  181. package/cockroach-core/columns/integer.cjs.map +1 -1
  182. package/cockroach-core/columns/integer.d.cts +1 -1
  183. package/cockroach-core/columns/integer.d.ts +1 -1
  184. package/cockroach-core/columns/integer.js +2 -2
  185. package/cockroach-core/columns/integer.js.map +1 -1
  186. package/cockroach-core/columns/jsonb.cjs +4 -4
  187. package/cockroach-core/columns/jsonb.cjs.map +1 -1
  188. package/cockroach-core/columns/jsonb.d.cts +2 -2
  189. package/cockroach-core/columns/jsonb.d.ts +2 -2
  190. package/cockroach-core/columns/jsonb.js +4 -4
  191. package/cockroach-core/columns/jsonb.js.map +1 -1
  192. package/cockroach-core/columns/vector.cjs +4 -4
  193. package/cockroach-core/columns/vector.cjs.map +1 -1
  194. package/cockroach-core/columns/vector.d.cts +2 -2
  195. package/cockroach-core/columns/vector.d.ts +2 -2
  196. package/cockroach-core/columns/vector.js +4 -4
  197. package/cockroach-core/columns/vector.js.map +1 -1
  198. package/cockroach-core/db.cjs +1 -1
  199. package/cockroach-core/db.cjs.map +1 -1
  200. package/cockroach-core/db.js +1 -1
  201. package/cockroach-core/db.js.map +1 -1
  202. package/cockroach-core/dialect.cjs +6 -12
  203. package/cockroach-core/dialect.cjs.map +1 -1
  204. package/cockroach-core/dialect.d.cts +3 -5
  205. package/cockroach-core/dialect.d.ts +4 -6
  206. package/cockroach-core/dialect.js +6 -12
  207. package/cockroach-core/dialect.js.map +1 -1
  208. package/cockroach-core/index.cjs +12 -6
  209. package/cockroach-core/index.d.cts +4 -3
  210. package/cockroach-core/index.d.ts +4 -3
  211. package/cockroach-core/index.js +8 -7
  212. package/cockroach-core/indexes.cjs.map +1 -1
  213. package/cockroach-core/indexes.js.map +1 -1
  214. package/cockroach-core/query-builders/delete.cjs +6 -2
  215. package/cockroach-core/query-builders/delete.cjs.map +1 -1
  216. package/cockroach-core/query-builders/delete.d.cts +1 -1
  217. package/cockroach-core/query-builders/delete.d.ts +1 -1
  218. package/cockroach-core/query-builders/delete.js +6 -2
  219. package/cockroach-core/query-builders/delete.js.map +1 -1
  220. package/cockroach-core/query-builders/index.cjs +1 -1
  221. package/cockroach-core/query-builders/index.js +1 -1
  222. package/cockroach-core/query-builders/insert.cjs +8 -4
  223. package/cockroach-core/query-builders/insert.cjs.map +1 -1
  224. package/cockroach-core/query-builders/insert.js +8 -4
  225. package/cockroach-core/query-builders/insert.js.map +1 -1
  226. package/cockroach-core/query-builders/query.cjs +2 -2
  227. package/cockroach-core/query-builders/query.cjs.map +1 -1
  228. package/cockroach-core/query-builders/query.js +2 -2
  229. package/cockroach-core/query-builders/query.js.map +1 -1
  230. package/cockroach-core/query-builders/raw.cjs +0 -4
  231. package/cockroach-core/query-builders/raw.cjs.map +1 -1
  232. package/cockroach-core/query-builders/raw.js +0 -4
  233. package/cockroach-core/query-builders/raw.js.map +1 -1
  234. package/cockroach-core/query-builders/refresh-materialized-view.cjs +2 -2
  235. package/cockroach-core/query-builders/refresh-materialized-view.cjs.map +1 -1
  236. package/cockroach-core/query-builders/refresh-materialized-view.js +2 -2
  237. package/cockroach-core/query-builders/refresh-materialized-view.js.map +1 -1
  238. package/cockroach-core/query-builders/select.cjs +6 -2
  239. package/cockroach-core/query-builders/select.cjs.map +1 -1
  240. package/cockroach-core/query-builders/select.d.ts +1 -1
  241. package/cockroach-core/query-builders/select.js +6 -2
  242. package/cockroach-core/query-builders/select.js.map +1 -1
  243. package/cockroach-core/query-builders/select.types.d.ts +1 -1
  244. package/cockroach-core/query-builders/update.cjs +6 -2
  245. package/cockroach-core/query-builders/update.cjs.map +1 -1
  246. package/cockroach-core/query-builders/update.js +6 -2
  247. package/cockroach-core/query-builders/update.js.map +1 -1
  248. package/cockroach-core/schema.cjs +9 -7
  249. package/cockroach-core/schema.cjs.map +1 -1
  250. package/cockroach-core/schema.d.cts +3 -1
  251. package/cockroach-core/schema.d.ts +3 -1
  252. package/cockroach-core/schema.js +9 -7
  253. package/cockroach-core/schema.js.map +1 -1
  254. package/cockroach-core/session.cjs +2 -2
  255. package/cockroach-core/session.cjs.map +1 -1
  256. package/cockroach-core/session.d.cts +1 -1
  257. package/cockroach-core/session.d.ts +1 -1
  258. package/cockroach-core/session.js +2 -2
  259. package/cockroach-core/session.js.map +1 -1
  260. package/cockroach-core/table.cjs +23 -16
  261. package/cockroach-core/table.cjs.map +1 -1
  262. package/cockroach-core/table.d.cts +3 -2
  263. package/cockroach-core/table.d.ts +3 -2
  264. package/cockroach-core/table.js +23 -17
  265. package/cockroach-core/table.js.map +1 -1
  266. package/cockroach-core/utils.cjs +1 -1
  267. package/cockroach-core/utils.js +1 -1
  268. package/cockroach-core/view.cjs +18 -13
  269. package/cockroach-core/view.cjs.map +1 -1
  270. package/cockroach-core/view.d.cts +15 -7
  271. package/cockroach-core/view.d.ts +15 -7
  272. package/cockroach-core/view.js +17 -14
  273. package/cockroach-core/view.js.map +1 -1
  274. package/codecs.cjs +77 -0
  275. package/codecs.cjs.map +1 -0
  276. package/codecs.d.cts +68 -0
  277. package/codecs.d.ts +68 -0
  278. package/codecs.js +74 -0
  279. package/codecs.js.map +1 -0
  280. package/column-builder.cjs +2 -2
  281. package/column-builder.cjs.map +1 -1
  282. package/column-builder.d.cts +4 -5
  283. package/column-builder.d.ts +4 -5
  284. package/column-builder.js +2 -2
  285. package/column-builder.js.map +1 -1
  286. package/column.cjs +10 -5
  287. package/column.cjs.map +1 -1
  288. package/column.d.cts +3 -3
  289. package/column.d.ts +3 -3
  290. package/column.js +10 -5
  291. package/column.js.map +1 -1
  292. package/d1/driver.cjs +2 -2
  293. package/d1/driver.cjs.map +1 -1
  294. package/d1/driver.d.cts +1 -1
  295. package/d1/driver.d.ts +2 -2
  296. package/d1/driver.js +2 -2
  297. package/d1/driver.js.map +1 -1
  298. package/d1/session.cjs +9 -11
  299. package/d1/session.cjs.map +1 -1
  300. package/d1/session.d.cts +8 -9
  301. package/d1/session.d.ts +11 -12
  302. package/d1/session.js +12 -14
  303. package/d1/session.js.map +1 -1
  304. package/durable-sqlite/driver.cjs +6 -3
  305. package/durable-sqlite/driver.cjs.map +1 -1
  306. package/durable-sqlite/driver.d.ts +1 -1
  307. package/durable-sqlite/driver.js +6 -3
  308. package/durable-sqlite/driver.js.map +1 -1
  309. package/durable-sqlite/session.cjs +15 -14
  310. package/durable-sqlite/session.cjs.map +1 -1
  311. package/durable-sqlite/session.d.cts +13 -9
  312. package/durable-sqlite/session.d.ts +16 -12
  313. package/durable-sqlite/session.js +19 -18
  314. package/durable-sqlite/session.js.map +1 -1
  315. package/effect-postgres/driver.cjs +130 -13
  316. package/effect-postgres/driver.cjs.map +1 -1
  317. package/effect-postgres/driver.d.cts +10 -6
  318. package/effect-postgres/driver.d.ts +10 -6
  319. package/effect-postgres/driver.js +130 -13
  320. package/effect-postgres/driver.js.map +1 -1
  321. package/effect-postgres/index.cjs +1 -1
  322. package/effect-postgres/index.d.cts +3 -3
  323. package/effect-postgres/index.d.ts +3 -3
  324. package/effect-postgres/index.js +3 -3
  325. package/effect-postgres/migrator.cjs.map +1 -1
  326. package/effect-postgres/migrator.d.cts +1 -1
  327. package/effect-postgres/migrator.d.ts +1 -1
  328. package/effect-postgres/migrator.js.map +1 -1
  329. package/effect-postgres/session.cjs +12 -71
  330. package/effect-postgres/session.cjs.map +1 -1
  331. package/effect-postgres/session.d.cts +15 -32
  332. package/effect-postgres/session.d.ts +16 -33
  333. package/effect-postgres/session.js +13 -71
  334. package/effect-postgres/session.js.map +1 -1
  335. package/expo-sqlite/driver.cjs +6 -3
  336. package/expo-sqlite/driver.cjs.map +1 -1
  337. package/expo-sqlite/driver.d.ts +1 -1
  338. package/expo-sqlite/driver.js +6 -3
  339. package/expo-sqlite/driver.js.map +1 -1
  340. package/expo-sqlite/session.cjs +15 -14
  341. package/expo-sqlite/session.cjs.map +1 -1
  342. package/expo-sqlite/session.d.cts +13 -9
  343. package/expo-sqlite/session.d.ts +16 -12
  344. package/expo-sqlite/session.js +19 -18
  345. package/expo-sqlite/session.js.map +1 -1
  346. package/index.cjs +8 -1
  347. package/index.d.cts +6 -6
  348. package/index.d.ts +6 -6
  349. package/index.js +4 -4
  350. package/libsql/driver-core.cjs +4 -3
  351. package/libsql/driver-core.cjs.map +1 -1
  352. package/libsql/driver-core.d.ts +1 -1
  353. package/libsql/driver-core.js +4 -3
  354. package/libsql/driver-core.js.map +1 -1
  355. package/libsql/session.cjs +13 -14
  356. package/libsql/session.cjs.map +1 -1
  357. package/libsql/session.d.cts +12 -9
  358. package/libsql/session.d.ts +15 -12
  359. package/libsql/session.js +17 -18
  360. package/libsql/session.js.map +1 -1
  361. package/mssql-core/casing.cjs +25 -0
  362. package/mssql-core/casing.cjs.map +1 -0
  363. package/mssql-core/casing.d.cts +18 -0
  364. package/mssql-core/casing.d.ts +18 -0
  365. package/mssql-core/casing.js +23 -0
  366. package/mssql-core/casing.js.map +1 -0
  367. package/mssql-core/columns/bigint.cjs +2 -2
  368. package/mssql-core/columns/bigint.cjs.map +1 -1
  369. package/mssql-core/columns/bigint.d.cts +1 -1
  370. package/mssql-core/columns/bigint.d.ts +1 -1
  371. package/mssql-core/columns/bigint.js +2 -2
  372. package/mssql-core/columns/bigint.js.map +1 -1
  373. package/mssql-core/columns/custom.cjs +4 -4
  374. package/mssql-core/columns/custom.cjs.map +1 -1
  375. package/mssql-core/columns/custom.d.cts +2 -2
  376. package/mssql-core/columns/custom.d.ts +2 -2
  377. package/mssql-core/columns/custom.js +4 -4
  378. package/mssql-core/columns/custom.js.map +1 -1
  379. package/mssql-core/columns/date.cjs +4 -4
  380. package/mssql-core/columns/date.cjs.map +1 -1
  381. package/mssql-core/columns/date.d.cts +2 -2
  382. package/mssql-core/columns/date.d.ts +2 -2
  383. package/mssql-core/columns/date.js +4 -4
  384. package/mssql-core/columns/date.js.map +1 -1
  385. package/mssql-core/columns/datetime.cjs +2 -2
  386. package/mssql-core/columns/datetime.cjs.map +1 -1
  387. package/mssql-core/columns/datetime.d.cts +1 -1
  388. package/mssql-core/columns/datetime.d.ts +1 -1
  389. package/mssql-core/columns/datetime.js +2 -2
  390. package/mssql-core/columns/datetime.js.map +1 -1
  391. package/mssql-core/columns/datetime2.cjs +2 -2
  392. package/mssql-core/columns/datetime2.cjs.map +1 -1
  393. package/mssql-core/columns/datetime2.d.cts +1 -1
  394. package/mssql-core/columns/datetime2.d.ts +1 -1
  395. package/mssql-core/columns/datetime2.js +2 -2
  396. package/mssql-core/columns/datetime2.js.map +1 -1
  397. package/mssql-core/columns/datetimeoffset.cjs +2 -2
  398. package/mssql-core/columns/datetimeoffset.cjs.map +1 -1
  399. package/mssql-core/columns/datetimeoffset.d.cts +1 -1
  400. package/mssql-core/columns/datetimeoffset.d.ts +1 -1
  401. package/mssql-core/columns/datetimeoffset.js +2 -2
  402. package/mssql-core/columns/datetimeoffset.js.map +1 -1
  403. package/mssql-core/columns/decimal.cjs +4 -4
  404. package/mssql-core/columns/decimal.cjs.map +1 -1
  405. package/mssql-core/columns/decimal.d.cts +2 -2
  406. package/mssql-core/columns/decimal.d.ts +2 -2
  407. package/mssql-core/columns/decimal.js +4 -4
  408. package/mssql-core/columns/decimal.js.map +1 -1
  409. package/mssql-core/columns/numeric.cjs +4 -4
  410. package/mssql-core/columns/numeric.cjs.map +1 -1
  411. package/mssql-core/columns/numeric.d.cts +2 -2
  412. package/mssql-core/columns/numeric.d.ts +2 -2
  413. package/mssql-core/columns/numeric.js +4 -4
  414. package/mssql-core/columns/numeric.js.map +1 -1
  415. package/mssql-core/columns/real.cjs +2 -2
  416. package/mssql-core/columns/real.cjs.map +1 -1
  417. package/mssql-core/columns/real.d.cts +1 -1
  418. package/mssql-core/columns/real.d.ts +1 -1
  419. package/mssql-core/columns/real.js +2 -2
  420. package/mssql-core/columns/real.js.map +1 -1
  421. package/mssql-core/columns/smallint.cjs +2 -2
  422. package/mssql-core/columns/smallint.cjs.map +1 -1
  423. package/mssql-core/columns/smallint.d.cts +1 -1
  424. package/mssql-core/columns/smallint.d.ts +1 -1
  425. package/mssql-core/columns/smallint.js +2 -2
  426. package/mssql-core/columns/smallint.js.map +1 -1
  427. package/mssql-core/columns/time.cjs +2 -2
  428. package/mssql-core/columns/time.cjs.map +1 -1
  429. package/mssql-core/columns/time.d.cts +1 -1
  430. package/mssql-core/columns/time.d.ts +1 -1
  431. package/mssql-core/columns/time.js +2 -2
  432. package/mssql-core/columns/time.js.map +1 -1
  433. package/mssql-core/columns/tinyint.cjs +2 -2
  434. package/mssql-core/columns/tinyint.cjs.map +1 -1
  435. package/mssql-core/columns/tinyint.d.cts +1 -1
  436. package/mssql-core/columns/tinyint.d.ts +1 -1
  437. package/mssql-core/columns/tinyint.js +2 -2
  438. package/mssql-core/columns/tinyint.js.map +1 -1
  439. package/mssql-core/columns/varchar.cjs +4 -4
  440. package/mssql-core/columns/varchar.cjs.map +1 -1
  441. package/mssql-core/columns/varchar.d.cts +2 -2
  442. package/mssql-core/columns/varchar.d.ts +2 -2
  443. package/mssql-core/columns/varchar.js +4 -4
  444. package/mssql-core/columns/varchar.js.map +1 -1
  445. package/mssql-core/dialect.cjs +8 -14
  446. package/mssql-core/dialect.cjs.map +1 -1
  447. package/mssql-core/dialect.d.cts +3 -5
  448. package/mssql-core/dialect.d.ts +4 -6
  449. package/mssql-core/dialect.js +8 -14
  450. package/mssql-core/dialect.js.map +1 -1
  451. package/mssql-core/index.cjs +7 -2
  452. package/mssql-core/index.d.cts +4 -3
  453. package/mssql-core/index.d.ts +4 -3
  454. package/mssql-core/index.js +6 -5
  455. package/mssql-core/query-builders/select.cjs +4 -0
  456. package/mssql-core/query-builders/select.cjs.map +1 -1
  457. package/mssql-core/query-builders/select.js +4 -0
  458. package/mssql-core/query-builders/select.js.map +1 -1
  459. package/mssql-core/query-builders/update.d.cts +1 -1
  460. package/mssql-core/query-builders/update.d.ts +1 -1
  461. package/mssql-core/schema.cjs +7 -5
  462. package/mssql-core/schema.cjs.map +1 -1
  463. package/mssql-core/schema.d.cts +3 -1
  464. package/mssql-core/schema.d.ts +3 -1
  465. package/mssql-core/schema.js +7 -5
  466. package/mssql-core/schema.js.map +1 -1
  467. package/mssql-core/table.cjs +14 -8
  468. package/mssql-core/table.cjs.map +1 -1
  469. package/mssql-core/table.d.cts +6 -4
  470. package/mssql-core/table.d.ts +6 -4
  471. package/mssql-core/table.js +14 -9
  472. package/mssql-core/table.js.map +1 -1
  473. package/mssql-core/utils.cjs +1 -1
  474. package/mssql-core/utils.js +1 -1
  475. package/mssql-core/view.cjs +9 -6
  476. package/mssql-core/view.cjs.map +1 -1
  477. package/mssql-core/view.d.cts +8 -4
  478. package/mssql-core/view.d.ts +8 -4
  479. package/mssql-core/view.js +10 -8
  480. package/mssql-core/view.js.map +1 -1
  481. package/mysql-core/casing.cjs +25 -0
  482. package/mysql-core/casing.cjs.map +1 -0
  483. package/mysql-core/casing.d.cts +18 -0
  484. package/mysql-core/casing.d.ts +18 -0
  485. package/mysql-core/casing.js +23 -0
  486. package/mysql-core/casing.js.map +1 -0
  487. package/mysql-core/columns/bigint.cjs +8 -8
  488. package/mysql-core/columns/bigint.cjs.map +1 -1
  489. package/mysql-core/columns/bigint.d.cts +4 -4
  490. package/mysql-core/columns/bigint.d.ts +4 -4
  491. package/mysql-core/columns/bigint.js +8 -8
  492. package/mysql-core/columns/bigint.js.map +1 -1
  493. package/mysql-core/columns/binary.cjs +2 -2
  494. package/mysql-core/columns/binary.cjs.map +1 -1
  495. package/mysql-core/columns/binary.d.cts +1 -1
  496. package/mysql-core/columns/binary.d.ts +1 -1
  497. package/mysql-core/columns/binary.js +2 -2
  498. package/mysql-core/columns/binary.js.map +1 -1
  499. package/mysql-core/columns/blob.cjs +4 -4
  500. package/mysql-core/columns/blob.cjs.map +1 -1
  501. package/mysql-core/columns/blob.d.cts +2 -2
  502. package/mysql-core/columns/blob.d.ts +2 -2
  503. package/mysql-core/columns/blob.js +4 -4
  504. package/mysql-core/columns/blob.js.map +1 -1
  505. package/mysql-core/columns/boolean.cjs +2 -2
  506. package/mysql-core/columns/boolean.cjs.map +1 -1
  507. package/mysql-core/columns/boolean.d.cts +1 -1
  508. package/mysql-core/columns/boolean.d.ts +1 -1
  509. package/mysql-core/columns/boolean.js +2 -2
  510. package/mysql-core/columns/boolean.js.map +1 -1
  511. package/mysql-core/columns/custom.cjs +4 -4
  512. package/mysql-core/columns/custom.cjs.map +1 -1
  513. package/mysql-core/columns/custom.d.cts +2 -2
  514. package/mysql-core/columns/custom.d.ts +2 -2
  515. package/mysql-core/columns/custom.js +4 -4
  516. package/mysql-core/columns/custom.js.map +1 -1
  517. package/mysql-core/columns/date.cjs +4 -4
  518. package/mysql-core/columns/date.cjs.map +1 -1
  519. package/mysql-core/columns/date.d.cts +2 -2
  520. package/mysql-core/columns/date.d.ts +2 -2
  521. package/mysql-core/columns/date.js +4 -4
  522. package/mysql-core/columns/date.js.map +1 -1
  523. package/mysql-core/columns/datetime.cjs +8 -8
  524. package/mysql-core/columns/datetime.cjs.map +1 -1
  525. package/mysql-core/columns/datetime.d.cts +4 -4
  526. package/mysql-core/columns/datetime.d.ts +4 -4
  527. package/mysql-core/columns/datetime.js +8 -8
  528. package/mysql-core/columns/datetime.js.map +1 -1
  529. package/mysql-core/columns/decimal.cjs +4 -4
  530. package/mysql-core/columns/decimal.cjs.map +1 -1
  531. package/mysql-core/columns/decimal.d.cts +2 -2
  532. package/mysql-core/columns/decimal.d.ts +2 -2
  533. package/mysql-core/columns/decimal.js +4 -4
  534. package/mysql-core/columns/decimal.js.map +1 -1
  535. package/mysql-core/columns/float.cjs +2 -2
  536. package/mysql-core/columns/float.cjs.map +1 -1
  537. package/mysql-core/columns/float.d.cts +1 -1
  538. package/mysql-core/columns/float.d.ts +1 -1
  539. package/mysql-core/columns/float.js +2 -2
  540. package/mysql-core/columns/float.js.map +1 -1
  541. package/mysql-core/columns/int.cjs +2 -2
  542. package/mysql-core/columns/int.cjs.map +1 -1
  543. package/mysql-core/columns/int.d.cts +1 -1
  544. package/mysql-core/columns/int.d.ts +1 -1
  545. package/mysql-core/columns/int.js +2 -2
  546. package/mysql-core/columns/int.js.map +1 -1
  547. package/mysql-core/columns/json.cjs +2 -2
  548. package/mysql-core/columns/json.cjs.map +1 -1
  549. package/mysql-core/columns/json.d.cts +1 -1
  550. package/mysql-core/columns/json.d.ts +1 -1
  551. package/mysql-core/columns/json.js +2 -2
  552. package/mysql-core/columns/json.js.map +1 -1
  553. package/mysql-core/columns/mediumint.cjs +2 -2
  554. package/mysql-core/columns/mediumint.cjs.map +1 -1
  555. package/mysql-core/columns/mediumint.d.cts +1 -1
  556. package/mysql-core/columns/mediumint.d.ts +1 -1
  557. package/mysql-core/columns/mediumint.js +2 -2
  558. package/mysql-core/columns/mediumint.js.map +1 -1
  559. package/mysql-core/columns/serial.cjs +2 -2
  560. package/mysql-core/columns/serial.cjs.map +1 -1
  561. package/mysql-core/columns/serial.d.cts +1 -1
  562. package/mysql-core/columns/serial.d.ts +1 -1
  563. package/mysql-core/columns/serial.js +2 -2
  564. package/mysql-core/columns/serial.js.map +1 -1
  565. package/mysql-core/columns/smallint.cjs +2 -2
  566. package/mysql-core/columns/smallint.cjs.map +1 -1
  567. package/mysql-core/columns/smallint.d.cts +1 -1
  568. package/mysql-core/columns/smallint.d.ts +1 -1
  569. package/mysql-core/columns/smallint.js +2 -2
  570. package/mysql-core/columns/smallint.js.map +1 -1
  571. package/mysql-core/columns/time.cjs +2 -2
  572. package/mysql-core/columns/time.cjs.map +1 -1
  573. package/mysql-core/columns/time.d.cts +1 -1
  574. package/mysql-core/columns/time.d.ts +1 -1
  575. package/mysql-core/columns/time.js +2 -2
  576. package/mysql-core/columns/time.js.map +1 -1
  577. package/mysql-core/columns/timestamp.cjs +8 -8
  578. package/mysql-core/columns/timestamp.cjs.map +1 -1
  579. package/mysql-core/columns/timestamp.d.cts +4 -4
  580. package/mysql-core/columns/timestamp.d.ts +4 -4
  581. package/mysql-core/columns/timestamp.js +8 -8
  582. package/mysql-core/columns/timestamp.js.map +1 -1
  583. package/mysql-core/columns/tinyint.cjs +2 -2
  584. package/mysql-core/columns/tinyint.cjs.map +1 -1
  585. package/mysql-core/columns/tinyint.d.cts +1 -1
  586. package/mysql-core/columns/tinyint.d.ts +1 -1
  587. package/mysql-core/columns/tinyint.js +2 -2
  588. package/mysql-core/columns/tinyint.js.map +1 -1
  589. package/mysql-core/columns/varbinary.cjs +2 -2
  590. package/mysql-core/columns/varbinary.cjs.map +1 -1
  591. package/mysql-core/columns/varbinary.d.cts +1 -1
  592. package/mysql-core/columns/varbinary.d.ts +1 -1
  593. package/mysql-core/columns/varbinary.js +2 -2
  594. package/mysql-core/columns/varbinary.js.map +1 -1
  595. package/mysql-core/columns/year.cjs +2 -2
  596. package/mysql-core/columns/year.cjs.map +1 -1
  597. package/mysql-core/columns/year.d.cts +1 -1
  598. package/mysql-core/columns/year.d.ts +1 -1
  599. package/mysql-core/columns/year.js +2 -2
  600. package/mysql-core/columns/year.js.map +1 -1
  601. package/mysql-core/db.d.cts +1 -1
  602. package/mysql-core/db.d.ts +1 -1
  603. package/mysql-core/dialect.cjs +11 -16
  604. package/mysql-core/dialect.cjs.map +1 -1
  605. package/mysql-core/dialect.d.cts +1 -2
  606. package/mysql-core/dialect.d.ts +2 -3
  607. package/mysql-core/dialect.js +11 -16
  608. package/mysql-core/dialect.js.map +1 -1
  609. package/mysql-core/index.cjs +6 -1
  610. package/mysql-core/index.d.cts +3 -2
  611. package/mysql-core/index.d.ts +3 -2
  612. package/mysql-core/index.js +5 -4
  613. package/mysql-core/query-builders/insert.d.cts +1 -1
  614. package/mysql-core/query-builders/query.cjs +13 -5
  615. package/mysql-core/query-builders/query.cjs.map +1 -1
  616. package/mysql-core/query-builders/query.d.ts +1 -1
  617. package/mysql-core/query-builders/query.js +13 -5
  618. package/mysql-core/query-builders/query.js.map +1 -1
  619. package/mysql-core/query-builders/select.cjs +4 -0
  620. package/mysql-core/query-builders/select.cjs.map +1 -1
  621. package/mysql-core/query-builders/select.d.cts +1 -1
  622. package/mysql-core/query-builders/select.d.ts +1 -1
  623. package/mysql-core/query-builders/select.js +4 -0
  624. package/mysql-core/query-builders/select.js.map +1 -1
  625. package/mysql-core/query-builders/update.d.cts +1 -1
  626. package/mysql-core/schema.cjs +7 -12
  627. package/mysql-core/schema.cjs.map +1 -1
  628. package/mysql-core/schema.d.cts +3 -1
  629. package/mysql-core/schema.d.ts +3 -1
  630. package/mysql-core/schema.js +7 -12
  631. package/mysql-core/schema.js.map +1 -1
  632. package/mysql-core/session.cjs +1 -2
  633. package/mysql-core/session.cjs.map +1 -1
  634. package/mysql-core/session.d.cts +3 -4
  635. package/mysql-core/session.d.ts +3 -4
  636. package/mysql-core/session.js +1 -2
  637. package/mysql-core/session.js.map +1 -1
  638. package/mysql-core/table.cjs +13 -8
  639. package/mysql-core/table.cjs.map +1 -1
  640. package/mysql-core/table.d.cts +4 -3
  641. package/mysql-core/table.d.ts +4 -3
  642. package/mysql-core/table.js +13 -9
  643. package/mysql-core/table.js.map +1 -1
  644. package/mysql-core/view.cjs +9 -6
  645. package/mysql-core/view.cjs.map +1 -1
  646. package/mysql-core/view.d.cts +8 -4
  647. package/mysql-core/view.d.ts +8 -4
  648. package/mysql-core/view.js +10 -8
  649. package/mysql-core/view.js.map +1 -1
  650. package/mysql-proxy/driver.cjs +6 -3
  651. package/mysql-proxy/driver.cjs.map +1 -1
  652. package/mysql-proxy/driver.js +6 -3
  653. package/mysql-proxy/driver.js.map +1 -1
  654. package/mysql-proxy/session.cjs +25 -18
  655. package/mysql-proxy/session.cjs.map +1 -1
  656. package/mysql-proxy/session.d.cts +11 -4
  657. package/mysql-proxy/session.d.ts +12 -5
  658. package/mysql-proxy/session.js +26 -19
  659. package/mysql-proxy/session.js.map +1 -1
  660. package/mysql2/driver.cjs +4 -3
  661. package/mysql2/driver.cjs.map +1 -1
  662. package/mysql2/driver.d.cts +1 -0
  663. package/mysql2/driver.d.ts +3 -2
  664. package/mysql2/driver.js +4 -3
  665. package/mysql2/driver.js.map +1 -1
  666. package/mysql2/session.cjs +48 -38
  667. package/mysql2/session.cjs.map +1 -1
  668. package/mysql2/session.d.cts +11 -4
  669. package/mysql2/session.d.ts +12 -5
  670. package/mysql2/session.js +49 -39
  671. package/mysql2/session.js.map +1 -1
  672. package/neon-http/driver.cjs +55 -65
  673. package/neon-http/driver.cjs.map +1 -1
  674. package/neon-http/driver.d.cts +14 -25
  675. package/neon-http/driver.d.ts +15 -26
  676. package/neon-http/driver.js +55 -64
  677. package/neon-http/driver.js.map +1 -1
  678. package/neon-http/index.cjs +2 -4
  679. package/neon-http/index.d.cts +3 -3
  680. package/neon-http/index.d.ts +3 -3
  681. package/neon-http/index.js +3 -3
  682. package/neon-http/migrator.cjs +1 -1
  683. package/neon-http/migrator.cjs.map +1 -1
  684. package/neon-http/migrator.d.cts +1 -1
  685. package/neon-http/migrator.d.ts +1 -1
  686. package/neon-http/migrator.js +1 -1
  687. package/neon-http/migrator.js.map +1 -1
  688. package/neon-http/session.cjs +27 -116
  689. package/neon-http/session.cjs.map +1 -1
  690. package/neon-http/session.d.cts +10 -39
  691. package/neon-http/session.d.ts +9 -38
  692. package/neon-http/session.js +29 -116
  693. package/neon-http/session.js.map +1 -1
  694. package/neon-serverless/driver.cjs +38 -32
  695. package/neon-serverless/driver.cjs.map +1 -1
  696. package/neon-serverless/driver.d.cts +13 -18
  697. package/neon-serverless/driver.d.ts +13 -18
  698. package/neon-serverless/driver.js +38 -31
  699. package/neon-serverless/driver.js.map +1 -1
  700. package/neon-serverless/index.cjs +2 -3
  701. package/neon-serverless/index.d.cts +3 -3
  702. package/neon-serverless/index.d.ts +3 -3
  703. package/neon-serverless/index.js +3 -3
  704. package/neon-serverless/migrator.cjs.map +1 -1
  705. package/neon-serverless/migrator.d.cts +1 -1
  706. package/neon-serverless/migrator.d.ts +1 -1
  707. package/neon-serverless/migrator.js.map +1 -1
  708. package/neon-serverless/session.cjs +32 -108
  709. package/neon-serverless/session.cjs.map +1 -1
  710. package/neon-serverless/session.d.cts +9 -33
  711. package/neon-serverless/session.d.ts +8 -32
  712. package/neon-serverless/session.js +34 -109
  713. package/neon-serverless/session.js.map +1 -1
  714. package/netlify-db/driver.cjs +57 -43
  715. package/netlify-db/driver.cjs.map +1 -1
  716. package/netlify-db/driver.d.cts +29 -35
  717. package/netlify-db/driver.d.ts +30 -36
  718. package/netlify-db/driver.js +56 -42
  719. package/netlify-db/driver.js.map +1 -1
  720. package/netlify-db/index.cjs +3 -2
  721. package/netlify-db/index.d.cts +3 -3
  722. package/netlify-db/index.d.ts +3 -3
  723. package/netlify-db/index.js +2 -2
  724. package/netlify-db/migrator.cjs.map +1 -1
  725. package/netlify-db/migrator.d.cts +1 -1
  726. package/netlify-db/migrator.d.ts +1 -1
  727. package/netlify-db/migrator.js.map +1 -1
  728. package/netlify-db/session.cjs +60 -39
  729. package/netlify-db/session.cjs.map +1 -1
  730. package/netlify-db/session.d.cts +21 -24
  731. package/netlify-db/session.d.ts +21 -24
  732. package/netlify-db/session.js +62 -41
  733. package/netlify-db/session.js.map +1 -1
  734. package/node-mssql/driver.cjs +10 -4
  735. package/node-mssql/driver.cjs.map +1 -1
  736. package/node-mssql/driver.d.cts +1 -0
  737. package/node-mssql/driver.d.ts +2 -1
  738. package/node-mssql/driver.js +10 -4
  739. package/node-mssql/driver.js.map +1 -1
  740. package/node-mssql/session.cjs +6 -4
  741. package/node-mssql/session.cjs.map +1 -1
  742. package/node-mssql/session.d.cts +4 -1
  743. package/node-mssql/session.d.ts +5 -2
  744. package/node-mssql/session.js +7 -5
  745. package/node-mssql/session.js.map +1 -1
  746. package/node-postgres/driver.cjs +38 -17
  747. package/node-postgres/driver.cjs.map +1 -1
  748. package/node-postgres/driver.d.cts +10 -12
  749. package/node-postgres/driver.d.ts +10 -12
  750. package/node-postgres/driver.js +38 -17
  751. package/node-postgres/driver.js.map +1 -1
  752. package/node-postgres/index.cjs +2 -2
  753. package/node-postgres/index.d.cts +3 -3
  754. package/node-postgres/index.d.ts +3 -3
  755. package/node-postgres/index.js +3 -3
  756. package/node-postgres/migrator.cjs.map +1 -1
  757. package/node-postgres/migrator.d.cts +1 -1
  758. package/node-postgres/migrator.d.ts +1 -1
  759. package/node-postgres/migrator.js.map +1 -1
  760. package/node-postgres/session.cjs +32 -125
  761. package/node-postgres/session.cjs.map +1 -1
  762. package/node-postgres/session.d.cts +10 -31
  763. package/node-postgres/session.d.ts +8 -29
  764. package/node-postgres/session.js +34 -126
  765. package/node-postgres/session.js.map +1 -1
  766. package/node-sqlite/driver.cjs +2 -2
  767. package/node-sqlite/driver.cjs.map +1 -1
  768. package/node-sqlite/driver.d.ts +1 -1
  769. package/node-sqlite/driver.js +2 -2
  770. package/node-sqlite/driver.js.map +1 -1
  771. package/node-sqlite/session.cjs +4 -9
  772. package/node-sqlite/session.cjs.map +1 -1
  773. package/node-sqlite/session.d.cts +7 -8
  774. package/node-sqlite/session.d.ts +11 -12
  775. package/node-sqlite/session.js +7 -12
  776. package/node-sqlite/session.js.map +1 -1
  777. package/op-sqlite/driver.cjs +4 -3
  778. package/op-sqlite/driver.cjs.map +1 -1
  779. package/op-sqlite/driver.d.ts +1 -1
  780. package/op-sqlite/driver.js +4 -3
  781. package/op-sqlite/driver.js.map +1 -1
  782. package/op-sqlite/session.cjs +17 -15
  783. package/op-sqlite/session.cjs.map +1 -1
  784. package/op-sqlite/session.d.cts +13 -9
  785. package/op-sqlite/session.d.ts +16 -12
  786. package/op-sqlite/session.js +21 -19
  787. package/op-sqlite/session.js.map +1 -1
  788. package/operations.d.cts +3 -0
  789. package/operations.d.ts +3 -0
  790. package/package.json +116 -891
  791. package/pg-core/{utils/array.cjs → array.cjs} +1 -1
  792. package/pg-core/array.cjs.map +1 -0
  793. package/pg-core/{utils/array.d.cts → array.d.cts} +1 -1
  794. package/pg-core/{utils/array.d.ts → array.d.ts} +1 -1
  795. package/pg-core/{utils/array.js → array.js} +1 -1
  796. package/pg-core/array.js.map +1 -0
  797. package/pg-core/async/count.cjs +2 -9
  798. package/pg-core/async/count.cjs.map +1 -1
  799. package/pg-core/async/count.js +2 -9
  800. package/pg-core/async/count.js.map +1 -1
  801. package/pg-core/async/db.cjs +8 -28
  802. package/pg-core/async/db.cjs.map +1 -1
  803. package/pg-core/async/db.d.cts +6 -14
  804. package/pg-core/async/db.d.ts +6 -14
  805. package/pg-core/async/db.js +8 -28
  806. package/pg-core/async/db.js.map +1 -1
  807. package/pg-core/async/delete.cjs +7 -12
  808. package/pg-core/async/delete.cjs.map +1 -1
  809. package/pg-core/async/delete.js +7 -12
  810. package/pg-core/async/delete.js.map +1 -1
  811. package/pg-core/async/insert.cjs +7 -12
  812. package/pg-core/async/insert.cjs.map +1 -1
  813. package/pg-core/async/insert.js +7 -12
  814. package/pg-core/async/insert.js.map +1 -1
  815. package/pg-core/async/query.cjs +8 -14
  816. package/pg-core/async/query.cjs.map +1 -1
  817. package/pg-core/async/query.js +8 -14
  818. package/pg-core/async/query.js.map +1 -1
  819. package/pg-core/async/refresh-materialized-view.cjs +1 -9
  820. package/pg-core/async/refresh-materialized-view.cjs.map +1 -1
  821. package/pg-core/async/refresh-materialized-view.js +1 -9
  822. package/pg-core/async/refresh-materialized-view.js.map +1 -1
  823. package/pg-core/async/select.cjs +4 -13
  824. package/pg-core/async/select.cjs.map +1 -1
  825. package/pg-core/async/select.js +4 -13
  826. package/pg-core/async/select.js.map +1 -1
  827. package/pg-core/async/session.cjs +44 -20
  828. package/pg-core/async/session.cjs.map +1 -1
  829. package/pg-core/async/session.d.cts +26 -32
  830. package/pg-core/async/session.d.ts +26 -32
  831. package/pg-core/async/session.js +45 -21
  832. package/pg-core/async/session.js.map +1 -1
  833. package/pg-core/async/update.cjs +11 -15
  834. package/pg-core/async/update.cjs.map +1 -1
  835. package/pg-core/async/update.js +11 -15
  836. package/pg-core/async/update.js.map +1 -1
  837. package/pg-core/casing.cjs +27 -0
  838. package/pg-core/casing.cjs.map +1 -0
  839. package/pg-core/casing.d.cts +20 -0
  840. package/pg-core/casing.d.ts +20 -0
  841. package/pg-core/casing.js +25 -0
  842. package/pg-core/casing.js.map +1 -0
  843. package/pg-core/codecs.cjs +126 -0
  844. package/pg-core/codecs.cjs.map +1 -0
  845. package/pg-core/codecs.d.cts +87 -0
  846. package/pg-core/codecs.d.ts +87 -0
  847. package/pg-core/codecs.js +118 -0
  848. package/pg-core/codecs.js.map +1 -0
  849. package/pg-core/columns/bigint.cjs +10 -9
  850. package/pg-core/columns/bigint.cjs.map +1 -1
  851. package/pg-core/columns/bigint.d.cts +2 -3
  852. package/pg-core/columns/bigint.d.ts +2 -3
  853. package/pg-core/columns/bigint.js +10 -9
  854. package/pg-core/columns/bigint.js.map +1 -1
  855. package/pg-core/columns/bigserial.cjs +6 -6
  856. package/pg-core/columns/bigserial.cjs.map +1 -1
  857. package/pg-core/columns/bigserial.d.cts +1 -2
  858. package/pg-core/columns/bigserial.d.ts +1 -2
  859. package/pg-core/columns/bigserial.js +6 -6
  860. package/pg-core/columns/bigserial.js.map +1 -1
  861. package/pg-core/columns/boolean.cjs +2 -0
  862. package/pg-core/columns/boolean.cjs.map +1 -1
  863. package/pg-core/columns/boolean.js +2 -0
  864. package/pg-core/columns/boolean.js.map +1 -1
  865. package/pg-core/columns/bytea.cjs +2 -8
  866. package/pg-core/columns/bytea.cjs.map +1 -1
  867. package/pg-core/columns/bytea.d.cts +0 -1
  868. package/pg-core/columns/bytea.d.ts +0 -1
  869. package/pg-core/columns/bytea.js +2 -8
  870. package/pg-core/columns/bytea.js.map +1 -1
  871. package/pg-core/columns/char.cjs +2 -0
  872. package/pg-core/columns/char.cjs.map +1 -1
  873. package/pg-core/columns/char.js +2 -0
  874. package/pg-core/columns/char.js.map +1 -1
  875. package/pg-core/columns/cidr.cjs +2 -0
  876. package/pg-core/columns/cidr.cjs.map +1 -1
  877. package/pg-core/columns/cidr.js +2 -0
  878. package/pg-core/columns/cidr.js.map +1 -1
  879. package/pg-core/columns/common.cjs +12 -10
  880. package/pg-core/columns/common.cjs.map +1 -1
  881. package/pg-core/columns/common.d.cts +36 -41
  882. package/pg-core/columns/common.d.ts +36 -41
  883. package/pg-core/columns/common.js +12 -10
  884. package/pg-core/columns/common.js.map +1 -1
  885. package/pg-core/columns/custom.cjs +16 -46
  886. package/pg-core/columns/custom.cjs.map +1 -1
  887. package/pg-core/columns/custom.d.cts +17 -8
  888. package/pg-core/columns/custom.d.ts +17 -8
  889. package/pg-core/columns/custom.js +16 -46
  890. package/pg-core/columns/custom.js.map +1 -1
  891. package/pg-core/columns/date.cjs +11 -12
  892. package/pg-core/columns/date.cjs.map +1 -1
  893. package/pg-core/columns/date.d.cts +3 -4
  894. package/pg-core/columns/date.d.ts +3 -4
  895. package/pg-core/columns/date.js +11 -12
  896. package/pg-core/columns/date.js.map +1 -1
  897. package/pg-core/columns/double-precision.cjs +2 -4
  898. package/pg-core/columns/double-precision.cjs.map +1 -1
  899. package/pg-core/columns/double-precision.d.cts +0 -1
  900. package/pg-core/columns/double-precision.d.ts +0 -1
  901. package/pg-core/columns/double-precision.js +2 -4
  902. package/pg-core/columns/double-precision.js.map +1 -1
  903. package/pg-core/columns/enum.cjs +4 -0
  904. package/pg-core/columns/enum.cjs.map +1 -1
  905. package/pg-core/columns/enum.js +4 -0
  906. package/pg-core/columns/enum.js.map +1 -1
  907. package/pg-core/columns/index.d.cts +2 -2
  908. package/pg-core/columns/index.d.ts +2 -2
  909. package/pg-core/columns/inet.cjs +2 -0
  910. package/pg-core/columns/inet.cjs.map +1 -1
  911. package/pg-core/columns/inet.js +2 -0
  912. package/pg-core/columns/inet.js.map +1 -1
  913. package/pg-core/columns/integer.cjs +2 -4
  914. package/pg-core/columns/integer.cjs.map +1 -1
  915. package/pg-core/columns/integer.d.cts +0 -1
  916. package/pg-core/columns/integer.d.ts +0 -1
  917. package/pg-core/columns/integer.js +2 -4
  918. package/pg-core/columns/integer.js.map +1 -1
  919. package/pg-core/columns/interval.cjs +2 -0
  920. package/pg-core/columns/interval.cjs.map +1 -1
  921. package/pg-core/columns/interval.js +2 -0
  922. package/pg-core/columns/interval.js.map +1 -1
  923. package/pg-core/columns/json.cjs +2 -11
  924. package/pg-core/columns/json.cjs.map +1 -1
  925. package/pg-core/columns/json.d.cts +0 -2
  926. package/pg-core/columns/json.d.ts +0 -2
  927. package/pg-core/columns/json.js +2 -11
  928. package/pg-core/columns/json.js.map +1 -1
  929. package/pg-core/columns/jsonb.cjs +2 -11
  930. package/pg-core/columns/jsonb.cjs.map +1 -1
  931. package/pg-core/columns/jsonb.d.cts +0 -2
  932. package/pg-core/columns/jsonb.d.ts +0 -2
  933. package/pg-core/columns/jsonb.js +2 -11
  934. package/pg-core/columns/jsonb.js.map +1 -1
  935. package/pg-core/columns/line.cjs +12 -8
  936. package/pg-core/columns/line.cjs.map +1 -1
  937. package/pg-core/columns/line.d.cts +5 -5
  938. package/pg-core/columns/line.d.ts +5 -5
  939. package/pg-core/columns/line.js +12 -8
  940. package/pg-core/columns/line.js.map +1 -1
  941. package/pg-core/columns/macaddr.cjs +2 -0
  942. package/pg-core/columns/macaddr.cjs.map +1 -1
  943. package/pg-core/columns/macaddr.js +2 -0
  944. package/pg-core/columns/macaddr.js.map +1 -1
  945. package/pg-core/columns/macaddr8.cjs +2 -0
  946. package/pg-core/columns/macaddr8.cjs.map +1 -1
  947. package/pg-core/columns/macaddr8.js +2 -0
  948. package/pg-core/columns/macaddr8.js.map +1 -1
  949. package/pg-core/columns/numeric.cjs +12 -15
  950. package/pg-core/columns/numeric.cjs.map +1 -1
  951. package/pg-core/columns/numeric.d.cts +4 -5
  952. package/pg-core/columns/numeric.d.ts +4 -5
  953. package/pg-core/columns/numeric.js +12 -15
  954. package/pg-core/columns/numeric.js.map +1 -1
  955. package/pg-core/columns/point.cjs +19 -21
  956. package/pg-core/columns/point.cjs.map +1 -1
  957. package/pg-core/columns/point.d.cts +5 -11
  958. package/pg-core/columns/point.d.ts +5 -11
  959. package/pg-core/columns/point.js +19 -21
  960. package/pg-core/columns/point.js.map +1 -1
  961. package/pg-core/columns/postgis_extension/geometry.cjs +12 -9
  962. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  963. package/pg-core/columns/postgis_extension/geometry.d.cts +5 -5
  964. package/pg-core/columns/postgis_extension/geometry.d.ts +5 -5
  965. package/pg-core/columns/postgis_extension/geometry.js +12 -9
  966. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  967. package/pg-core/columns/real.cjs +2 -4
  968. package/pg-core/columns/real.cjs.map +1 -1
  969. package/pg-core/columns/real.d.cts +0 -1
  970. package/pg-core/columns/real.d.ts +0 -1
  971. package/pg-core/columns/real.js +2 -4
  972. package/pg-core/columns/real.js.map +1 -1
  973. package/pg-core/columns/serial.cjs +2 -0
  974. package/pg-core/columns/serial.cjs.map +1 -1
  975. package/pg-core/columns/serial.js +2 -0
  976. package/pg-core/columns/serial.js.map +1 -1
  977. package/pg-core/columns/smallint.cjs +2 -4
  978. package/pg-core/columns/smallint.cjs.map +1 -1
  979. package/pg-core/columns/smallint.d.cts +0 -1
  980. package/pg-core/columns/smallint.d.ts +0 -1
  981. package/pg-core/columns/smallint.js +2 -4
  982. package/pg-core/columns/smallint.js.map +1 -1
  983. package/pg-core/columns/smallserial.cjs +2 -0
  984. package/pg-core/columns/smallserial.cjs.map +1 -1
  985. package/pg-core/columns/smallserial.js +2 -0
  986. package/pg-core/columns/smallserial.js.map +1 -1
  987. package/pg-core/columns/text.cjs +2 -0
  988. package/pg-core/columns/text.cjs.map +1 -1
  989. package/pg-core/columns/text.js +2 -0
  990. package/pg-core/columns/text.js.map +1 -1
  991. package/pg-core/columns/time.cjs +2 -0
  992. package/pg-core/columns/time.cjs.map +1 -1
  993. package/pg-core/columns/time.js +2 -0
  994. package/pg-core/columns/time.js.map +1 -1
  995. package/pg-core/columns/timestamp.cjs +13 -14
  996. package/pg-core/columns/timestamp.cjs.map +1 -1
  997. package/pg-core/columns/timestamp.d.cts +3 -4
  998. package/pg-core/columns/timestamp.d.ts +3 -4
  999. package/pg-core/columns/timestamp.js +13 -14
  1000. package/pg-core/columns/timestamp.js.map +1 -1
  1001. package/pg-core/columns/uuid.cjs +2 -0
  1002. package/pg-core/columns/uuid.cjs.map +1 -1
  1003. package/pg-core/columns/uuid.js +2 -0
  1004. package/pg-core/columns/uuid.js.map +1 -1
  1005. package/pg-core/columns/varchar.cjs +2 -0
  1006. package/pg-core/columns/varchar.cjs.map +1 -1
  1007. package/pg-core/columns/varchar.js +2 -0
  1008. package/pg-core/columns/varchar.js.map +1 -1
  1009. package/pg-core/columns/vector_extension/bit.cjs +2 -0
  1010. package/pg-core/columns/vector_extension/bit.cjs.map +1 -1
  1011. package/pg-core/columns/vector_extension/bit.js +2 -0
  1012. package/pg-core/columns/vector_extension/bit.js.map +1 -1
  1013. package/pg-core/columns/vector_extension/halfvec.cjs +6 -4
  1014. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -1
  1015. package/pg-core/columns/vector_extension/halfvec.d.cts +2 -2
  1016. package/pg-core/columns/vector_extension/halfvec.d.ts +2 -2
  1017. package/pg-core/columns/vector_extension/halfvec.js +6 -4
  1018. package/pg-core/columns/vector_extension/halfvec.js.map +1 -1
  1019. package/pg-core/columns/vector_extension/sparsevec.cjs +2 -0
  1020. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -1
  1021. package/pg-core/columns/vector_extension/sparsevec.js +2 -0
  1022. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -1
  1023. package/pg-core/columns/vector_extension/vector.cjs +6 -4
  1024. package/pg-core/columns/vector_extension/vector.cjs.map +1 -1
  1025. package/pg-core/columns/vector_extension/vector.d.cts +2 -2
  1026. package/pg-core/columns/vector_extension/vector.d.ts +2 -2
  1027. package/pg-core/columns/vector_extension/vector.js +6 -4
  1028. package/pg-core/columns/vector_extension/vector.js.map +1 -1
  1029. package/pg-core/dialect.cjs +78 -235
  1030. package/pg-core/dialect.cjs.map +1 -1
  1031. package/pg-core/dialect.d.cts +24 -34
  1032. package/pg-core/dialect.d.ts +24 -34
  1033. package/pg-core/dialect.js +83 -239
  1034. package/pg-core/dialect.js.map +1 -1
  1035. package/pg-core/effect/count.cjs +1 -1
  1036. package/pg-core/effect/count.cjs.map +1 -1
  1037. package/pg-core/effect/count.d.cts +2 -2
  1038. package/pg-core/effect/count.d.ts +2 -2
  1039. package/pg-core/effect/count.js +1 -1
  1040. package/pg-core/effect/count.js.map +1 -1
  1041. package/pg-core/effect/db.cjs +9 -18
  1042. package/pg-core/effect/db.cjs.map +1 -1
  1043. package/pg-core/effect/db.d.cts +7 -11
  1044. package/pg-core/effect/db.d.ts +6 -10
  1045. package/pg-core/effect/db.js +9 -18
  1046. package/pg-core/effect/db.js.map +1 -1
  1047. package/pg-core/effect/delete.cjs +7 -5
  1048. package/pg-core/effect/delete.cjs.map +1 -1
  1049. package/pg-core/effect/delete.d.cts +1 -1
  1050. package/pg-core/effect/delete.d.ts +1 -1
  1051. package/pg-core/effect/delete.js +7 -5
  1052. package/pg-core/effect/delete.js.map +1 -1
  1053. package/pg-core/effect/insert.cjs +7 -5
  1054. package/pg-core/effect/insert.cjs.map +1 -1
  1055. package/pg-core/effect/insert.d.cts +1 -1
  1056. package/pg-core/effect/insert.d.ts +1 -1
  1057. package/pg-core/effect/insert.js +7 -5
  1058. package/pg-core/effect/insert.js.map +1 -1
  1059. package/pg-core/effect/query.cjs +7 -6
  1060. package/pg-core/effect/query.cjs.map +1 -1
  1061. package/pg-core/effect/query.d.cts +1 -1
  1062. package/pg-core/effect/query.d.ts +1 -1
  1063. package/pg-core/effect/query.js +7 -6
  1064. package/pg-core/effect/query.js.map +1 -1
  1065. package/pg-core/effect/refresh-materialized-view.cjs +1 -2
  1066. package/pg-core/effect/refresh-materialized-view.cjs.map +1 -1
  1067. package/pg-core/effect/refresh-materialized-view.d.cts +1 -1
  1068. package/pg-core/effect/refresh-materialized-view.d.ts +1 -1
  1069. package/pg-core/effect/refresh-materialized-view.js +1 -2
  1070. package/pg-core/effect/refresh-materialized-view.js.map +1 -1
  1071. package/pg-core/effect/select.cjs +3 -5
  1072. package/pg-core/effect/select.cjs.map +1 -1
  1073. package/pg-core/effect/select.d.cts +1 -1
  1074. package/pg-core/effect/select.d.ts +1 -1
  1075. package/pg-core/effect/select.js +3 -5
  1076. package/pg-core/effect/select.js.map +1 -1
  1077. package/pg-core/effect/session.cjs +28 -17
  1078. package/pg-core/effect/session.cjs.map +1 -1
  1079. package/pg-core/effect/session.d.cts +25 -29
  1080. package/pg-core/effect/session.d.ts +25 -29
  1081. package/pg-core/effect/session.js +29 -18
  1082. package/pg-core/effect/session.js.map +1 -1
  1083. package/pg-core/effect/update.cjs +8 -8
  1084. package/pg-core/effect/update.cjs.map +1 -1
  1085. package/pg-core/effect/update.d.cts +1 -1
  1086. package/pg-core/effect/update.d.ts +1 -1
  1087. package/pg-core/effect/update.js +8 -8
  1088. package/pg-core/effect/update.js.map +1 -1
  1089. package/pg-core/index.cjs +12 -6
  1090. package/pg-core/index.d.cts +6 -5
  1091. package/pg-core/index.d.ts +6 -5
  1092. package/pg-core/index.js +7 -6
  1093. package/pg-core/indexes.cjs.map +1 -1
  1094. package/pg-core/indexes.js.map +1 -1
  1095. package/pg-core/query-builders/delete.cjs +6 -2
  1096. package/pg-core/query-builders/delete.cjs.map +1 -1
  1097. package/pg-core/query-builders/delete.d.cts +2 -0
  1098. package/pg-core/query-builders/delete.d.ts +2 -0
  1099. package/pg-core/query-builders/delete.js +6 -2
  1100. package/pg-core/query-builders/delete.js.map +1 -1
  1101. package/pg-core/query-builders/insert.cjs +9 -4
  1102. package/pg-core/query-builders/insert.cjs.map +1 -1
  1103. package/pg-core/query-builders/insert.d.cts +2 -0
  1104. package/pg-core/query-builders/insert.d.ts +2 -0
  1105. package/pg-core/query-builders/insert.js +9 -4
  1106. package/pg-core/query-builders/insert.js.map +1 -1
  1107. package/pg-core/query-builders/query-builder.cjs +2 -1
  1108. package/pg-core/query-builders/query-builder.cjs.map +1 -1
  1109. package/pg-core/query-builders/query-builder.js +2 -1
  1110. package/pg-core/query-builders/query-builder.js.map +1 -1
  1111. package/pg-core/query-builders/query.cjs +0 -1
  1112. package/pg-core/query-builders/query.cjs.map +1 -1
  1113. package/pg-core/query-builders/query.d.cts +2 -1
  1114. package/pg-core/query-builders/query.d.ts +2 -1
  1115. package/pg-core/query-builders/query.js +0 -1
  1116. package/pg-core/query-builders/query.js.map +1 -1
  1117. package/pg-core/query-builders/raw.cjs +0 -4
  1118. package/pg-core/query-builders/raw.cjs.map +1 -1
  1119. package/pg-core/query-builders/raw.js +0 -4
  1120. package/pg-core/query-builders/raw.js.map +1 -1
  1121. package/pg-core/query-builders/select.cjs +6 -2
  1122. package/pg-core/query-builders/select.cjs.map +1 -1
  1123. package/pg-core/query-builders/select.d.cts +1 -0
  1124. package/pg-core/query-builders/select.d.ts +1 -0
  1125. package/pg-core/query-builders/select.js +6 -2
  1126. package/pg-core/query-builders/select.js.map +1 -1
  1127. package/pg-core/query-builders/select.types.d.cts +1 -0
  1128. package/pg-core/query-builders/select.types.d.ts +1 -0
  1129. package/pg-core/query-builders/update.cjs +6 -2
  1130. package/pg-core/query-builders/update.cjs.map +1 -1
  1131. package/pg-core/query-builders/update.d.cts +2 -0
  1132. package/pg-core/query-builders/update.d.ts +2 -0
  1133. package/pg-core/query-builders/update.js +6 -2
  1134. package/pg-core/query-builders/update.js.map +1 -1
  1135. package/pg-core/schema.cjs +9 -7
  1136. package/pg-core/schema.cjs.map +1 -1
  1137. package/pg-core/schema.d.cts +3 -1
  1138. package/pg-core/schema.d.ts +3 -1
  1139. package/pg-core/schema.js +9 -7
  1140. package/pg-core/schema.js.map +1 -1
  1141. package/pg-core/session.cjs +3 -5
  1142. package/pg-core/session.cjs.map +1 -1
  1143. package/pg-core/session.d.cts +4 -7
  1144. package/pg-core/session.d.ts +4 -7
  1145. package/pg-core/session.js +3 -5
  1146. package/pg-core/session.js.map +1 -1
  1147. package/pg-core/table.cjs +23 -16
  1148. package/pg-core/table.cjs.map +1 -1
  1149. package/pg-core/table.d.cts +3 -2
  1150. package/pg-core/table.d.ts +3 -2
  1151. package/pg-core/table.js +23 -17
  1152. package/pg-core/table.js.map +1 -1
  1153. package/pg-core/utils.cjs.map +1 -1
  1154. package/pg-core/utils.d.cts +7 -1
  1155. package/pg-core/utils.d.ts +7 -1
  1156. package/pg-core/utils.js.map +1 -1
  1157. package/pg-core/view.cjs +20 -14
  1158. package/pg-core/view.cjs.map +1 -1
  1159. package/pg-core/view.d.cts +14 -7
  1160. package/pg-core/view.d.ts +14 -7
  1161. package/pg-core/view.js +20 -16
  1162. package/pg-core/view.js.map +1 -1
  1163. package/pg-proxy/driver.cjs +9 -15
  1164. package/pg-proxy/driver.cjs.map +1 -1
  1165. package/pg-proxy/driver.d.cts +6 -3
  1166. package/pg-proxy/driver.d.ts +6 -3
  1167. package/pg-proxy/driver.js +9 -14
  1168. package/pg-proxy/driver.js.map +1 -1
  1169. package/pg-proxy/index.cjs +0 -2
  1170. package/pg-proxy/index.d.cts +2 -2
  1171. package/pg-proxy/index.d.ts +2 -2
  1172. package/pg-proxy/index.js +2 -2
  1173. package/pg-proxy/migrator.cjs.map +1 -1
  1174. package/pg-proxy/migrator.d.cts +1 -1
  1175. package/pg-proxy/migrator.d.ts +1 -1
  1176. package/pg-proxy/migrator.js.map +1 -1
  1177. package/pg-proxy/session.cjs +8 -84
  1178. package/pg-proxy/session.cjs.map +1 -1
  1179. package/pg-proxy/session.d.cts +10 -33
  1180. package/pg-proxy/session.d.ts +9 -32
  1181. package/pg-proxy/session.js +10 -84
  1182. package/pg-proxy/session.js.map +1 -1
  1183. package/pglite/driver.cjs +57 -33
  1184. package/pglite/driver.cjs.map +1 -1
  1185. package/pglite/driver.d.cts +11 -23
  1186. package/pglite/driver.d.ts +12 -24
  1187. package/pglite/driver.js +57 -32
  1188. package/pglite/driver.js.map +1 -1
  1189. package/pglite/index.cjs +2 -3
  1190. package/pglite/index.d.cts +3 -3
  1191. package/pglite/index.d.ts +3 -3
  1192. package/pglite/index.js +3 -3
  1193. package/pglite/migrator.cjs.map +1 -1
  1194. package/pglite/migrator.d.cts +1 -1
  1195. package/pglite/migrator.d.ts +1 -1
  1196. package/pglite/migrator.js.map +1 -1
  1197. package/pglite/session.cjs +24 -85
  1198. package/pglite/session.cjs.map +1 -1
  1199. package/pglite/session.d.cts +9 -31
  1200. package/pglite/session.d.ts +8 -30
  1201. package/pglite/session.js +26 -86
  1202. package/pglite/session.js.map +1 -1
  1203. package/planetscale-serverless/driver.cjs +4 -3
  1204. package/planetscale-serverless/driver.cjs.map +1 -1
  1205. package/planetscale-serverless/driver.d.cts +1 -0
  1206. package/planetscale-serverless/driver.d.ts +1 -0
  1207. package/planetscale-serverless/driver.js +4 -3
  1208. package/planetscale-serverless/driver.js.map +1 -1
  1209. package/planetscale-serverless/session.cjs +26 -19
  1210. package/planetscale-serverless/session.cjs.map +1 -1
  1211. package/planetscale-serverless/session.d.cts +12 -6
  1212. package/planetscale-serverless/session.d.ts +13 -7
  1213. package/planetscale-serverless/session.js +27 -20
  1214. package/planetscale-serverless/session.js.map +1 -1
  1215. package/postgres-js/driver.cjs +87 -18
  1216. package/postgres-js/driver.cjs.map +1 -1
  1217. package/postgres-js/driver.d.cts +10 -6
  1218. package/postgres-js/driver.d.ts +10 -6
  1219. package/postgres-js/driver.js +87 -18
  1220. package/postgres-js/driver.js.map +1 -1
  1221. package/postgres-js/index.cjs +2 -2
  1222. package/postgres-js/index.d.cts +3 -3
  1223. package/postgres-js/index.d.ts +3 -3
  1224. package/postgres-js/index.js +3 -3
  1225. package/postgres-js/migrator.cjs.map +1 -1
  1226. package/postgres-js/migrator.d.cts +1 -1
  1227. package/postgres-js/migrator.d.ts +1 -1
  1228. package/postgres-js/migrator.js.map +1 -1
  1229. package/postgres-js/session.cjs +16 -111
  1230. package/postgres-js/session.cjs.map +1 -1
  1231. package/postgres-js/session.d.cts +10 -32
  1232. package/postgres-js/session.d.ts +8 -30
  1233. package/postgres-js/session.js +17 -111
  1234. package/postgres-js/session.js.map +1 -1
  1235. package/query-builders/query-builder.cjs +4 -0
  1236. package/query-builders/query-builder.cjs.map +1 -1
  1237. package/query-builders/query-builder.js +4 -0
  1238. package/query-builders/query-builder.js.map +1 -1
  1239. package/relations.cjs +96 -33
  1240. package/relations.cjs.map +1 -1
  1241. package/relations.d.cts +45 -19
  1242. package/relations.d.ts +45 -19
  1243. package/relations.js +95 -34
  1244. package/relations.js.map +1 -1
  1245. package/row-mappers/index.cjs +1 -1
  1246. package/row-mappers/index.cjs.map +1 -1
  1247. package/row-mappers/index.js +1 -1
  1248. package/row-mappers/index.js.map +1 -1
  1249. package/singlestore/driver.cjs +5 -3
  1250. package/singlestore/driver.cjs.map +1 -1
  1251. package/singlestore/driver.d.cts +3 -2
  1252. package/singlestore/driver.d.ts +3 -2
  1253. package/singlestore/driver.js +5 -3
  1254. package/singlestore/driver.js.map +1 -1
  1255. package/singlestore/session.cjs +16 -6
  1256. package/singlestore/session.cjs.map +1 -1
  1257. package/singlestore/session.d.cts +8 -4
  1258. package/singlestore/session.d.ts +8 -4
  1259. package/singlestore/session.js +17 -7
  1260. package/singlestore/session.js.map +1 -1
  1261. package/singlestore-core/casing.cjs +22 -0
  1262. package/singlestore-core/casing.cjs.map +1 -0
  1263. package/singlestore-core/casing.d.cts +15 -0
  1264. package/singlestore-core/casing.d.ts +15 -0
  1265. package/singlestore-core/casing.js +20 -0
  1266. package/singlestore-core/casing.js.map +1 -0
  1267. package/singlestore-core/columns/bigint.cjs +4 -4
  1268. package/singlestore-core/columns/bigint.cjs.map +1 -1
  1269. package/singlestore-core/columns/bigint.d.cts +2 -2
  1270. package/singlestore-core/columns/bigint.d.ts +2 -2
  1271. package/singlestore-core/columns/bigint.js +4 -4
  1272. package/singlestore-core/columns/bigint.js.map +1 -1
  1273. package/singlestore-core/columns/binary.cjs +2 -2
  1274. package/singlestore-core/columns/binary.cjs.map +1 -1
  1275. package/singlestore-core/columns/binary.d.cts +1 -1
  1276. package/singlestore-core/columns/binary.d.ts +1 -1
  1277. package/singlestore-core/columns/binary.js +2 -2
  1278. package/singlestore-core/columns/binary.js.map +1 -1
  1279. package/singlestore-core/columns/boolean.cjs +2 -2
  1280. package/singlestore-core/columns/boolean.cjs.map +1 -1
  1281. package/singlestore-core/columns/boolean.d.cts +1 -1
  1282. package/singlestore-core/columns/boolean.d.ts +1 -1
  1283. package/singlestore-core/columns/boolean.js +2 -2
  1284. package/singlestore-core/columns/boolean.js.map +1 -1
  1285. package/singlestore-core/columns/custom.cjs +4 -4
  1286. package/singlestore-core/columns/custom.cjs.map +1 -1
  1287. package/singlestore-core/columns/custom.d.cts +2 -2
  1288. package/singlestore-core/columns/custom.d.ts +2 -2
  1289. package/singlestore-core/columns/custom.js +4 -4
  1290. package/singlestore-core/columns/custom.js.map +1 -1
  1291. package/singlestore-core/columns/date.cjs +2 -2
  1292. package/singlestore-core/columns/date.cjs.map +1 -1
  1293. package/singlestore-core/columns/date.d.cts +1 -1
  1294. package/singlestore-core/columns/date.d.ts +1 -1
  1295. package/singlestore-core/columns/date.js +2 -2
  1296. package/singlestore-core/columns/date.js.map +1 -1
  1297. package/singlestore-core/columns/datetime.cjs +6 -6
  1298. package/singlestore-core/columns/datetime.cjs.map +1 -1
  1299. package/singlestore-core/columns/datetime.d.cts +3 -3
  1300. package/singlestore-core/columns/datetime.d.ts +3 -3
  1301. package/singlestore-core/columns/datetime.js +6 -6
  1302. package/singlestore-core/columns/datetime.js.map +1 -1
  1303. package/singlestore-core/columns/decimal.cjs +4 -4
  1304. package/singlestore-core/columns/decimal.cjs.map +1 -1
  1305. package/singlestore-core/columns/decimal.d.cts +2 -2
  1306. package/singlestore-core/columns/decimal.d.ts +2 -2
  1307. package/singlestore-core/columns/decimal.js +4 -4
  1308. package/singlestore-core/columns/decimal.js.map +1 -1
  1309. package/singlestore-core/columns/float.cjs +2 -2
  1310. package/singlestore-core/columns/float.cjs.map +1 -1
  1311. package/singlestore-core/columns/float.d.cts +1 -1
  1312. package/singlestore-core/columns/float.d.ts +1 -1
  1313. package/singlestore-core/columns/float.js +2 -2
  1314. package/singlestore-core/columns/float.js.map +1 -1
  1315. package/singlestore-core/columns/int.cjs +2 -2
  1316. package/singlestore-core/columns/int.cjs.map +1 -1
  1317. package/singlestore-core/columns/int.d.cts +1 -1
  1318. package/singlestore-core/columns/int.d.ts +1 -1
  1319. package/singlestore-core/columns/int.js +2 -2
  1320. package/singlestore-core/columns/int.js.map +1 -1
  1321. package/singlestore-core/columns/json.cjs +2 -2
  1322. package/singlestore-core/columns/json.cjs.map +1 -1
  1323. package/singlestore-core/columns/json.d.cts +1 -1
  1324. package/singlestore-core/columns/json.d.ts +1 -1
  1325. package/singlestore-core/columns/json.js +2 -2
  1326. package/singlestore-core/columns/json.js.map +1 -1
  1327. package/singlestore-core/columns/mediumint.cjs +2 -2
  1328. package/singlestore-core/columns/mediumint.cjs.map +1 -1
  1329. package/singlestore-core/columns/mediumint.d.cts +1 -1
  1330. package/singlestore-core/columns/mediumint.d.ts +1 -1
  1331. package/singlestore-core/columns/mediumint.js +2 -2
  1332. package/singlestore-core/columns/mediumint.js.map +1 -1
  1333. package/singlestore-core/columns/serial.cjs +2 -2
  1334. package/singlestore-core/columns/serial.cjs.map +1 -1
  1335. package/singlestore-core/columns/serial.d.cts +1 -1
  1336. package/singlestore-core/columns/serial.d.ts +1 -1
  1337. package/singlestore-core/columns/serial.js +2 -2
  1338. package/singlestore-core/columns/serial.js.map +1 -1
  1339. package/singlestore-core/columns/smallint.cjs +2 -2
  1340. package/singlestore-core/columns/smallint.cjs.map +1 -1
  1341. package/singlestore-core/columns/smallint.d.cts +1 -1
  1342. package/singlestore-core/columns/smallint.d.ts +1 -1
  1343. package/singlestore-core/columns/smallint.js +2 -2
  1344. package/singlestore-core/columns/smallint.js.map +1 -1
  1345. package/singlestore-core/columns/timestamp.cjs +6 -6
  1346. package/singlestore-core/columns/timestamp.cjs.map +1 -1
  1347. package/singlestore-core/columns/timestamp.d.cts +3 -3
  1348. package/singlestore-core/columns/timestamp.d.ts +3 -3
  1349. package/singlestore-core/columns/timestamp.js +6 -6
  1350. package/singlestore-core/columns/timestamp.js.map +1 -1
  1351. package/singlestore-core/columns/tinyint.cjs +2 -2
  1352. package/singlestore-core/columns/tinyint.cjs.map +1 -1
  1353. package/singlestore-core/columns/tinyint.d.cts +1 -1
  1354. package/singlestore-core/columns/tinyint.d.ts +1 -1
  1355. package/singlestore-core/columns/tinyint.js +2 -2
  1356. package/singlestore-core/columns/tinyint.js.map +1 -1
  1357. package/singlestore-core/columns/varbinary.cjs +2 -2
  1358. package/singlestore-core/columns/varbinary.cjs.map +1 -1
  1359. package/singlestore-core/columns/varbinary.d.cts +1 -1
  1360. package/singlestore-core/columns/varbinary.d.ts +1 -1
  1361. package/singlestore-core/columns/varbinary.js +2 -2
  1362. package/singlestore-core/columns/varbinary.js.map +1 -1
  1363. package/singlestore-core/columns/vector.cjs +8 -8
  1364. package/singlestore-core/columns/vector.cjs.map +1 -1
  1365. package/singlestore-core/columns/vector.d.cts +4 -4
  1366. package/singlestore-core/columns/vector.d.ts +4 -4
  1367. package/singlestore-core/columns/vector.js +8 -8
  1368. package/singlestore-core/columns/vector.js.map +1 -1
  1369. package/singlestore-core/columns/year.cjs +2 -2
  1370. package/singlestore-core/columns/year.cjs.map +1 -1
  1371. package/singlestore-core/columns/year.d.cts +1 -1
  1372. package/singlestore-core/columns/year.d.ts +1 -1
  1373. package/singlestore-core/columns/year.js +2 -2
  1374. package/singlestore-core/columns/year.js.map +1 -1
  1375. package/singlestore-core/db.d.cts +1 -1
  1376. package/singlestore-core/db.d.ts +1 -1
  1377. package/singlestore-core/dialect.cjs +11 -17
  1378. package/singlestore-core/dialect.cjs.map +1 -1
  1379. package/singlestore-core/dialect.d.cts +3 -5
  1380. package/singlestore-core/dialect.d.ts +4 -6
  1381. package/singlestore-core/dialect.js +11 -17
  1382. package/singlestore-core/dialect.js.map +1 -1
  1383. package/singlestore-core/index.cjs +5 -1
  1384. package/singlestore-core/index.d.cts +2 -1
  1385. package/singlestore-core/index.d.ts +2 -1
  1386. package/singlestore-core/index.js +4 -3
  1387. package/singlestore-core/query-builders/query.cjs +13 -5
  1388. package/singlestore-core/query-builders/query.cjs.map +1 -1
  1389. package/singlestore-core/query-builders/query.d.ts +1 -1
  1390. package/singlestore-core/query-builders/query.js +13 -5
  1391. package/singlestore-core/query-builders/query.js.map +1 -1
  1392. package/singlestore-core/query-builders/select.cjs +4 -0
  1393. package/singlestore-core/query-builders/select.cjs.map +1 -1
  1394. package/singlestore-core/query-builders/select.js +4 -0
  1395. package/singlestore-core/query-builders/select.js.map +1 -1
  1396. package/singlestore-core/schema.cjs +6 -11
  1397. package/singlestore-core/schema.cjs.map +1 -1
  1398. package/singlestore-core/schema.d.cts +3 -1
  1399. package/singlestore-core/schema.d.ts +3 -1
  1400. package/singlestore-core/schema.js +6 -11
  1401. package/singlestore-core/schema.js.map +1 -1
  1402. package/singlestore-core/session.cjs.map +1 -1
  1403. package/singlestore-core/session.d.cts +2 -2
  1404. package/singlestore-core/session.d.ts +2 -2
  1405. package/singlestore-core/session.js.map +1 -1
  1406. package/singlestore-core/table.cjs +13 -8
  1407. package/singlestore-core/table.cjs.map +1 -1
  1408. package/singlestore-core/table.d.cts +4 -3
  1409. package/singlestore-core/table.d.ts +4 -3
  1410. package/singlestore-core/table.js +13 -9
  1411. package/singlestore-core/table.js.map +1 -1
  1412. package/singlestore-proxy/driver.cjs +6 -3
  1413. package/singlestore-proxy/driver.cjs.map +1 -1
  1414. package/singlestore-proxy/driver.js +6 -3
  1415. package/singlestore-proxy/driver.js.map +1 -1
  1416. package/singlestore-proxy/session.cjs +11 -6
  1417. package/singlestore-proxy/session.cjs.map +1 -1
  1418. package/singlestore-proxy/session.d.cts +9 -4
  1419. package/singlestore-proxy/session.d.ts +9 -4
  1420. package/singlestore-proxy/session.js +12 -7
  1421. package/singlestore-proxy/session.js.map +1 -1
  1422. package/sql/index.cjs +1 -0
  1423. package/sql/index.d.cts +2 -2
  1424. package/sql/index.d.ts +2 -2
  1425. package/sql/index.js +2 -2
  1426. package/sql/sql.cjs +33 -12
  1427. package/sql/sql.cjs.map +1 -1
  1428. package/sql/sql.d.cts +15 -7
  1429. package/sql/sql.d.ts +15 -7
  1430. package/sql/sql.js +33 -13
  1431. package/sql/sql.js.map +1 -1
  1432. package/sql-js/driver.cjs +6 -3
  1433. package/sql-js/driver.cjs.map +1 -1
  1434. package/sql-js/driver.d.ts +1 -1
  1435. package/sql-js/driver.js +6 -3
  1436. package/sql-js/driver.js.map +1 -1
  1437. package/sql-js/session.cjs +14 -14
  1438. package/sql-js/session.cjs.map +1 -1
  1439. package/sql-js/session.d.cts +13 -9
  1440. package/sql-js/session.d.ts +16 -12
  1441. package/sql-js/session.js +18 -18
  1442. package/sql-js/session.js.map +1 -1
  1443. package/sqlite-cloud/driver.cjs +4 -3
  1444. package/sqlite-cloud/driver.cjs.map +1 -1
  1445. package/sqlite-cloud/driver.d.ts +1 -1
  1446. package/sqlite-cloud/driver.js +4 -3
  1447. package/sqlite-cloud/driver.js.map +1 -1
  1448. package/sqlite-cloud/session.cjs +20 -19
  1449. package/sqlite-cloud/session.cjs.map +1 -1
  1450. package/sqlite-cloud/session.d.cts +12 -9
  1451. package/sqlite-cloud/session.d.ts +15 -12
  1452. package/sqlite-cloud/session.js +24 -23
  1453. package/sqlite-cloud/session.js.map +1 -1
  1454. package/sqlite-core/casing.cjs +18 -0
  1455. package/sqlite-core/casing.cjs.map +1 -0
  1456. package/sqlite-core/casing.d.cts +15 -0
  1457. package/sqlite-core/casing.d.ts +15 -0
  1458. package/sqlite-core/casing.js +16 -0
  1459. package/sqlite-core/casing.js.map +1 -0
  1460. package/sqlite-core/columns/blob.cjs +10 -10
  1461. package/sqlite-core/columns/blob.cjs.map +1 -1
  1462. package/sqlite-core/columns/blob.d.cts +5 -5
  1463. package/sqlite-core/columns/blob.d.ts +5 -5
  1464. package/sqlite-core/columns/blob.js +10 -10
  1465. package/sqlite-core/columns/blob.js.map +1 -1
  1466. package/sqlite-core/columns/custom.cjs +4 -4
  1467. package/sqlite-core/columns/custom.cjs.map +1 -1
  1468. package/sqlite-core/columns/custom.d.cts +2 -2
  1469. package/sqlite-core/columns/custom.d.ts +2 -2
  1470. package/sqlite-core/columns/custom.js +4 -4
  1471. package/sqlite-core/columns/custom.js.map +1 -1
  1472. package/sqlite-core/columns/integer.cjs +8 -8
  1473. package/sqlite-core/columns/integer.cjs.map +1 -1
  1474. package/sqlite-core/columns/integer.d.cts +4 -4
  1475. package/sqlite-core/columns/integer.d.ts +4 -4
  1476. package/sqlite-core/columns/integer.js +8 -8
  1477. package/sqlite-core/columns/integer.js.map +1 -1
  1478. package/sqlite-core/columns/numeric.cjs +4 -4
  1479. package/sqlite-core/columns/numeric.cjs.map +1 -1
  1480. package/sqlite-core/columns/numeric.d.cts +2 -2
  1481. package/sqlite-core/columns/numeric.d.ts +2 -2
  1482. package/sqlite-core/columns/numeric.js +4 -4
  1483. package/sqlite-core/columns/numeric.js.map +1 -1
  1484. package/sqlite-core/columns/text.cjs +4 -4
  1485. package/sqlite-core/columns/text.cjs.map +1 -1
  1486. package/sqlite-core/columns/text.d.cts +2 -2
  1487. package/sqlite-core/columns/text.d.ts +2 -2
  1488. package/sqlite-core/columns/text.js +4 -4
  1489. package/sqlite-core/columns/text.js.map +1 -1
  1490. package/sqlite-core/db.d.cts +1 -1
  1491. package/sqlite-core/db.d.ts +1 -1
  1492. package/sqlite-core/dialect.cjs +12 -18
  1493. package/sqlite-core/dialect.cjs.map +1 -1
  1494. package/sqlite-core/dialect.d.cts +3 -5
  1495. package/sqlite-core/dialect.d.ts +4 -6
  1496. package/sqlite-core/dialect.js +12 -18
  1497. package/sqlite-core/dialect.js.map +1 -1
  1498. package/sqlite-core/index.cjs +9 -3
  1499. package/sqlite-core/index.d.cts +3 -2
  1500. package/sqlite-core/index.d.ts +3 -2
  1501. package/sqlite-core/index.js +6 -5
  1502. package/sqlite-core/query-builders/_query.cjs +1 -1
  1503. package/sqlite-core/query-builders/_query.cjs.map +1 -1
  1504. package/sqlite-core/query-builders/_query.js +1 -1
  1505. package/sqlite-core/query-builders/_query.js.map +1 -1
  1506. package/sqlite-core/query-builders/delete.cjs +1 -1
  1507. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  1508. package/sqlite-core/query-builders/delete.js +1 -1
  1509. package/sqlite-core/query-builders/delete.js.map +1 -1
  1510. package/sqlite-core/query-builders/index.cjs +1 -1
  1511. package/sqlite-core/query-builders/index.js +1 -1
  1512. package/sqlite-core/query-builders/insert.cjs +1 -1
  1513. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  1514. package/sqlite-core/query-builders/insert.js +1 -1
  1515. package/sqlite-core/query-builders/insert.js.map +1 -1
  1516. package/sqlite-core/query-builders/query.cjs +13 -5
  1517. package/sqlite-core/query-builders/query.cjs.map +1 -1
  1518. package/sqlite-core/query-builders/query.d.ts +1 -1
  1519. package/sqlite-core/query-builders/query.js +13 -5
  1520. package/sqlite-core/query-builders/query.js.map +1 -1
  1521. package/sqlite-core/query-builders/raw.cjs +0 -4
  1522. package/sqlite-core/query-builders/raw.cjs.map +1 -1
  1523. package/sqlite-core/query-builders/raw.js +0 -4
  1524. package/sqlite-core/query-builders/raw.js.map +1 -1
  1525. package/sqlite-core/query-builders/select.cjs +5 -1
  1526. package/sqlite-core/query-builders/select.cjs.map +1 -1
  1527. package/sqlite-core/query-builders/select.js +5 -1
  1528. package/sqlite-core/query-builders/select.js.map +1 -1
  1529. package/sqlite-core/query-builders/update.cjs +1 -1
  1530. package/sqlite-core/query-builders/update.cjs.map +1 -1
  1531. package/sqlite-core/query-builders/update.js +1 -1
  1532. package/sqlite-core/query-builders/update.js.map +1 -1
  1533. package/sqlite-core/session.cjs +8 -8
  1534. package/sqlite-core/session.cjs.map +1 -1
  1535. package/sqlite-core/session.d.cts +5 -5
  1536. package/sqlite-core/session.d.ts +5 -5
  1537. package/sqlite-core/session.js +8 -8
  1538. package/sqlite-core/session.js.map +1 -1
  1539. package/sqlite-core/table.cjs +15 -8
  1540. package/sqlite-core/table.cjs.map +1 -1
  1541. package/sqlite-core/table.d.cts +3 -2
  1542. package/sqlite-core/table.d.ts +3 -2
  1543. package/sqlite-core/table.js +14 -9
  1544. package/sqlite-core/table.js.map +1 -1
  1545. package/sqlite-core/view.cjs +10 -5
  1546. package/sqlite-core/view.cjs.map +1 -1
  1547. package/sqlite-core/view.d.cts +9 -5
  1548. package/sqlite-core/view.d.ts +9 -5
  1549. package/sqlite-core/view.js +11 -7
  1550. package/sqlite-core/view.js.map +1 -1
  1551. package/sqlite-proxy/driver.cjs +4 -3
  1552. package/sqlite-proxy/driver.cjs.map +1 -1
  1553. package/sqlite-proxy/driver.d.ts +1 -1
  1554. package/sqlite-proxy/driver.js +4 -3
  1555. package/sqlite-proxy/driver.js.map +1 -1
  1556. package/sqlite-proxy/session.cjs +19 -16
  1557. package/sqlite-proxy/session.cjs.map +1 -1
  1558. package/sqlite-proxy/session.d.cts +12 -8
  1559. package/sqlite-proxy/session.d.ts +18 -14
  1560. package/sqlite-proxy/session.js +23 -20
  1561. package/sqlite-proxy/session.js.map +1 -1
  1562. package/table.d.cts +1 -1
  1563. package/table.d.ts +1 -1
  1564. package/tidb-serverless/driver.cjs +4 -3
  1565. package/tidb-serverless/driver.cjs.map +1 -1
  1566. package/tidb-serverless/driver.d.cts +1 -0
  1567. package/tidb-serverless/driver.d.ts +1 -0
  1568. package/tidb-serverless/driver.js +4 -3
  1569. package/tidb-serverless/driver.js.map +1 -1
  1570. package/tidb-serverless/session.cjs +24 -36
  1571. package/tidb-serverless/session.cjs.map +1 -1
  1572. package/tidb-serverless/session.d.cts +10 -4
  1573. package/tidb-serverless/session.d.ts +11 -5
  1574. package/tidb-serverless/session.js +25 -37
  1575. package/tidb-serverless/session.js.map +1 -1
  1576. package/tursodatabase/driver-core.cjs +4 -3
  1577. package/tursodatabase/driver-core.cjs.map +1 -1
  1578. package/tursodatabase/driver-core.d.ts +1 -1
  1579. package/tursodatabase/driver-core.js +4 -3
  1580. package/tursodatabase/driver-core.js.map +1 -1
  1581. package/tursodatabase/session.cjs +19 -18
  1582. package/tursodatabase/session.cjs.map +1 -1
  1583. package/tursodatabase/session.d.cts +12 -9
  1584. package/tursodatabase/session.d.ts +15 -12
  1585. package/tursodatabase/session.js +23 -22
  1586. package/tursodatabase/session.js.map +1 -1
  1587. package/up-migrations/effect-pg.cjs +3 -3
  1588. package/up-migrations/effect-pg.cjs.map +1 -1
  1589. package/up-migrations/effect-pg.js +3 -3
  1590. package/up-migrations/effect-pg.js.map +1 -1
  1591. package/up-migrations/pg-proxy.cjs +2 -2
  1592. package/up-migrations/pg-proxy.cjs.map +1 -1
  1593. package/up-migrations/pg-proxy.d.cts +1 -1
  1594. package/up-migrations/pg-proxy.d.ts +1 -1
  1595. package/up-migrations/pg-proxy.js +2 -2
  1596. package/up-migrations/pg-proxy.js.map +1 -1
  1597. package/up-migrations/pg.cjs +3 -8
  1598. package/up-migrations/pg.cjs.map +1 -1
  1599. package/up-migrations/pg.d.cts +1 -1
  1600. package/up-migrations/pg.d.ts +1 -1
  1601. package/up-migrations/pg.js +3 -8
  1602. package/up-migrations/pg.js.map +1 -1
  1603. package/up-migrations/sqlite.d.ts +4 -4
  1604. package/utils.cjs +139 -12
  1605. package/utils.cjs.map +1 -1
  1606. package/utils.d.cts +12 -5
  1607. package/utils.d.ts +12 -5
  1608. package/utils.js +136 -13
  1609. package/utils.js.map +1 -1
  1610. package/vercel-postgres/driver.cjs +38 -32
  1611. package/vercel-postgres/driver.cjs.map +1 -1
  1612. package/vercel-postgres/driver.d.cts +11 -23
  1613. package/vercel-postgres/driver.d.ts +11 -23
  1614. package/vercel-postgres/driver.js +38 -31
  1615. package/vercel-postgres/driver.js.map +1 -1
  1616. package/vercel-postgres/index.cjs +2 -3
  1617. package/vercel-postgres/index.d.cts +3 -3
  1618. package/vercel-postgres/index.d.ts +3 -3
  1619. package/vercel-postgres/index.js +3 -3
  1620. package/vercel-postgres/migrator.cjs.map +1 -1
  1621. package/vercel-postgres/migrator.d.cts +1 -1
  1622. package/vercel-postgres/migrator.d.ts +1 -1
  1623. package/vercel-postgres/migrator.js.map +1 -1
  1624. package/vercel-postgres/session.cjs +32 -110
  1625. package/vercel-postgres/session.cjs.map +1 -1
  1626. package/vercel-postgres/session.d.cts +9 -33
  1627. package/vercel-postgres/session.d.ts +8 -32
  1628. package/vercel-postgres/session.js +34 -111
  1629. package/vercel-postgres/session.js.map +1 -1
  1630. package/xata-http/driver.cjs +117 -31
  1631. package/xata-http/driver.cjs.map +1 -1
  1632. package/xata-http/driver.d.cts +9 -22
  1633. package/xata-http/driver.d.ts +9 -22
  1634. package/xata-http/driver.js +117 -30
  1635. package/xata-http/driver.js.map +1 -1
  1636. package/xata-http/index.cjs +2 -4
  1637. package/xata-http/index.d.cts +3 -3
  1638. package/xata-http/index.d.ts +3 -3
  1639. package/xata-http/index.js +3 -3
  1640. package/xata-http/migrator.cjs +1 -1
  1641. package/xata-http/migrator.cjs.map +1 -1
  1642. package/xata-http/migrator.d.cts +1 -1
  1643. package/xata-http/migrator.d.ts +1 -1
  1644. package/xata-http/migrator.js +1 -1
  1645. package/xata-http/migrator.js.map +1 -1
  1646. package/xata-http/session.cjs +23 -109
  1647. package/xata-http/session.cjs.map +1 -1
  1648. package/xata-http/session.d.cts +7 -34
  1649. package/xata-http/session.d.ts +5 -32
  1650. package/xata-http/session.js +25 -109
  1651. package/xata-http/session.js.map +1 -1
  1652. package/gel/driver.cjs +0 -76
  1653. package/gel/driver.cjs.map +0 -1
  1654. package/gel/driver.d.cts +0 -43
  1655. package/gel/driver.d.ts +0 -43
  1656. package/gel/driver.js +0 -66
  1657. package/gel/driver.js.map +0 -1
  1658. package/gel/index.cjs +0 -15
  1659. package/gel/index.d.cts +0 -3
  1660. package/gel/index.d.ts +0 -3
  1661. package/gel/index.js +0 -4
  1662. package/gel/migrator.cjs +0 -0
  1663. package/gel/migrator.d.cts +0 -1
  1664. package/gel/migrator.d.ts +0 -1
  1665. package/gel/migrator.js +0 -1
  1666. package/gel/session.cjs +0 -136
  1667. package/gel/session.cjs.map +0 -1
  1668. package/gel/session.d.cts +0 -67
  1669. package/gel/session.d.ts +0 -67
  1670. package/gel/session.js +0 -132
  1671. package/gel/session.js.map +0 -1
  1672. package/gel-core/alias.cjs +0 -12
  1673. package/gel-core/alias.cjs.map +0 -1
  1674. package/gel-core/alias.d.cts +0 -9
  1675. package/gel-core/alias.d.ts +0 -9
  1676. package/gel-core/alias.js +0 -10
  1677. package/gel-core/alias.js.map +0 -1
  1678. package/gel-core/checks.cjs +0 -36
  1679. package/gel-core/checks.cjs.map +0 -1
  1680. package/gel-core/checks.d.cts +0 -23
  1681. package/gel-core/checks.d.ts +0 -23
  1682. package/gel-core/checks.js +0 -32
  1683. package/gel-core/checks.js.map +0 -1
  1684. package/gel-core/columns/all.cjs +0 -51
  1685. package/gel-core/columns/all.cjs.map +0 -1
  1686. package/gel-core/columns/all.d.cts +0 -48
  1687. package/gel-core/columns/all.d.ts +0 -48
  1688. package/gel-core/columns/all.js +0 -50
  1689. package/gel-core/columns/all.js.map +0 -1
  1690. package/gel-core/columns/bigint.cjs +0 -32
  1691. package/gel-core/columns/bigint.cjs.map +0 -1
  1692. package/gel-core/columns/bigint.d.cts +0 -22
  1693. package/gel-core/columns/bigint.d.ts +0 -22
  1694. package/gel-core/columns/bigint.js +0 -28
  1695. package/gel-core/columns/bigint.js.map +0 -1
  1696. package/gel-core/columns/bigintT.cjs +0 -35
  1697. package/gel-core/columns/bigintT.cjs.map +0 -1
  1698. package/gel-core/columns/bigintT.d.cts +0 -23
  1699. package/gel-core/columns/bigintT.d.ts +0 -23
  1700. package/gel-core/columns/bigintT.js +0 -31
  1701. package/gel-core/columns/bigintT.js.map +0 -1
  1702. package/gel-core/columns/boolean.cjs +0 -31
  1703. package/gel-core/columns/boolean.cjs.map +0 -1
  1704. package/gel-core/columns/boolean.d.cts +0 -21
  1705. package/gel-core/columns/boolean.d.ts +0 -21
  1706. package/gel-core/columns/boolean.js +0 -27
  1707. package/gel-core/columns/boolean.js.map +0 -1
  1708. package/gel-core/columns/bytes.cjs +0 -31
  1709. package/gel-core/columns/bytes.cjs.map +0 -1
  1710. package/gel-core/columns/bytes.d.cts +0 -21
  1711. package/gel-core/columns/bytes.d.ts +0 -21
  1712. package/gel-core/columns/bytes.js +0 -27
  1713. package/gel-core/columns/bytes.js.map +0 -1
  1714. package/gel-core/columns/common.cjs +0 -185
  1715. package/gel-core/columns/common.cjs.map +0 -1
  1716. package/gel-core/columns/common.d.cts +0 -135
  1717. package/gel-core/columns/common.d.ts +0 -135
  1718. package/gel-core/columns/common.js +0 -178
  1719. package/gel-core/columns/common.js.map +0 -1
  1720. package/gel-core/columns/custom.cjs +0 -66
  1721. package/gel-core/columns/custom.cjs.map +0 -1
  1722. package/gel-core/columns/custom.d.cts +0 -266
  1723. package/gel-core/columns/custom.d.ts +0 -266
  1724. package/gel-core/columns/custom.js +0 -62
  1725. package/gel-core/columns/custom.js.map +0 -1
  1726. package/gel-core/columns/date-duration.cjs +0 -31
  1727. package/gel-core/columns/date-duration.cjs.map +0 -1
  1728. package/gel-core/columns/date-duration.d.cts +0 -22
  1729. package/gel-core/columns/date-duration.d.ts +0 -22
  1730. package/gel-core/columns/date-duration.js +0 -27
  1731. package/gel-core/columns/date-duration.js.map +0 -1
  1732. package/gel-core/columns/date.common.cjs +0 -17
  1733. package/gel-core/columns/date.common.cjs.map +0 -1
  1734. package/gel-core/columns/date.common.d.cts +0 -13
  1735. package/gel-core/columns/date.common.d.ts +0 -13
  1736. package/gel-core/columns/date.common.js +0 -15
  1737. package/gel-core/columns/date.common.js.map +0 -1
  1738. package/gel-core/columns/decimal.cjs +0 -34
  1739. package/gel-core/columns/decimal.cjs.map +0 -1
  1740. package/gel-core/columns/decimal.d.cts +0 -25
  1741. package/gel-core/columns/decimal.d.ts +0 -25
  1742. package/gel-core/columns/decimal.js +0 -30
  1743. package/gel-core/columns/decimal.js.map +0 -1
  1744. package/gel-core/columns/double-precision.cjs +0 -35
  1745. package/gel-core/columns/double-precision.cjs.map +0 -1
  1746. package/gel-core/columns/double-precision.d.cts +0 -22
  1747. package/gel-core/columns/double-precision.d.ts +0 -22
  1748. package/gel-core/columns/double-precision.js +0 -31
  1749. package/gel-core/columns/double-precision.js.map +0 -1
  1750. package/gel-core/columns/duration.cjs +0 -31
  1751. package/gel-core/columns/duration.cjs.map +0 -1
  1752. package/gel-core/columns/duration.d.cts +0 -22
  1753. package/gel-core/columns/duration.d.ts +0 -22
  1754. package/gel-core/columns/duration.js +0 -27
  1755. package/gel-core/columns/duration.js.map +0 -1
  1756. package/gel-core/columns/index.cjs +0 -91
  1757. package/gel-core/columns/index.d.cts +0 -23
  1758. package/gel-core/columns/index.d.ts +0 -23
  1759. package/gel-core/columns/index.js +0 -24
  1760. package/gel-core/columns/int.common.cjs +0 -39
  1761. package/gel-core/columns/int.common.cjs.map +0 -1
  1762. package/gel-core/columns/int.common.d.cts +0 -20
  1763. package/gel-core/columns/int.common.d.ts +0 -20
  1764. package/gel-core/columns/int.common.js +0 -37
  1765. package/gel-core/columns/int.common.js.map +0 -1
  1766. package/gel-core/columns/integer.cjs +0 -32
  1767. package/gel-core/columns/integer.cjs.map +0 -1
  1768. package/gel-core/columns/integer.d.cts +0 -22
  1769. package/gel-core/columns/integer.d.ts +0 -22
  1770. package/gel-core/columns/integer.js +0 -28
  1771. package/gel-core/columns/integer.js.map +0 -1
  1772. package/gel-core/columns/json.cjs +0 -34
  1773. package/gel-core/columns/json.cjs.map +0 -1
  1774. package/gel-core/columns/json.d.cts +0 -25
  1775. package/gel-core/columns/json.d.ts +0 -25
  1776. package/gel-core/columns/json.js +0 -30
  1777. package/gel-core/columns/json.js.map +0 -1
  1778. package/gel-core/columns/localdate.cjs +0 -32
  1779. package/gel-core/columns/localdate.cjs.map +0 -1
  1780. package/gel-core/columns/localdate.d.cts +0 -23
  1781. package/gel-core/columns/localdate.d.ts +0 -23
  1782. package/gel-core/columns/localdate.js +0 -28
  1783. package/gel-core/columns/localdate.js.map +0 -1
  1784. package/gel-core/columns/localtime.cjs +0 -32
  1785. package/gel-core/columns/localtime.cjs.map +0 -1
  1786. package/gel-core/columns/localtime.d.cts +0 -23
  1787. package/gel-core/columns/localtime.d.ts +0 -23
  1788. package/gel-core/columns/localtime.js +0 -28
  1789. package/gel-core/columns/localtime.js.map +0 -1
  1790. package/gel-core/columns/real.cjs +0 -35
  1791. package/gel-core/columns/real.cjs.map +0 -1
  1792. package/gel-core/columns/real.d.cts +0 -27
  1793. package/gel-core/columns/real.d.ts +0 -27
  1794. package/gel-core/columns/real.js +0 -31
  1795. package/gel-core/columns/real.js.map +0 -1
  1796. package/gel-core/columns/relative-duration.cjs +0 -31
  1797. package/gel-core/columns/relative-duration.cjs.map +0 -1
  1798. package/gel-core/columns/relative-duration.d.cts +0 -22
  1799. package/gel-core/columns/relative-duration.d.ts +0 -22
  1800. package/gel-core/columns/relative-duration.js +0 -27
  1801. package/gel-core/columns/relative-duration.js.map +0 -1
  1802. package/gel-core/columns/smallint.cjs +0 -32
  1803. package/gel-core/columns/smallint.cjs.map +0 -1
  1804. package/gel-core/columns/smallint.d.cts +0 -22
  1805. package/gel-core/columns/smallint.d.ts +0 -22
  1806. package/gel-core/columns/smallint.js +0 -28
  1807. package/gel-core/columns/smallint.js.map +0 -1
  1808. package/gel-core/columns/text.cjs +0 -32
  1809. package/gel-core/columns/text.cjs.map +0 -1
  1810. package/gel-core/columns/text.d.cts +0 -24
  1811. package/gel-core/columns/text.d.ts +0 -24
  1812. package/gel-core/columns/text.js +0 -28
  1813. package/gel-core/columns/text.js.map +0 -1
  1814. package/gel-core/columns/timestamp.cjs +0 -35
  1815. package/gel-core/columns/timestamp.cjs.map +0 -1
  1816. package/gel-core/columns/timestamp.d.cts +0 -27
  1817. package/gel-core/columns/timestamp.d.ts +0 -27
  1818. package/gel-core/columns/timestamp.js +0 -31
  1819. package/gel-core/columns/timestamp.js.map +0 -1
  1820. package/gel-core/columns/timestamptz.cjs +0 -39
  1821. package/gel-core/columns/timestamptz.cjs.map +0 -1
  1822. package/gel-core/columns/timestamptz.d.cts +0 -27
  1823. package/gel-core/columns/timestamptz.d.ts +0 -27
  1824. package/gel-core/columns/timestamptz.js +0 -35
  1825. package/gel-core/columns/timestamptz.js.map +0 -1
  1826. package/gel-core/columns/uuid.cjs +0 -31
  1827. package/gel-core/columns/uuid.cjs.map +0 -1
  1828. package/gel-core/columns/uuid.d.cts +0 -21
  1829. package/gel-core/columns/uuid.d.ts +0 -21
  1830. package/gel-core/columns/uuid.js +0 -27
  1831. package/gel-core/columns/uuid.js.map +0 -1
  1832. package/gel-core/db.cjs +0 -386
  1833. package/gel-core/db.cjs.map +0 -1
  1834. package/gel-core/db.d.cts +0 -294
  1835. package/gel-core/db.d.ts +0 -294
  1836. package/gel-core/db.js +0 -383
  1837. package/gel-core/db.js.map +0 -1
  1838. package/gel-core/dialect.cjs +0 -575
  1839. package/gel-core/dialect.cjs.map +0 -1
  1840. package/gel-core/dialect.d.cts +0 -154
  1841. package/gel-core/dialect.d.ts +0 -154
  1842. package/gel-core/dialect.js +0 -572
  1843. package/gel-core/dialect.js.map +0 -1
  1844. package/gel-core/expressions.cjs +0 -28
  1845. package/gel-core/expressions.cjs.map +0 -1
  1846. package/gel-core/expressions.d.cts +0 -16
  1847. package/gel-core/expressions.d.ts +0 -16
  1848. package/gel-core/expressions.js +0 -20
  1849. package/gel-core/expressions.js.map +0 -1
  1850. package/gel-core/foreign-keys.cjs +0 -83
  1851. package/gel-core/foreign-keys.cjs.map +0 -1
  1852. package/gel-core/foreign-keys.d.cts +0 -50
  1853. package/gel-core/foreign-keys.d.ts +0 -50
  1854. package/gel-core/foreign-keys.js +0 -79
  1855. package/gel-core/foreign-keys.js.map +0 -1
  1856. package/gel-core/index.cjs +0 -189
  1857. package/gel-core/index.d.cts +0 -48
  1858. package/gel-core/index.d.ts +0 -48
  1859. package/gel-core/index.js +0 -47
  1860. package/gel-core/indexes.cjs +0 -115
  1861. package/gel-core/indexes.cjs.map +0 -1
  1862. package/gel-core/indexes.d.cts +0 -81
  1863. package/gel-core/indexes.d.ts +0 -81
  1864. package/gel-core/indexes.js +0 -109
  1865. package/gel-core/indexes.js.map +0 -1
  1866. package/gel-core/policies.cjs +0 -37
  1867. package/gel-core/policies.cjs.map +0 -1
  1868. package/gel-core/policies.d.cts +0 -29
  1869. package/gel-core/policies.d.ts +0 -29
  1870. package/gel-core/policies.js +0 -34
  1871. package/gel-core/policies.js.map +0 -1
  1872. package/gel-core/primary-keys.cjs +0 -44
  1873. package/gel-core/primary-keys.cjs.map +0 -1
  1874. package/gel-core/primary-keys.d.cts +0 -35
  1875. package/gel-core/primary-keys.d.ts +0 -35
  1876. package/gel-core/primary-keys.js +0 -40
  1877. package/gel-core/primary-keys.js.map +0 -1
  1878. package/gel-core/query-builders/_query.cjs +0 -95
  1879. package/gel-core/query-builders/_query.cjs.map +0 -1
  1880. package/gel-core/query-builders/_query.d.cts +0 -51
  1881. package/gel-core/query-builders/_query.d.ts +0 -51
  1882. package/gel-core/query-builders/_query.js +0 -91
  1883. package/gel-core/query-builders/_query.js.map +0 -1
  1884. package/gel-core/query-builders/count.cjs +0 -44
  1885. package/gel-core/query-builders/count.cjs.map +0 -1
  1886. package/gel-core/query-builders/count.d.cts +0 -31
  1887. package/gel-core/query-builders/count.d.ts +0 -31
  1888. package/gel-core/query-builders/count.js +0 -42
  1889. package/gel-core/query-builders/count.js.map +0 -1
  1890. package/gel-core/query-builders/delete.cjs +0 -94
  1891. package/gel-core/query-builders/delete.cjs.map +0 -1
  1892. package/gel-core/query-builders/delete.d.cts +0 -104
  1893. package/gel-core/query-builders/delete.d.ts +0 -104
  1894. package/gel-core/query-builders/delete.js +0 -92
  1895. package/gel-core/query-builders/delete.js.map +0 -1
  1896. package/gel-core/query-builders/index.cjs +0 -24
  1897. package/gel-core/query-builders/index.d.cts +0 -8
  1898. package/gel-core/query-builders/index.d.ts +0 -8
  1899. package/gel-core/query-builders/index.js +0 -8
  1900. package/gel-core/query-builders/insert.cjs +0 -151
  1901. package/gel-core/query-builders/insert.cjs.map +0 -1
  1902. package/gel-core/query-builders/insert.d.cts +0 -112
  1903. package/gel-core/query-builders/insert.d.ts +0 -112
  1904. package/gel-core/query-builders/insert.js +0 -148
  1905. package/gel-core/query-builders/insert.js.map +0 -1
  1906. package/gel-core/query-builders/query-builder.cjs +0 -92
  1907. package/gel-core/query-builders/query-builder.cjs.map +0 -1
  1908. package/gel-core/query-builders/query-builder.d.cts +0 -44
  1909. package/gel-core/query-builders/query-builder.d.ts +0 -44
  1910. package/gel-core/query-builders/query-builder.js +0 -90
  1911. package/gel-core/query-builders/query-builder.js.map +0 -1
  1912. package/gel-core/query-builders/query.cjs +0 -85
  1913. package/gel-core/query-builders/query.cjs.map +0 -1
  1914. package/gel-core/query-builders/query.d.cts +0 -47
  1915. package/gel-core/query-builders/query.d.ts +0 -47
  1916. package/gel-core/query-builders/query.js +0 -82
  1917. package/gel-core/query-builders/query.js.map +0 -1
  1918. package/gel-core/query-builders/raw.cjs +0 -37
  1919. package/gel-core/query-builders/raw.cjs.map +0 -1
  1920. package/gel-core/query-builders/raw.d.cts +0 -26
  1921. package/gel-core/query-builders/raw.d.ts +0 -26
  1922. package/gel-core/query-builders/raw.js +0 -35
  1923. package/gel-core/query-builders/raw.js.map +0 -1
  1924. package/gel-core/query-builders/refresh-materialized-view.cjs +0 -55
  1925. package/gel-core/query-builders/refresh-materialized-view.cjs.map +0 -1
  1926. package/gel-core/query-builders/refresh-materialized-view.d.cts +0 -32
  1927. package/gel-core/query-builders/refresh-materialized-view.d.ts +0 -32
  1928. package/gel-core/query-builders/refresh-materialized-view.js +0 -53
  1929. package/gel-core/query-builders/refresh-materialized-view.js.map +0 -1
  1930. package/gel-core/query-builders/select.cjs +0 -961
  1931. package/gel-core/query-builders/select.cjs.map +0 -1
  1932. package/gel-core/query-builders/select.d.cts +0 -805
  1933. package/gel-core/query-builders/select.d.ts +0 -805
  1934. package/gel-core/query-builders/select.js +0 -951
  1935. package/gel-core/query-builders/select.js.map +0 -1
  1936. package/gel-core/query-builders/select.types.cjs +0 -0
  1937. package/gel-core/query-builders/select.types.d.cts +0 -141
  1938. package/gel-core/query-builders/select.types.d.ts +0 -141
  1939. package/gel-core/query-builders/select.types.js +0 -1
  1940. package/gel-core/query-builders/update.cjs +0 -190
  1941. package/gel-core/query-builders/update.cjs.map +0 -1
  1942. package/gel-core/query-builders/update.d.cts +0 -160
  1943. package/gel-core/query-builders/update.d.ts +0 -160
  1944. package/gel-core/query-builders/update.js +0 -187
  1945. package/gel-core/query-builders/update.js.map +0 -1
  1946. package/gel-core/roles.cjs +0 -36
  1947. package/gel-core/roles.cjs.map +0 -1
  1948. package/gel-core/roles.d.cts +0 -18
  1949. package/gel-core/roles.d.ts +0 -18
  1950. package/gel-core/roles.js +0 -33
  1951. package/gel-core/roles.js.map +0 -1
  1952. package/gel-core/schema.cjs +0 -39
  1953. package/gel-core/schema.cjs.map +0 -1
  1954. package/gel-core/schema.d.cts +0 -20
  1955. package/gel-core/schema.d.ts +0 -20
  1956. package/gel-core/schema.js +0 -35
  1957. package/gel-core/schema.js.map +0 -1
  1958. package/gel-core/sequence.cjs +0 -30
  1959. package/gel-core/sequence.cjs.map +0 -1
  1960. package/gel-core/sequence.d.cts +0 -23
  1961. package/gel-core/sequence.d.ts +0 -23
  1962. package/gel-core/sequence.js +0 -25
  1963. package/gel-core/sequence.js.map +0 -1
  1964. package/gel-core/session.cjs +0 -112
  1965. package/gel-core/session.cjs.map +0 -1
  1966. package/gel-core/session.d.cts +0 -75
  1967. package/gel-core/session.d.ts +0 -75
  1968. package/gel-core/session.js +0 -108
  1969. package/gel-core/session.js.map +0 -1
  1970. package/gel-core/subquery.cjs +0 -0
  1971. package/gel-core/subquery.d.cts +0 -10
  1972. package/gel-core/subquery.d.ts +0 -10
  1973. package/gel-core/subquery.js +0 -1
  1974. package/gel-core/table.cjs +0 -69
  1975. package/gel-core/table.cjs.map +0 -1
  1976. package/gel-core/table.d.cts +0 -98
  1977. package/gel-core/table.d.ts +0 -98
  1978. package/gel-core/table.js +0 -62
  1979. package/gel-core/table.js.map +0 -1
  1980. package/gel-core/unique-constraint.cjs +0 -65
  1981. package/gel-core/unique-constraint.cjs.map +0 -1
  1982. package/gel-core/unique-constraint.d.cts +0 -30
  1983. package/gel-core/unique-constraint.d.ts +0 -30
  1984. package/gel-core/unique-constraint.js +0 -59
  1985. package/gel-core/unique-constraint.js.map +0 -1
  1986. package/gel-core/utils.cjs +0 -77
  1987. package/gel-core/utils.cjs.map +0 -1
  1988. package/gel-core/utils.d.cts +0 -59
  1989. package/gel-core/utils.d.ts +0 -59
  1990. package/gel-core/utils.js +0 -72
  1991. package/gel-core/utils.js.map +0 -1
  1992. package/gel-core/view-base.cjs +0 -13
  1993. package/gel-core/view-base.cjs.map +0 -1
  1994. package/gel-core/view-base.d.cts +0 -13
  1995. package/gel-core/view-base.d.ts +0 -13
  1996. package/gel-core/view-base.js +0 -11
  1997. package/gel-core/view-base.js.map +0 -1
  1998. package/gel-core/view-common.cjs +0 -10
  1999. package/gel-core/view-common.cjs.map +0 -1
  2000. package/gel-core/view-common.d.cts +0 -6
  2001. package/gel-core/view-common.d.ts +0 -6
  2002. package/gel-core/view-common.js +0 -7
  2003. package/gel-core/view-common.js.map +0 -1
  2004. package/gel-core/view.cjs +0 -230
  2005. package/gel-core/view.cjs.map +0 -1
  2006. package/gel-core/view.d.cts +0 -159
  2007. package/gel-core/view.d.ts +0 -159
  2008. package/gel-core/view.js +0 -219
  2009. package/gel-core/view.js.map +0 -1
  2010. package/pg-core/query-builders/_query.cjs +0 -101
  2011. package/pg-core/query-builders/_query.cjs.map +0 -1
  2012. package/pg-core/query-builders/_query.d.cts +0 -55
  2013. package/pg-core/query-builders/_query.d.ts +0 -55
  2014. package/pg-core/query-builders/_query.js +0 -97
  2015. package/pg-core/query-builders/_query.js.map +0 -1
  2016. package/pg-core/utils/array.cjs.map +0 -1
  2017. package/pg-core/utils/array.js.map +0 -1
  2018. package/pg-core/utils/index.cjs +0 -6
  2019. package/pg-core/utils/index.d.cts +0 -2
  2020. package/pg-core/utils/index.d.ts +0 -2
  2021. package/pg-core/utils/index.js +0 -3
  2022. package/prisma/mysql/driver.cjs +0 -32
  2023. package/prisma/mysql/driver.cjs.map +0 -1
  2024. package/prisma/mysql/driver.d.cts +0 -28
  2025. package/prisma/mysql/driver.d.ts +0 -28
  2026. package/prisma/mysql/driver.js +0 -29
  2027. package/prisma/mysql/driver.js.map +0 -1
  2028. package/prisma/mysql/index.cjs +0 -8
  2029. package/prisma/mysql/index.d.cts +0 -3
  2030. package/prisma/mysql/index.d.ts +0 -3
  2031. package/prisma/mysql/index.js +0 -4
  2032. package/prisma/mysql/session.cjs +0 -54
  2033. package/prisma/mysql/session.cjs.map +0 -1
  2034. package/prisma/mysql/session.d.cts +0 -43
  2035. package/prisma/mysql/session.d.ts +0 -43
  2036. package/prisma/mysql/session.js +0 -51
  2037. package/prisma/mysql/session.js.map +0 -1
  2038. package/prisma/pg/driver.cjs +0 -33
  2039. package/prisma/pg/driver.cjs.map +0 -1
  2040. package/prisma/pg/driver.d.cts +0 -28
  2041. package/prisma/pg/driver.d.ts +0 -28
  2042. package/prisma/pg/driver.js +0 -30
  2043. package/prisma/pg/driver.js.map +0 -1
  2044. package/prisma/pg/index.cjs +0 -8
  2045. package/prisma/pg/index.d.cts +0 -3
  2046. package/prisma/pg/index.d.ts +0 -3
  2047. package/prisma/pg/index.js +0 -4
  2048. package/prisma/pg/session.cjs +0 -54
  2049. package/prisma/pg/session.cjs.map +0 -1
  2050. package/prisma/pg/session.d.cts +0 -41
  2051. package/prisma/pg/session.d.ts +0 -41
  2052. package/prisma/pg/session.js +0 -51
  2053. package/prisma/pg/session.js.map +0 -1
  2054. package/prisma/sqlite/driver.cjs +0 -25
  2055. package/prisma/sqlite/driver.cjs.map +0 -1
  2056. package/prisma/sqlite/driver.d.cts +0 -21
  2057. package/prisma/sqlite/driver.d.ts +0 -21
  2058. package/prisma/sqlite/driver.js +0 -23
  2059. package/prisma/sqlite/driver.js.map +0 -1
  2060. package/prisma/sqlite/index.cjs +0 -7
  2061. package/prisma/sqlite/index.d.cts +0 -3
  2062. package/prisma/sqlite/index.d.ts +0 -3
  2063. package/prisma/sqlite/index.js +0 -4
  2064. package/prisma/sqlite/session.cjs +0 -57
  2065. package/prisma/sqlite/session.cjs.map +0 -1
  2066. package/prisma/sqlite/session.d.cts +0 -42
  2067. package/prisma/sqlite/session.d.ts +0 -42
  2068. package/prisma/sqlite/session.js +0 -54
  2069. package/prisma/sqlite/session.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"_relations.cjs","names":["entityKind","Table","is","PrimaryKeyBuilder","Column","SQL"],"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type CommentInput, type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport type DBQueryConfigWithComment<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t\tcomment?: CommentInput | undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\t// let primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\t// if (primaryKey) {\n\t\t\t\t\t// \ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\t// primaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function mapRelationalRowFromObj(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst isOne = is(relation, One);\n\t\t\tconst rawSubRows = row[selectionItemIndex] as unknown[] | null | [null] | string;\n\n\t\t\tlet subRows = rawSubRows as unknown[] | null;\n\t\t\tif (subRows || Array.isArray(subRows)) {\n\t\t\t\tsubRows = (typeof rawSubRows === 'string' ? JSON.parse(rawSubRows) : rawSubRows) as unknown[];\n\n\t\t\t\tsubRows = isOne\n\t\t\t\t\t? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r as any))\n\t\t\t\t\t: subRows.map((r) => Array.isArray(r) ? r : Object.values(r as any));\n\t\t\t}\n\n\t\t\tresult[selectionItem.tsKey] = isOne\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: ((subRows ?? []) as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"_relations.cjs","names":["entityKind","Table","is","PrimaryKeyBuilder","Column","SQL"],"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type CommentInput, type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport type DBQueryConfigWithComment<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> = DBQueryConfig<TRelationType, TIsRoot, TSchema, TTableConfig> & { comment?: CommentInput | undefined };\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\t// let primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\t// if (primaryKey) {\n\t\t\t\t\t// \ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\t// primaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function mapRelationalRowFromObj(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst isOne = is(relation, One);\n\t\t\tconst rawSubRows = row[selectionItemIndex] as unknown[] | null | [null] | string;\n\n\t\t\tlet subRows = rawSubRows as unknown[] | null;\n\t\t\tif (subRows || Array.isArray(subRows)) {\n\t\t\t\tsubRows = (typeof rawSubRows === 'string' ? JSON.parse(rawSubRows) : rawSubRows) as unknown[];\n\n\t\t\t\tsubRows = isOne\n\t\t\t\t\t? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r as any))\n\t\t\t\t\t: subRows.map((r) => Array.isArray(r) ? r : Object.values(r as any));\n\t\t\t}\n\n\t\t\tresult[selectionItem.tsKey] = isOne\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: ((subRows ?? []) as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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"}
package/_relations.d.cts CHANGED
@@ -109,20 +109,9 @@ type DBQueryConfig<TRelationType extends 'one' | 'many' = 'one' | 'many', TIsRoo
109
109
  } & (TIsRoot extends true ? {
110
110
  offset?: number | Placeholder | undefined;
111
111
  } : {}) : {});
112
- type DBQueryConfigWithComment<TRelationType extends 'one' | 'many' = 'one' | 'many', TIsRoot extends boolean = boolean, TSchema extends TablesRelationalConfig = TablesRelationalConfig, TTableConfig extends TableRelationalConfig = TableRelationalConfig> = {
113
- columns?: { [K in keyof TTableConfig['columns']]?: boolean } | undefined;
114
- with?: { [K in keyof TTableConfig['relations']]?: true | DBQueryConfig<TTableConfig['relations'][K] extends One ? 'one' : 'many', false, TSchema, FindTableByDBName<TSchema, TTableConfig['relations'][K]['referencedTableName']>> | undefined } | undefined;
115
- extras?: Record<string, SQL.Aliased> | ((fields: Simplify<[TTableConfig['columns']] extends [never] ? {} : TTableConfig['columns']>, operators: {
116
- sql: Operators['sql'];
117
- }) => Record<string, SQL.Aliased>) | undefined;
112
+ type DBQueryConfigWithComment<TRelationType extends 'one' | 'many' = 'one' | 'many', TIsRoot extends boolean = boolean, TSchema extends TablesRelationalConfig = TablesRelationalConfig, TTableConfig extends TableRelationalConfig = TableRelationalConfig> = DBQueryConfig<TRelationType, TIsRoot, TSchema, TTableConfig> & {
118
113
  comment?: CommentInput | undefined;
119
- } & (TRelationType extends 'many' ? {
120
- where?: SQL | undefined | ((fields: Simplify<[TTableConfig['columns']] extends [never] ? {} : TTableConfig['columns']>, operators: Operators) => SQL | undefined);
121
- orderBy?: ValueOrArray<AnyColumn | SQL> | ((fields: Simplify<[TTableConfig['columns']] extends [never] ? {} : TTableConfig['columns']>, operators: OrderByOperators) => ValueOrArray<AnyColumn | SQL>) | undefined;
122
- limit?: number | Placeholder | undefined;
123
- } & (TIsRoot extends true ? {
124
- offset?: number | Placeholder | undefined;
125
- } : {}) : {});
114
+ };
126
115
  interface TableRelationalConfig {
127
116
  tsName: string;
128
117
  dbName: string;
package/_relations.d.ts CHANGED
@@ -109,20 +109,9 @@ type DBQueryConfig<TRelationType extends 'one' | 'many' = 'one' | 'many', TIsRoo
109
109
  } & (TIsRoot extends true ? {
110
110
  offset?: number | Placeholder | undefined;
111
111
  } : {}) : {});
112
- type DBQueryConfigWithComment<TRelationType extends 'one' | 'many' = 'one' | 'many', TIsRoot extends boolean = boolean, TSchema extends TablesRelationalConfig = TablesRelationalConfig, TTableConfig extends TableRelationalConfig = TableRelationalConfig> = {
113
- columns?: { [K in keyof TTableConfig['columns']]?: boolean } | undefined;
114
- with?: { [K in keyof TTableConfig['relations']]?: true | DBQueryConfig<TTableConfig['relations'][K] extends One ? 'one' : 'many', false, TSchema, FindTableByDBName<TSchema, TTableConfig['relations'][K]['referencedTableName']>> | undefined } | undefined;
115
- extras?: Record<string, SQL.Aliased> | ((fields: Simplify<[TTableConfig['columns']] extends [never] ? {} : TTableConfig['columns']>, operators: {
116
- sql: Operators['sql'];
117
- }) => Record<string, SQL.Aliased>) | undefined;
112
+ type DBQueryConfigWithComment<TRelationType extends 'one' | 'many' = 'one' | 'many', TIsRoot extends boolean = boolean, TSchema extends TablesRelationalConfig = TablesRelationalConfig, TTableConfig extends TableRelationalConfig = TableRelationalConfig> = DBQueryConfig<TRelationType, TIsRoot, TSchema, TTableConfig> & {
118
113
  comment?: CommentInput | undefined;
119
- } & (TRelationType extends 'many' ? {
120
- where?: SQL | undefined | ((fields: Simplify<[TTableConfig['columns']] extends [never] ? {} : TTableConfig['columns']>, operators: Operators) => SQL | undefined);
121
- orderBy?: ValueOrArray<AnyColumn | SQL> | ((fields: Simplify<[TTableConfig['columns']] extends [never] ? {} : TTableConfig['columns']>, operators: OrderByOperators) => ValueOrArray<AnyColumn | SQL>) | undefined;
122
- limit?: number | Placeholder | undefined;
123
- } & (TIsRoot extends true ? {
124
- offset?: number | Placeholder | undefined;
125
- } : {}) : {});
114
+ };
126
115
  interface TableRelationalConfig {
127
116
  tsName: string;
128
117
  dbName: string;
package/_relations.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"_relations.js","names":[],"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type CommentInput, type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport type DBQueryConfigWithComment<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t\tcomment?: CommentInput | undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\t// let primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\t// if (primaryKey) {\n\t\t\t\t\t// \ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\t// primaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function mapRelationalRowFromObj(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst isOne = is(relation, One);\n\t\t\tconst rawSubRows = row[selectionItemIndex] as unknown[] | null | [null] | string;\n\n\t\t\tlet subRows = rawSubRows as unknown[] | null;\n\t\t\tif (subRows || Array.isArray(subRows)) {\n\t\t\t\tsubRows = (typeof rawSubRows === 'string' ? JSON.parse(rawSubRows) : rawSubRows) as unknown[];\n\n\t\t\t\tsubRows = isOne\n\t\t\t\t\t? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r as any))\n\t\t\t\t\t: subRows.map((r) => Array.isArray(r) ? r : Object.values(r as any));\n\t\t\t}\n\n\t\t\tresult[selectionItem.tsKey] = isOne\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: ((subRows ?? []) as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"_relations.js","names":[],"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type CommentInput, type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport type DBQueryConfigWithComment<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> = DBQueryConfig<TRelationType, TIsRoot, TSchema, TTableConfig> & { comment?: CommentInput | undefined };\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\t// let primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\t// if (primaryKey) {\n\t\t\t\t\t// \ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\t// primaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function mapRelationalRowFromObj(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst isOne = is(relation, One);\n\t\t\tconst rawSubRows = row[selectionItemIndex] as unknown[] | null | [null] | string;\n\n\t\t\tlet subRows = rawSubRows as unknown[] | null;\n\t\t\tif (subRows || Array.isArray(subRows)) {\n\t\t\t\tsubRows = (typeof rawSubRows === 'string' ? JSON.parse(rawSubRows) : rawSubRows) as unknown[];\n\n\t\t\t\tsubRows = isOne\n\t\t\t\t\t? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r as any))\n\t\t\t\t\t: subRows.map((r) => Array.isArray(r) ? r : Object.values(r as any));\n\t\t\t}\n\n\t\t\tresult[selectionItem.tsKey] = isOne\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: ((subRows ?? []) as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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"}
@@ -55,6 +55,8 @@ function toValueParam(value, typings) {
55
55
  else if (typeof value === "number" && !Number.isInteger(value)) response.value = { doubleValue: value };
56
56
  else if (typeof value === "boolean") response.value = { booleanValue: value };
57
57
  else if (value instanceof Date) response.value = { stringValue: value.toISOString().replace("T", " ").replace("Z", "") };
58
+ else if (typeof value === "bigint") response.value = { stringValue: value.toString() };
59
+ else if (typeof Buffer !== "undefined" && Buffer.isBuffer(value) || value instanceof Uint8Array) response.value = { blobValue: value };
58
60
  else throw new Error(`Unknown type for ${value}`);
59
61
  return response;
60
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";;;AAIA,MAAa,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAM,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;KAExF,OAAM,IAAI,MAAM,oBAAoB,QAAQ;AAG7C,QAAO"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else if (typeof value === 'bigint') {\n\t\tresponse.value = { stringValue: value.toString() };\n\t} else if ((typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) || value instanceof Uint8Array) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\tresponse.value = { blobValue: value };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";;;AAIA,MAAa,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAM,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;UAC9E,OAAO,UAAU,SAC3B,UAAS,QAAQ,EAAE,aAAa,MAAM,UAAU,EAAE;UACvC,OAAO,WAAW,eAAe,OAAO,SAAS,MAAM,IAAK,iBAAiB,WACxF,UAAS,QAAQ,EAAE,WAAW,OAAO;KAErC,OAAM,IAAI,MAAM,oBAAoB,QAAQ;AAG7C,QAAO"}
@@ -4,7 +4,7 @@ import { Field, TypeHint } from "@aws-sdk/client-rds-data";
4
4
 
5
5
  //#region src/aws-data-api/common/index.d.ts
6
6
  declare const typeHint: { [K in TypeHint]: K };
7
- declare function getValueFromDataApi(field: Field): string | number | boolean | string[] | Uint8Array<ArrayBufferLike> | number[] | boolean[] | _aws_sdk_client_rds_data0.ArrayValue[] | null;
7
+ declare function getValueFromDataApi(field: Field): string | number | boolean | string[] | number[] | Uint8Array<ArrayBufferLike> | boolean[] | _aws_sdk_client_rds_data0.ArrayValue[] | null;
8
8
  declare function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined;
9
9
  declare function toValueParam(value: any, typings?: QueryTypingsValue): {
10
10
  value: Field;
@@ -4,7 +4,7 @@ import { Field, TypeHint } from "@aws-sdk/client-rds-data";
4
4
 
5
5
  //#region src/aws-data-api/common/index.d.ts
6
6
  declare const typeHint: { [K in TypeHint]: K };
7
- declare function getValueFromDataApi(field: Field): string | number | boolean | string[] | Uint8Array<ArrayBufferLike> | number[] | boolean[] | _aws_sdk_client_rds_data0.ArrayValue[] | null;
7
+ declare function getValueFromDataApi(field: Field): string | number | boolean | string[] | number[] | Uint8Array<ArrayBufferLike> | boolean[] | _aws_sdk_client_rds_data0.ArrayValue[] | null;
8
8
  declare function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined;
9
9
  declare function toValueParam(value: any, typings?: QueryTypingsValue): {
10
10
  value: Field;
@@ -53,6 +53,8 @@ function toValueParam(value, typings) {
53
53
  else if (typeof value === "number" && !Number.isInteger(value)) response.value = { doubleValue: value };
54
54
  else if (typeof value === "boolean") response.value = { booleanValue: value };
55
55
  else if (value instanceof Date) response.value = { stringValue: value.toISOString().replace("T", " ").replace("Z", "") };
56
+ else if (typeof value === "bigint") response.value = { stringValue: value.toString() };
57
+ else if (typeof Buffer !== "undefined" && Buffer.isBuffer(value) || value instanceof Uint8Array) response.value = { blobValue: value };
56
58
  else throw new Error(`Unknown type for ${value}`);
57
59
  return response;
58
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";AAIA,MAAa,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAM,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;KAExF,OAAM,IAAI,MAAM,oBAAoB,QAAQ;AAG7C,QAAO"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else if (typeof value === 'bigint') {\n\t\tresponse.value = { stringValue: value.toString() };\n\t} else if ((typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) || value instanceof Uint8Array) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\tresponse.value = { blobValue: value };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";AAIA,MAAa,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAM,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;UAC9E,OAAO,UAAU,SAC3B,UAAS,QAAQ,EAAE,aAAa,MAAM,UAAU,EAAE;UACvC,OAAO,WAAW,eAAe,OAAO,SAAS,MAAM,IAAK,iBAAiB,WACxF,UAAS,QAAQ,EAAE,WAAW,OAAO;KAErC,OAAM,IAAI,MAAM,oBAAoB,QAAQ;AAG7C,QAAO"}