drizzle-orm 0.44.1 → 0.44.2-512acc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (800) hide show
  1. package/aws-data-api/pg/driver.cjs +14 -6
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +4 -3
  4. package/aws-data-api/pg/driver.d.ts +4 -3
  5. package/aws-data-api/pg/driver.js +14 -6
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/session.cjs +26 -9
  8. package/aws-data-api/pg/session.cjs.map +1 -1
  9. package/aws-data-api/pg/session.d.cts +5 -4
  10. package/aws-data-api/pg/session.d.ts +5 -4
  11. package/aws-data-api/pg/session.js +26 -9
  12. package/aws-data-api/pg/session.js.map +1 -1
  13. package/better-sqlite3/driver.cjs.map +1 -1
  14. package/better-sqlite3/driver.d.cts +4 -3
  15. package/better-sqlite3/driver.d.ts +4 -3
  16. package/better-sqlite3/driver.js.map +1 -1
  17. package/better-sqlite3/session.cjs +4 -4
  18. package/better-sqlite3/session.cjs.map +1 -1
  19. package/better-sqlite3/session.d.cts +4 -4
  20. package/better-sqlite3/session.d.ts +4 -4
  21. package/better-sqlite3/session.js +4 -4
  22. package/better-sqlite3/session.js.map +1 -1
  23. package/bun-sql/driver.cjs +3 -2
  24. package/bun-sql/driver.cjs.map +1 -1
  25. package/bun-sql/driver.d.cts +4 -3
  26. package/bun-sql/driver.d.ts +4 -3
  27. package/bun-sql/driver.js +3 -2
  28. package/bun-sql/driver.js.map +1 -1
  29. package/bun-sql/session.cjs +20 -11
  30. package/bun-sql/session.cjs.map +1 -1
  31. package/bun-sql/session.d.cts +6 -5
  32. package/bun-sql/session.d.ts +6 -5
  33. package/bun-sql/session.js +20 -11
  34. package/bun-sql/session.js.map +1 -1
  35. package/bun-sqlite/driver.cjs.map +1 -1
  36. package/bun-sqlite/driver.d.cts +4 -3
  37. package/bun-sqlite/driver.d.ts +4 -3
  38. package/bun-sqlite/driver.js.map +1 -1
  39. package/bun-sqlite/session.cjs +4 -4
  40. package/bun-sqlite/session.cjs.map +1 -1
  41. package/bun-sqlite/session.d.cts +4 -4
  42. package/bun-sqlite/session.d.ts +4 -4
  43. package/bun-sqlite/session.js +4 -4
  44. package/bun-sqlite/session.js.map +1 -1
  45. package/column-builder.cjs.map +1 -1
  46. package/column-builder.d.cts +7 -2
  47. package/column-builder.d.ts +7 -2
  48. package/column-builder.js.map +1 -1
  49. package/column.cjs +2 -0
  50. package/column.cjs.map +1 -1
  51. package/column.d.cts +6 -0
  52. package/column.d.ts +6 -0
  53. package/column.js +2 -0
  54. package/column.js.map +1 -1
  55. package/d1/driver.cjs +9 -2
  56. package/d1/driver.cjs.map +1 -1
  57. package/d1/driver.d.cts +2 -1
  58. package/d1/driver.d.ts +2 -1
  59. package/d1/driver.js +9 -2
  60. package/d1/driver.js.map +1 -1
  61. package/d1/session.cjs +20 -11
  62. package/d1/session.cjs.map +1 -1
  63. package/d1/session.d.cts +8 -7
  64. package/d1/session.d.ts +8 -7
  65. package/d1/session.js +20 -11
  66. package/d1/session.js.map +1 -1
  67. package/durable-sqlite/driver.cjs.map +1 -1
  68. package/durable-sqlite/driver.d.cts +2 -1
  69. package/durable-sqlite/driver.d.ts +2 -1
  70. package/durable-sqlite/driver.js.map +1 -1
  71. package/durable-sqlite/session.cjs +4 -4
  72. package/durable-sqlite/session.cjs.map +1 -1
  73. package/durable-sqlite/session.d.cts +4 -4
  74. package/durable-sqlite/session.d.ts +4 -4
  75. package/durable-sqlite/session.js +4 -4
  76. package/durable-sqlite/session.js.map +1 -1
  77. package/expo-sqlite/driver.cjs.map +1 -1
  78. package/expo-sqlite/driver.d.cts +2 -1
  79. package/expo-sqlite/driver.d.ts +2 -1
  80. package/expo-sqlite/driver.js.map +1 -1
  81. package/expo-sqlite/session.cjs +4 -4
  82. package/expo-sqlite/session.cjs.map +1 -1
  83. package/expo-sqlite/session.d.cts +4 -4
  84. package/expo-sqlite/session.d.ts +4 -4
  85. package/expo-sqlite/session.js +4 -4
  86. package/expo-sqlite/session.js.map +1 -1
  87. package/extension-core/gel/index.cjs +33 -0
  88. package/extension-core/gel/index.cjs.map +1 -0
  89. package/extension-core/gel/index.d.cts +67 -0
  90. package/extension-core/gel/index.d.ts +67 -0
  91. package/extension-core/gel/index.js +9 -0
  92. package/extension-core/gel/index.js.map +1 -0
  93. package/extension-core/index.cjs +42 -0
  94. package/extension-core/index.cjs.map +1 -0
  95. package/extension-core/index.d.cts +9 -0
  96. package/extension-core/index.d.ts +9 -0
  97. package/extension-core/index.js +15 -0
  98. package/extension-core/index.js.map +1 -0
  99. package/extension-core/mysql/index.cjs +33 -0
  100. package/extension-core/mysql/index.cjs.map +1 -0
  101. package/extension-core/mysql/index.d.cts +69 -0
  102. package/extension-core/mysql/index.d.ts +69 -0
  103. package/extension-core/mysql/index.js +9 -0
  104. package/extension-core/mysql/index.js.map +1 -0
  105. package/extension-core/pg/index.cjs +33 -0
  106. package/extension-core/pg/index.cjs.map +1 -0
  107. package/extension-core/pg/index.d.cts +67 -0
  108. package/extension-core/pg/index.d.ts +67 -0
  109. package/extension-core/pg/index.js +9 -0
  110. package/extension-core/pg/index.js.map +1 -0
  111. package/extension-core/singlestore/index.cjs +33 -0
  112. package/extension-core/singlestore/index.cjs.map +1 -0
  113. package/extension-core/singlestore/index.d.cts +67 -0
  114. package/extension-core/singlestore/index.d.ts +67 -0
  115. package/extension-core/singlestore/index.js +9 -0
  116. package/extension-core/singlestore/index.js.map +1 -0
  117. package/extension-core/sqlite/index.cjs +33 -0
  118. package/extension-core/sqlite/index.cjs.map +1 -0
  119. package/extension-core/sqlite/index.d.cts +68 -0
  120. package/extension-core/sqlite/index.d.ts +68 -0
  121. package/extension-core/sqlite/index.js +9 -0
  122. package/extension-core/sqlite/index.js.map +1 -0
  123. package/extensions/hook/gel/index.cjs +47 -0
  124. package/extensions/hook/gel/index.cjs.map +1 -0
  125. package/extensions/hook/gel/index.d.cts +11 -0
  126. package/extensions/hook/gel/index.d.ts +11 -0
  127. package/extensions/hook/gel/index.js +22 -0
  128. package/extensions/hook/gel/index.js.map +1 -0
  129. package/extensions/hook/mysql/index.cjs +47 -0
  130. package/extensions/hook/mysql/index.cjs.map +1 -0
  131. package/extensions/hook/mysql/index.d.cts +11 -0
  132. package/extensions/hook/mysql/index.d.ts +11 -0
  133. package/extensions/hook/mysql/index.js +22 -0
  134. package/extensions/hook/mysql/index.js.map +1 -0
  135. package/extensions/hook/pg/index.cjs +47 -0
  136. package/extensions/hook/pg/index.cjs.map +1 -0
  137. package/extensions/hook/pg/index.d.cts +11 -0
  138. package/extensions/hook/pg/index.d.ts +11 -0
  139. package/extensions/hook/pg/index.js +22 -0
  140. package/extensions/hook/pg/index.js.map +1 -0
  141. package/extensions/hook/singlestore/index.cjs +47 -0
  142. package/extensions/hook/singlestore/index.cjs.map +1 -0
  143. package/extensions/hook/singlestore/index.d.cts +11 -0
  144. package/extensions/hook/singlestore/index.d.ts +11 -0
  145. package/extensions/hook/singlestore/index.js +22 -0
  146. package/extensions/hook/singlestore/index.js.map +1 -0
  147. package/extensions/hook/sqlite/index.cjs +47 -0
  148. package/extensions/hook/sqlite/index.cjs.map +1 -0
  149. package/extensions/hook/sqlite/index.d.cts +11 -0
  150. package/extensions/hook/sqlite/index.d.ts +11 -0
  151. package/extensions/hook/sqlite/index.js +22 -0
  152. package/extensions/hook/sqlite/index.js.map +1 -0
  153. package/extensions/s3-file/common.cjs +313 -0
  154. package/extensions/s3-file/common.cjs.map +1 -0
  155. package/extensions/s3-file/common.d.cts +88 -0
  156. package/extensions/s3-file/common.d.ts +88 -0
  157. package/extensions/s3-file/common.js +280 -0
  158. package/extensions/s3-file/common.js.map +1 -0
  159. package/extensions/s3-file/gel/column.cjs +113 -0
  160. package/extensions/s3-file/gel/column.cjs.map +1 -0
  161. package/extensions/s3-file/gel/column.d.cts +105 -0
  162. package/extensions/s3-file/gel/column.d.ts +105 -0
  163. package/extensions/s3-file/gel/column.js +92 -0
  164. package/extensions/s3-file/gel/column.js.map +1 -0
  165. package/extensions/s3-file/gel/extension.cjs +262 -0
  166. package/extensions/s3-file/gel/extension.cjs.map +1 -0
  167. package/extensions/s3-file/gel/extension.d.cts +18 -0
  168. package/extensions/s3-file/gel/extension.d.ts +18 -0
  169. package/extensions/s3-file/gel/extension.js +248 -0
  170. package/extensions/s3-file/gel/extension.js.map +1 -0
  171. package/extensions/s3-file/gel/index.cjs +25 -0
  172. package/extensions/s3-file/gel/index.cjs.map +1 -0
  173. package/extensions/s3-file/gel/index.d.cts +2 -0
  174. package/extensions/s3-file/gel/index.d.ts +2 -0
  175. package/extensions/s3-file/gel/index.js +3 -0
  176. package/extensions/s3-file/gel/index.js.map +1 -0
  177. package/extensions/s3-file/index.cjs +23 -0
  178. package/extensions/s3-file/index.cjs.map +1 -0
  179. package/extensions/s3-file/index.d.cts +1 -0
  180. package/extensions/s3-file/index.d.ts +1 -0
  181. package/extensions/s3-file/index.js +2 -0
  182. package/extensions/s3-file/index.js.map +1 -0
  183. package/extensions/s3-file/mysql/column.cjs +110 -0
  184. package/extensions/s3-file/mysql/column.cjs.map +1 -0
  185. package/extensions/s3-file/mysql/column.d.cts +63 -0
  186. package/extensions/s3-file/mysql/column.d.ts +63 -0
  187. package/extensions/s3-file/mysql/column.js +86 -0
  188. package/extensions/s3-file/mysql/column.js.map +1 -0
  189. package/extensions/s3-file/mysql/extension.cjs +242 -0
  190. package/extensions/s3-file/mysql/extension.cjs.map +1 -0
  191. package/extensions/s3-file/mysql/extension.d.cts +18 -0
  192. package/extensions/s3-file/mysql/extension.d.ts +18 -0
  193. package/extensions/s3-file/mysql/extension.js +228 -0
  194. package/extensions/s3-file/mysql/extension.js.map +1 -0
  195. package/extensions/s3-file/mysql/index.cjs +25 -0
  196. package/extensions/s3-file/mysql/index.cjs.map +1 -0
  197. package/extensions/s3-file/mysql/index.d.cts +2 -0
  198. package/extensions/s3-file/mysql/index.d.ts +2 -0
  199. package/extensions/s3-file/mysql/index.js +3 -0
  200. package/extensions/s3-file/mysql/index.js.map +1 -0
  201. package/extensions/s3-file/pg/column.cjs +113 -0
  202. package/extensions/s3-file/pg/column.cjs.map +1 -0
  203. package/extensions/s3-file/pg/column.d.cts +105 -0
  204. package/extensions/s3-file/pg/column.d.ts +105 -0
  205. package/extensions/s3-file/pg/column.js +92 -0
  206. package/extensions/s3-file/pg/column.js.map +1 -0
  207. package/extensions/s3-file/pg/extension.cjs +264 -0
  208. package/extensions/s3-file/pg/extension.cjs.map +1 -0
  209. package/extensions/s3-file/pg/extension.d.cts +18 -0
  210. package/extensions/s3-file/pg/extension.d.ts +18 -0
  211. package/extensions/s3-file/pg/extension.js +250 -0
  212. package/extensions/s3-file/pg/extension.js.map +1 -0
  213. package/extensions/s3-file/pg/index.cjs +25 -0
  214. package/extensions/s3-file/pg/index.cjs.map +1 -0
  215. package/extensions/s3-file/pg/index.d.cts +2 -0
  216. package/extensions/s3-file/pg/index.d.ts +2 -0
  217. package/extensions/s3-file/pg/index.js +3 -0
  218. package/extensions/s3-file/pg/index.js.map +1 -0
  219. package/extensions/s3-file/singlestore/column.cjs +110 -0
  220. package/extensions/s3-file/singlestore/column.cjs.map +1 -0
  221. package/extensions/s3-file/singlestore/column.d.cts +63 -0
  222. package/extensions/s3-file/singlestore/column.d.ts +63 -0
  223. package/extensions/s3-file/singlestore/column.js +86 -0
  224. package/extensions/s3-file/singlestore/column.js.map +1 -0
  225. package/extensions/s3-file/singlestore/extension.cjs +239 -0
  226. package/extensions/s3-file/singlestore/extension.cjs.map +1 -0
  227. package/extensions/s3-file/singlestore/extension.d.cts +18 -0
  228. package/extensions/s3-file/singlestore/extension.d.ts +18 -0
  229. package/extensions/s3-file/singlestore/extension.js +225 -0
  230. package/extensions/s3-file/singlestore/extension.js.map +1 -0
  231. package/extensions/s3-file/singlestore/index.cjs +25 -0
  232. package/extensions/s3-file/singlestore/index.cjs.map +1 -0
  233. package/extensions/s3-file/singlestore/index.d.cts +2 -0
  234. package/extensions/s3-file/singlestore/index.d.ts +2 -0
  235. package/extensions/s3-file/singlestore/index.js +3 -0
  236. package/extensions/s3-file/singlestore/index.js.map +1 -0
  237. package/extensions/s3-file/sqlite/column.cjs +110 -0
  238. package/extensions/s3-file/sqlite/column.cjs.map +1 -0
  239. package/extensions/s3-file/sqlite/column.d.cts +63 -0
  240. package/extensions/s3-file/sqlite/column.d.ts +63 -0
  241. package/extensions/s3-file/sqlite/column.js +86 -0
  242. package/extensions/s3-file/sqlite/column.js.map +1 -0
  243. package/extensions/s3-file/sqlite/extension.cjs +242 -0
  244. package/extensions/s3-file/sqlite/extension.cjs.map +1 -0
  245. package/extensions/s3-file/sqlite/extension.d.cts +18 -0
  246. package/extensions/s3-file/sqlite/extension.d.ts +18 -0
  247. package/extensions/s3-file/sqlite/extension.js +228 -0
  248. package/extensions/s3-file/sqlite/extension.js.map +1 -0
  249. package/extensions/s3-file/sqlite/index.cjs +25 -0
  250. package/extensions/s3-file/sqlite/index.cjs.map +1 -0
  251. package/extensions/s3-file/sqlite/index.d.cts +2 -0
  252. package/extensions/s3-file/sqlite/index.d.ts +2 -0
  253. package/extensions/s3-file/sqlite/index.js +3 -0
  254. package/extensions/s3-file/sqlite/index.js.map +1 -0
  255. package/gel/driver.cjs +6 -4
  256. package/gel/driver.cjs.map +1 -1
  257. package/gel/driver.d.cts +6 -4
  258. package/gel/driver.d.ts +6 -4
  259. package/gel/driver.js +6 -4
  260. package/gel/driver.js.map +1 -1
  261. package/gel/session.cjs +12 -9
  262. package/gel/session.cjs.map +1 -1
  263. package/gel/session.d.cts +5 -4
  264. package/gel/session.d.ts +5 -4
  265. package/gel/session.js +12 -9
  266. package/gel/session.js.map +1 -1
  267. package/gel-core/columns/common.cjs +8 -0
  268. package/gel-core/columns/common.cjs.map +1 -1
  269. package/gel-core/columns/common.d.cts +2 -0
  270. package/gel-core/columns/common.d.ts +2 -0
  271. package/gel-core/columns/common.js +8 -0
  272. package/gel-core/columns/common.js.map +1 -1
  273. package/gel-core/db.cjs +5 -3
  274. package/gel-core/db.cjs.map +1 -1
  275. package/gel-core/db.d.cts +3 -1
  276. package/gel-core/db.d.ts +3 -1
  277. package/gel-core/db.js +5 -3
  278. package/gel-core/db.js.map +1 -1
  279. package/gel-core/dialect.cjs +24 -19
  280. package/gel-core/dialect.cjs.map +1 -1
  281. package/gel-core/dialect.d.cts +7 -6
  282. package/gel-core/dialect.d.ts +7 -6
  283. package/gel-core/dialect.js +25 -20
  284. package/gel-core/dialect.js.map +1 -1
  285. package/gel-core/query-builders/delete.cjs +19 -5
  286. package/gel-core/query-builders/delete.cjs.map +1 -1
  287. package/gel-core/query-builders/delete.js +19 -5
  288. package/gel-core/query-builders/delete.js.map +1 -1
  289. package/gel-core/query-builders/insert.cjs +44 -9
  290. package/gel-core/query-builders/insert.cjs.map +1 -1
  291. package/gel-core/query-builders/insert.js +46 -11
  292. package/gel-core/query-builders/insert.js.map +1 -1
  293. package/gel-core/query-builders/query.cjs +15 -2
  294. package/gel-core/query-builders/query.cjs.map +1 -1
  295. package/gel-core/query-builders/query.js +15 -2
  296. package/gel-core/query-builders/query.js.map +1 -1
  297. package/gel-core/query-builders/select.cjs +21 -5
  298. package/gel-core/query-builders/select.cjs.map +1 -1
  299. package/gel-core/query-builders/select.d.cts +9 -9
  300. package/gel-core/query-builders/select.d.ts +9 -9
  301. package/gel-core/query-builders/select.js +21 -5
  302. package/gel-core/query-builders/select.js.map +1 -1
  303. package/gel-core/query-builders/select.types.cjs.map +1 -1
  304. package/gel-core/query-builders/select.types.d.cts +2 -1
  305. package/gel-core/query-builders/select.types.d.ts +2 -1
  306. package/gel-core/query-builders/update.cjs +20 -6
  307. package/gel-core/query-builders/update.cjs.map +1 -1
  308. package/gel-core/query-builders/update.js +20 -6
  309. package/gel-core/query-builders/update.js.map +1 -1
  310. package/gel-core/session.cjs +47 -4
  311. package/gel-core/session.cjs.map +1 -1
  312. package/gel-core/session.d.cts +11 -5
  313. package/gel-core/session.d.ts +11 -5
  314. package/gel-core/session.js +47 -4
  315. package/gel-core/session.js.map +1 -1
  316. package/libsql/driver-core.cjs +3 -2
  317. package/libsql/driver-core.cjs.map +1 -1
  318. package/libsql/driver-core.js +3 -2
  319. package/libsql/driver-core.js.map +1 -1
  320. package/libsql/driver.cjs +4 -1
  321. package/libsql/driver.cjs.map +1 -1
  322. package/libsql/driver.d.cts +4 -3
  323. package/libsql/driver.d.ts +4 -3
  324. package/libsql/driver.js +4 -1
  325. package/libsql/driver.js.map +1 -1
  326. package/libsql/http/index.cjs +4 -1
  327. package/libsql/http/index.cjs.map +1 -1
  328. package/libsql/http/index.d.cts +4 -3
  329. package/libsql/http/index.d.ts +4 -3
  330. package/libsql/http/index.js +4 -1
  331. package/libsql/http/index.js.map +1 -1
  332. package/libsql/node/index.cjs +4 -1
  333. package/libsql/node/index.cjs.map +1 -1
  334. package/libsql/node/index.d.cts +4 -3
  335. package/libsql/node/index.d.ts +4 -3
  336. package/libsql/node/index.js +4 -1
  337. package/libsql/node/index.js.map +1 -1
  338. package/libsql/session.cjs +29 -12
  339. package/libsql/session.cjs.map +1 -1
  340. package/libsql/session.d.cts +8 -7
  341. package/libsql/session.d.ts +8 -7
  342. package/libsql/session.js +29 -12
  343. package/libsql/session.js.map +1 -1
  344. package/libsql/sqlite3/index.cjs +4 -1
  345. package/libsql/sqlite3/index.cjs.map +1 -1
  346. package/libsql/sqlite3/index.d.cts +4 -3
  347. package/libsql/sqlite3/index.d.ts +4 -3
  348. package/libsql/sqlite3/index.js +4 -1
  349. package/libsql/sqlite3/index.js.map +1 -1
  350. package/libsql/wasm/index.cjs +4 -1
  351. package/libsql/wasm/index.cjs.map +1 -1
  352. package/libsql/wasm/index.d.cts +4 -3
  353. package/libsql/wasm/index.d.ts +4 -3
  354. package/libsql/wasm/index.js +4 -1
  355. package/libsql/wasm/index.js.map +1 -1
  356. package/libsql/web/index.cjs +4 -1
  357. package/libsql/web/index.cjs.map +1 -1
  358. package/libsql/web/index.d.cts +4 -3
  359. package/libsql/web/index.d.ts +4 -3
  360. package/libsql/web/index.js +4 -1
  361. package/libsql/web/index.js.map +1 -1
  362. package/libsql/ws/index.cjs +4 -1
  363. package/libsql/ws/index.cjs.map +1 -1
  364. package/libsql/ws/index.d.cts +4 -3
  365. package/libsql/ws/index.d.ts +4 -3
  366. package/libsql/ws/index.js +4 -1
  367. package/libsql/ws/index.js.map +1 -1
  368. package/mysql-core/db.cjs +5 -3
  369. package/mysql-core/db.cjs.map +1 -1
  370. package/mysql-core/db.d.cts +3 -1
  371. package/mysql-core/db.d.ts +3 -1
  372. package/mysql-core/db.js +5 -3
  373. package/mysql-core/db.js.map +1 -1
  374. package/mysql-core/dialect.cjs +29 -23
  375. package/mysql-core/dialect.cjs.map +1 -1
  376. package/mysql-core/dialect.d.cts +8 -7
  377. package/mysql-core/dialect.d.ts +8 -7
  378. package/mysql-core/dialect.js +30 -24
  379. package/mysql-core/dialect.js.map +1 -1
  380. package/mysql-core/query-builders/delete.cjs +8 -1
  381. package/mysql-core/query-builders/delete.cjs.map +1 -1
  382. package/mysql-core/query-builders/delete.js +8 -1
  383. package/mysql-core/query-builders/delete.js.map +1 -1
  384. package/mysql-core/query-builders/insert.cjs +30 -6
  385. package/mysql-core/query-builders/insert.cjs.map +1 -1
  386. package/mysql-core/query-builders/insert.js +32 -8
  387. package/mysql-core/query-builders/insert.js.map +1 -1
  388. package/mysql-core/query-builders/query.cjs +19 -3
  389. package/mysql-core/query-builders/query.cjs.map +1 -1
  390. package/mysql-core/query-builders/query.js +19 -3
  391. package/mysql-core/query-builders/query.js.map +1 -1
  392. package/mysql-core/query-builders/select.cjs +23 -6
  393. package/mysql-core/query-builders/select.cjs.map +1 -1
  394. package/mysql-core/query-builders/select.d.cts +8 -8
  395. package/mysql-core/query-builders/select.d.ts +8 -8
  396. package/mysql-core/query-builders/select.js +23 -6
  397. package/mysql-core/query-builders/select.js.map +1 -1
  398. package/mysql-core/query-builders/select.types.cjs.map +1 -1
  399. package/mysql-core/query-builders/select.types.d.cts +2 -1
  400. package/mysql-core/query-builders/select.types.d.ts +2 -1
  401. package/mysql-core/query-builders/update.cjs +15 -3
  402. package/mysql-core/query-builders/update.cjs.map +1 -1
  403. package/mysql-core/query-builders/update.js +15 -3
  404. package/mysql-core/query-builders/update.js.map +1 -1
  405. package/mysql-core/session.cjs +43 -4
  406. package/mysql-core/session.cjs.map +1 -1
  407. package/mysql-core/session.d.cts +14 -7
  408. package/mysql-core/session.d.ts +14 -7
  409. package/mysql-core/session.js +43 -4
  410. package/mysql-core/session.js.map +1 -1
  411. package/mysql-proxy/driver.cjs +3 -2
  412. package/mysql-proxy/driver.cjs.map +1 -1
  413. package/mysql-proxy/driver.d.cts +2 -1
  414. package/mysql-proxy/driver.d.ts +2 -1
  415. package/mysql-proxy/driver.js +3 -2
  416. package/mysql-proxy/driver.js.map +1 -1
  417. package/mysql-proxy/session.cjs +8 -8
  418. package/mysql-proxy/session.cjs.map +1 -1
  419. package/mysql-proxy/session.d.cts +5 -6
  420. package/mysql-proxy/session.d.ts +5 -6
  421. package/mysql-proxy/session.js +8 -8
  422. package/mysql-proxy/session.js.map +1 -1
  423. package/mysql2/driver.cjs +11 -4
  424. package/mysql2/driver.cjs.map +1 -1
  425. package/mysql2/driver.d.cts +4 -2
  426. package/mysql2/driver.d.ts +4 -2
  427. package/mysql2/driver.js +11 -4
  428. package/mysql2/driver.js.map +1 -1
  429. package/mysql2/session.cjs +14 -10
  430. package/mysql2/session.cjs.map +1 -1
  431. package/mysql2/session.d.cts +5 -5
  432. package/mysql2/session.d.ts +5 -5
  433. package/mysql2/session.js +14 -10
  434. package/mysql2/session.js.map +1 -1
  435. package/neon-http/driver.cjs +5 -3
  436. package/neon-http/driver.cjs.map +1 -1
  437. package/neon-http/driver.d.cts +6 -4
  438. package/neon-http/driver.d.ts +6 -4
  439. package/neon-http/driver.js +5 -3
  440. package/neon-http/driver.js.map +1 -1
  441. package/neon-http/session.cjs +8 -6
  442. package/neon-http/session.cjs.map +1 -1
  443. package/neon-http/session.d.cts +5 -4
  444. package/neon-http/session.d.ts +5 -4
  445. package/neon-http/session.js +8 -6
  446. package/neon-http/session.js.map +1 -1
  447. package/neon-serverless/driver.cjs +6 -4
  448. package/neon-serverless/driver.cjs.map +1 -1
  449. package/neon-serverless/driver.d.cts +6 -4
  450. package/neon-serverless/driver.d.ts +6 -4
  451. package/neon-serverless/driver.js +6 -4
  452. package/neon-serverless/driver.js.map +1 -1
  453. package/neon-serverless/session.cjs +23 -9
  454. package/neon-serverless/session.cjs.map +1 -1
  455. package/neon-serverless/session.d.cts +5 -4
  456. package/neon-serverless/session.d.ts +5 -4
  457. package/neon-serverless/session.js +23 -9
  458. package/neon-serverless/session.js.map +1 -1
  459. package/node-postgres/driver.cjs +6 -4
  460. package/node-postgres/driver.cjs.map +1 -1
  461. package/node-postgres/driver.d.cts +6 -4
  462. package/node-postgres/driver.d.ts +6 -4
  463. package/node-postgres/driver.js +6 -4
  464. package/node-postgres/driver.js.map +1 -1
  465. package/node-postgres/session.cjs +18 -9
  466. package/node-postgres/session.cjs.map +1 -1
  467. package/node-postgres/session.d.cts +5 -4
  468. package/node-postgres/session.d.ts +5 -4
  469. package/node-postgres/session.js +18 -9
  470. package/node-postgres/session.js.map +1 -1
  471. package/op-sqlite/driver.cjs +3 -2
  472. package/op-sqlite/driver.cjs.map +1 -1
  473. package/op-sqlite/driver.d.cts +2 -1
  474. package/op-sqlite/driver.d.ts +2 -1
  475. package/op-sqlite/driver.js +3 -2
  476. package/op-sqlite/driver.js.map +1 -1
  477. package/op-sqlite/session.cjs +20 -11
  478. package/op-sqlite/session.cjs.map +1 -1
  479. package/op-sqlite/session.d.cts +8 -7
  480. package/op-sqlite/session.d.ts +8 -7
  481. package/op-sqlite/session.js +20 -11
  482. package/op-sqlite/session.js.map +1 -1
  483. package/package.json +351 -5
  484. package/pg-core/columns/common.cjs +2 -0
  485. package/pg-core/columns/common.cjs.map +1 -1
  486. package/pg-core/columns/common.js +2 -0
  487. package/pg-core/columns/common.js.map +1 -1
  488. package/pg-core/db.cjs +5 -3
  489. package/pg-core/db.cjs.map +1 -1
  490. package/pg-core/db.d.cts +3 -1
  491. package/pg-core/db.d.ts +3 -1
  492. package/pg-core/db.js +5 -3
  493. package/pg-core/db.js.map +1 -1
  494. package/pg-core/dialect.cjs +25 -19
  495. package/pg-core/dialect.cjs.map +1 -1
  496. package/pg-core/dialect.d.cts +7 -6
  497. package/pg-core/dialect.d.ts +7 -6
  498. package/pg-core/dialect.js +26 -20
  499. package/pg-core/dialect.js.map +1 -1
  500. package/pg-core/query-builders/delete.cjs +19 -5
  501. package/pg-core/query-builders/delete.cjs.map +1 -1
  502. package/pg-core/query-builders/delete.js +19 -5
  503. package/pg-core/query-builders/delete.js.map +1 -1
  504. package/pg-core/query-builders/insert.cjs +49 -9
  505. package/pg-core/query-builders/insert.cjs.map +1 -1
  506. package/pg-core/query-builders/insert.js +51 -11
  507. package/pg-core/query-builders/insert.js.map +1 -1
  508. package/pg-core/query-builders/query.cjs +15 -2
  509. package/pg-core/query-builders/query.cjs.map +1 -1
  510. package/pg-core/query-builders/query.js +15 -2
  511. package/pg-core/query-builders/query.js.map +1 -1
  512. package/pg-core/query-builders/select.cjs +23 -7
  513. package/pg-core/query-builders/select.cjs.map +1 -1
  514. package/pg-core/query-builders/select.d.cts +9 -9
  515. package/pg-core/query-builders/select.d.ts +9 -9
  516. package/pg-core/query-builders/select.js +23 -7
  517. package/pg-core/query-builders/select.js.map +1 -1
  518. package/pg-core/query-builders/select.types.cjs.map +1 -1
  519. package/pg-core/query-builders/select.types.d.cts +2 -1
  520. package/pg-core/query-builders/select.types.d.ts +2 -1
  521. package/pg-core/query-builders/update.cjs +20 -6
  522. package/pg-core/query-builders/update.cjs.map +1 -1
  523. package/pg-core/query-builders/update.js +20 -6
  524. package/pg-core/query-builders/update.js.map +1 -1
  525. package/pg-core/session.cjs +48 -4
  526. package/pg-core/session.cjs.map +1 -1
  527. package/pg-core/session.d.cts +11 -5
  528. package/pg-core/session.d.ts +11 -5
  529. package/pg-core/session.js +48 -4
  530. package/pg-core/session.js.map +1 -1
  531. package/pg-proxy/driver.cjs +3 -2
  532. package/pg-proxy/driver.cjs.map +1 -1
  533. package/pg-proxy/driver.d.cts +2 -1
  534. package/pg-proxy/driver.d.ts +2 -1
  535. package/pg-proxy/driver.js +3 -2
  536. package/pg-proxy/driver.js.map +1 -1
  537. package/pg-proxy/session.cjs +8 -6
  538. package/pg-proxy/session.cjs.map +1 -1
  539. package/pg-proxy/session.d.cts +5 -4
  540. package/pg-proxy/session.d.ts +5 -4
  541. package/pg-proxy/session.js +8 -6
  542. package/pg-proxy/session.js.map +1 -1
  543. package/pglite/driver.cjs +6 -4
  544. package/pglite/driver.cjs.map +1 -1
  545. package/pglite/driver.d.cts +6 -4
  546. package/pglite/driver.d.ts +6 -4
  547. package/pglite/driver.js +6 -4
  548. package/pglite/driver.js.map +1 -1
  549. package/pglite/session.cjs +19 -9
  550. package/pglite/session.cjs.map +1 -1
  551. package/pglite/session.d.cts +5 -4
  552. package/pglite/session.d.ts +5 -4
  553. package/pglite/session.js +19 -9
  554. package/pglite/session.js.map +1 -1
  555. package/planetscale-serverless/driver.cjs +10 -2
  556. package/planetscale-serverless/driver.cjs.map +1 -1
  557. package/planetscale-serverless/driver.d.cts +4 -3
  558. package/planetscale-serverless/driver.d.ts +4 -3
  559. package/planetscale-serverless/driver.js +10 -2
  560. package/planetscale-serverless/driver.js.map +1 -1
  561. package/planetscale-serverless/session.cjs +23 -13
  562. package/planetscale-serverless/session.cjs.map +1 -1
  563. package/planetscale-serverless/session.d.cts +6 -7
  564. package/planetscale-serverless/session.d.ts +6 -7
  565. package/planetscale-serverless/session.js +23 -13
  566. package/planetscale-serverless/session.js.map +1 -1
  567. package/postgres-js/driver.cjs +3 -2
  568. package/postgres-js/driver.cjs.map +1 -1
  569. package/postgres-js/driver.d.cts +4 -3
  570. package/postgres-js/driver.d.ts +4 -3
  571. package/postgres-js/driver.js +3 -2
  572. package/postgres-js/driver.js.map +1 -1
  573. package/postgres-js/session.cjs +27 -16
  574. package/postgres-js/session.cjs.map +1 -1
  575. package/postgres-js/session.d.cts +6 -5
  576. package/postgres-js/session.d.ts +6 -5
  577. package/postgres-js/session.js +27 -16
  578. package/postgres-js/session.js.map +1 -1
  579. package/prisma/mysql/driver.cjs +3 -3
  580. package/prisma/mysql/driver.cjs.map +1 -1
  581. package/prisma/mysql/driver.d.cts +3 -2
  582. package/prisma/mysql/driver.d.ts +3 -2
  583. package/prisma/mysql/driver.js +3 -3
  584. package/prisma/mysql/driver.js.map +1 -1
  585. package/prisma/mysql/session.cjs +10 -11
  586. package/prisma/mysql/session.cjs.map +1 -1
  587. package/prisma/mysql/session.d.cts +10 -5
  588. package/prisma/mysql/session.d.ts +10 -5
  589. package/prisma/mysql/session.js +10 -11
  590. package/prisma/mysql/session.js.map +1 -1
  591. package/prisma/pg/driver.cjs +3 -3
  592. package/prisma/pg/driver.cjs.map +1 -1
  593. package/prisma/pg/driver.d.cts +2 -1
  594. package/prisma/pg/driver.d.ts +2 -1
  595. package/prisma/pg/driver.js +3 -3
  596. package/prisma/pg/driver.js.map +1 -1
  597. package/prisma/pg/session.cjs +7 -7
  598. package/prisma/pg/session.cjs.map +1 -1
  599. package/prisma/pg/session.d.cts +10 -5
  600. package/prisma/pg/session.d.ts +10 -5
  601. package/prisma/pg/session.js +7 -7
  602. package/prisma/pg/session.js.map +1 -1
  603. package/prisma/sqlite/driver.cjs +7 -1
  604. package/prisma/sqlite/driver.cjs.map +1 -1
  605. package/prisma/sqlite/driver.d.cts +2 -1
  606. package/prisma/sqlite/driver.d.ts +2 -1
  607. package/prisma/sqlite/driver.js +7 -1
  608. package/prisma/sqlite/driver.js.map +1 -1
  609. package/prisma/sqlite/session.cjs +10 -10
  610. package/prisma/sqlite/session.cjs.map +1 -1
  611. package/prisma/sqlite/session.d.cts +12 -7
  612. package/prisma/sqlite/session.d.ts +12 -7
  613. package/prisma/sqlite/session.js +10 -10
  614. package/prisma/sqlite/session.js.map +1 -1
  615. package/singlestore/driver.cjs +34 -25
  616. package/singlestore/driver.cjs.map +1 -1
  617. package/singlestore/driver.d.cts +4 -2
  618. package/singlestore/driver.d.ts +4 -2
  619. package/singlestore/driver.js +34 -25
  620. package/singlestore/driver.js.map +1 -1
  621. package/singlestore/session.cjs +14 -10
  622. package/singlestore/session.cjs.map +1 -1
  623. package/singlestore/session.d.cts +5 -5
  624. package/singlestore/session.d.ts +5 -5
  625. package/singlestore/session.js +14 -10
  626. package/singlestore/session.js.map +1 -1
  627. package/singlestore-core/db.cjs +5 -3
  628. package/singlestore-core/db.cjs.map +1 -1
  629. package/singlestore-core/db.d.cts +3 -1
  630. package/singlestore-core/db.d.ts +3 -1
  631. package/singlestore-core/db.js +5 -3
  632. package/singlestore-core/db.js.map +1 -1
  633. package/singlestore-core/dialect.cjs +24 -18
  634. package/singlestore-core/dialect.cjs.map +1 -1
  635. package/singlestore-core/dialect.d.cts +7 -6
  636. package/singlestore-core/dialect.d.ts +7 -6
  637. package/singlestore-core/dialect.js +25 -19
  638. package/singlestore-core/dialect.js.map +1 -1
  639. package/singlestore-core/query-builders/delete.cjs +8 -1
  640. package/singlestore-core/query-builders/delete.cjs.map +1 -1
  641. package/singlestore-core/query-builders/delete.js +8 -1
  642. package/singlestore-core/query-builders/delete.js.map +1 -1
  643. package/singlestore-core/query-builders/insert.cjs +30 -5
  644. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  645. package/singlestore-core/query-builders/insert.js +32 -7
  646. package/singlestore-core/query-builders/insert.js.map +1 -1
  647. package/singlestore-core/query-builders/query.cjs +17 -2
  648. package/singlestore-core/query-builders/query.cjs.map +1 -1
  649. package/singlestore-core/query-builders/query.js +17 -2
  650. package/singlestore-core/query-builders/query.js.map +1 -1
  651. package/singlestore-core/query-builders/select.cjs +24 -7
  652. package/singlestore-core/query-builders/select.cjs.map +1 -1
  653. package/singlestore-core/query-builders/select.d.cts +9 -9
  654. package/singlestore-core/query-builders/select.d.ts +9 -9
  655. package/singlestore-core/query-builders/select.js +24 -7
  656. package/singlestore-core/query-builders/select.js.map +1 -1
  657. package/singlestore-core/query-builders/select.types.cjs.map +1 -1
  658. package/singlestore-core/query-builders/select.types.d.cts +2 -1
  659. package/singlestore-core/query-builders/select.types.d.ts +2 -1
  660. package/singlestore-core/query-builders/update.cjs +9 -2
  661. package/singlestore-core/query-builders/update.cjs.map +1 -1
  662. package/singlestore-core/query-builders/update.js +9 -2
  663. package/singlestore-core/query-builders/update.js.map +1 -1
  664. package/singlestore-core/session.cjs +43 -4
  665. package/singlestore-core/session.cjs.map +1 -1
  666. package/singlestore-core/session.d.cts +14 -6
  667. package/singlestore-core/session.d.ts +14 -6
  668. package/singlestore-core/session.js +43 -4
  669. package/singlestore-core/session.js.map +1 -1
  670. package/singlestore-proxy/driver.cjs +3 -2
  671. package/singlestore-proxy/driver.cjs.map +1 -1
  672. package/singlestore-proxy/driver.d.cts +2 -1
  673. package/singlestore-proxy/driver.d.ts +2 -1
  674. package/singlestore-proxy/driver.js +3 -2
  675. package/singlestore-proxy/driver.js.map +1 -1
  676. package/singlestore-proxy/session.cjs +8 -8
  677. package/singlestore-proxy/session.cjs.map +1 -1
  678. package/singlestore-proxy/session.d.cts +9 -6
  679. package/singlestore-proxy/session.d.ts +9 -6
  680. package/singlestore-proxy/session.js +8 -8
  681. package/singlestore-proxy/session.js.map +1 -1
  682. package/sql/sql.cjs +24 -2
  683. package/sql/sql.cjs.map +1 -1
  684. package/sql/sql.d.cts +12 -0
  685. package/sql/sql.d.ts +12 -0
  686. package/sql/sql.js +23 -2
  687. package/sql/sql.js.map +1 -1
  688. package/sql-js/driver.cjs.map +1 -1
  689. package/sql-js/driver.d.cts +2 -1
  690. package/sql-js/driver.d.ts +2 -1
  691. package/sql-js/driver.js.map +1 -1
  692. package/sql-js/session.cjs +4 -4
  693. package/sql-js/session.cjs.map +1 -1
  694. package/sql-js/session.d.cts +4 -4
  695. package/sql-js/session.d.ts +4 -4
  696. package/sql-js/session.js +4 -4
  697. package/sql-js/session.js.map +1 -1
  698. package/sqlite-core/db.cjs +5 -3
  699. package/sqlite-core/db.cjs.map +1 -1
  700. package/sqlite-core/db.d.cts +3 -1
  701. package/sqlite-core/db.d.ts +3 -1
  702. package/sqlite-core/db.js +5 -3
  703. package/sqlite-core/db.js.map +1 -1
  704. package/sqlite-core/dialect.cjs +29 -19
  705. package/sqlite-core/dialect.cjs.map +1 -1
  706. package/sqlite-core/dialect.d.cts +7 -6
  707. package/sqlite-core/dialect.d.ts +7 -6
  708. package/sqlite-core/dialect.js +30 -20
  709. package/sqlite-core/dialect.js.map +1 -1
  710. package/sqlite-core/query-builders/delete.cjs +8 -1
  711. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  712. package/sqlite-core/query-builders/delete.js +8 -1
  713. package/sqlite-core/query-builders/delete.js.map +1 -1
  714. package/sqlite-core/query-builders/insert.cjs +28 -4
  715. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  716. package/sqlite-core/query-builders/insert.js +35 -6
  717. package/sqlite-core/query-builders/insert.js.map +1 -1
  718. package/sqlite-core/query-builders/query.cjs +15 -2
  719. package/sqlite-core/query-builders/query.cjs.map +1 -1
  720. package/sqlite-core/query-builders/query.js +15 -2
  721. package/sqlite-core/query-builders/query.js.map +1 -1
  722. package/sqlite-core/query-builders/select.cjs +15 -6
  723. package/sqlite-core/query-builders/select.cjs.map +1 -1
  724. package/sqlite-core/query-builders/select.d.cts +6 -6
  725. package/sqlite-core/query-builders/select.d.ts +6 -6
  726. package/sqlite-core/query-builders/select.js +15 -6
  727. package/sqlite-core/query-builders/select.js.map +1 -1
  728. package/sqlite-core/query-builders/select.types.cjs.map +1 -1
  729. package/sqlite-core/query-builders/select.types.d.cts +2 -1
  730. package/sqlite-core/query-builders/select.types.d.ts +2 -1
  731. package/sqlite-core/query-builders/update.cjs +9 -2
  732. package/sqlite-core/query-builders/update.cjs.map +1 -1
  733. package/sqlite-core/query-builders/update.js +9 -2
  734. package/sqlite-core/query-builders/update.js.map +1 -1
  735. package/sqlite-core/session.cjs +81 -6
  736. package/sqlite-core/session.cjs.map +1 -1
  737. package/sqlite-core/session.d.cts +19 -9
  738. package/sqlite-core/session.d.ts +19 -9
  739. package/sqlite-core/session.js +81 -6
  740. package/sqlite-core/session.js.map +1 -1
  741. package/sqlite-proxy/driver.cjs +4 -3
  742. package/sqlite-proxy/driver.cjs.map +1 -1
  743. package/sqlite-proxy/driver.d.cts +3 -2
  744. package/sqlite-proxy/driver.d.ts +3 -2
  745. package/sqlite-proxy/driver.js +4 -3
  746. package/sqlite-proxy/driver.js.map +1 -1
  747. package/sqlite-proxy/session.cjs +20 -11
  748. package/sqlite-proxy/session.cjs.map +1 -1
  749. package/sqlite-proxy/session.d.cts +8 -7
  750. package/sqlite-proxy/session.d.ts +8 -7
  751. package/sqlite-proxy/session.js +20 -11
  752. package/sqlite-proxy/session.js.map +1 -1
  753. package/tidb-serverless/driver.cjs +16 -2
  754. package/tidb-serverless/driver.cjs.map +1 -1
  755. package/tidb-serverless/driver.d.cts +4 -3
  756. package/tidb-serverless/driver.d.ts +4 -3
  757. package/tidb-serverless/driver.js +16 -2
  758. package/tidb-serverless/driver.js.map +1 -1
  759. package/tidb-serverless/session.cjs +23 -13
  760. package/tidb-serverless/session.cjs.map +1 -1
  761. package/tidb-serverless/session.d.cts +6 -7
  762. package/tidb-serverless/session.d.ts +6 -7
  763. package/tidb-serverless/session.js +23 -13
  764. package/tidb-serverless/session.js.map +1 -1
  765. package/tracing.cjs.map +1 -1
  766. package/tracing.js.map +1 -1
  767. package/utils.cjs +38 -2
  768. package/utils.cjs.map +1 -1
  769. package/utils.d.cts +6 -2
  770. package/utils.d.ts +6 -2
  771. package/utils.js +39 -4
  772. package/utils.js.map +1 -1
  773. package/vercel-postgres/driver.cjs +10 -5
  774. package/vercel-postgres/driver.cjs.map +1 -1
  775. package/vercel-postgres/driver.d.cts +6 -4
  776. package/vercel-postgres/driver.d.ts +6 -4
  777. package/vercel-postgres/driver.js +10 -5
  778. package/vercel-postgres/driver.js.map +1 -1
  779. package/vercel-postgres/session.cjs +18 -9
  780. package/vercel-postgres/session.cjs.map +1 -1
  781. package/vercel-postgres/session.d.cts +5 -4
  782. package/vercel-postgres/session.d.ts +5 -4
  783. package/vercel-postgres/session.js +18 -9
  784. package/vercel-postgres/session.js.map +1 -1
  785. package/version.cjs +1 -1
  786. package/version.d.cts +1 -1
  787. package/version.d.ts +1 -1
  788. package/version.js +1 -1
  789. package/xata-http/driver.cjs +7 -4
  790. package/xata-http/driver.cjs.map +1 -1
  791. package/xata-http/driver.d.cts +4 -2
  792. package/xata-http/driver.d.ts +4 -2
  793. package/xata-http/driver.js +7 -4
  794. package/xata-http/driver.js.map +1 -1
  795. package/xata-http/session.cjs +8 -6
  796. package/xata-http/session.cjs.map +1 -1
  797. package/xata-http/session.d.cts +5 -4
  798. package/xata-http/session.d.ts +5 -4
  799. package/xata-http/session.js +8 -6
  800. package/xata-http/session.js.map +1 -1
@@ -0,0 +1,280 @@
1
+ import { GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3";
2
+ import { DrizzleError } from "../../errors.js";
3
+ class PresignerImporter {
4
+ static presignerImportSource = ["@aws", "sdk/s3", "request", "presigner"].join("-");
5
+ static presigner = void 0;
6
+ constructor() {
7
+ }
8
+ static async importPresigner() {
9
+ if (this.presigner) return this.presigner;
10
+ this.presigner = await import(this.presignerImportSource).then((e) => e.getSignedUrl);
11
+ return this.presigner;
12
+ }
13
+ }
14
+ const AsyncFunction = async function() {
15
+ }.constructor;
16
+ const buildFunctionArrayRecursion = (dimensions, body) => {
17
+ if (dimensions) {
18
+ return buildFunctionArrayRecursion(dimensions - 1, `arr?.forEach((arr, i${dimensions}) => ${body})`);
19
+ }
20
+ return body;
21
+ };
22
+ const buildArrayRecursionIndexAccess = (dimensions) => {
23
+ let idxs = "";
24
+ for (let idx = 1; idx <= dimensions; ++idx) {
25
+ idxs = `${idxs}[i${idx}]`;
26
+ }
27
+ return idxs;
28
+ };
29
+ const formPresignerOptions = (options) => {
30
+ if (!options) return "undefined";
31
+ const fields = Object.entries(options).map(
32
+ ([k, v]) => (
33
+ // eslint-disable-next-line no-instanceof/no-instanceof
34
+ (`${JSON.stringify(k)}: ${v instanceof Set ? `new Set(${JSON.stringify([...v])})` : JSON.stringify(v)}`)
35
+ )
36
+ ).join(",\n");
37
+ return `{${fields}}`;
38
+ };
39
+ const buildDecoderInner = (mappingInstructions) => {
40
+ return mappingInstructions.map((i) => {
41
+ const path = i.path.join("");
42
+ const optPath = i.path.join("?.");
43
+ return `if(row${optPath}) {
44
+ ` + ("subinstructions" in i ? `row${path}.forEach(row => {
45
+ ${buildDecoderInner(i.subinstructions)}
46
+ });` : i.arrayDimensions ? `const arr = row${path};
47
+ ` + buildFunctionArrayRecursion(
48
+ i.arrayDimensions,
49
+ `p.push((async () => {
50
+ if(!arr || typeof arr !== 'string') return;
51
+
52
+ const { key, bucket } = idGetter(arr);
53
+ row${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = await ${i.fetchMode === "file" || i.fetchMode === "data" ? "downloader" : "presigner"}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${i.fetchMode === "data" ? "true" : "false"}, options: ${formPresignerOptions(i.options)}});
54
+ })().catch((e) => errors.push(e)))`
55
+ ) : `p.push((async () => {
56
+ const str = row${path};
57
+ if(typeof str !== 'string') return;
58
+
59
+ const { key, bucket } = idGetter(str);
60
+ row${path} = await ${i.fetchMode === "file" || i.fetchMode === "data" ? "downloader" : "presigner"}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${i.fetchMode === "data" ? "true" : "false"}, options: ${formPresignerOptions(i.options)}});
61
+ })().catch((e) => errors.push(e)));`) + `
62
+ }`;
63
+ }).join("\n");
64
+ };
65
+ const buildDecoder = (mappingInstructions, mode = "many") => {
66
+ if (!mappingInstructions.length) return () => void 0;
67
+ return new AsyncFunction(
68
+ "s3",
69
+ "data",
70
+ "errors",
71
+ "downloader",
72
+ "presigner",
73
+ "idGetter",
74
+ mode === "many" ? `
75
+ await Promise.all(data.reduce((p, row) => {
76
+ ${buildDecoderInner(mappingInstructions)}
77
+ return p;
78
+ }, []));` : `
79
+ const p = [];
80
+ const row = data;
81
+ ${buildDecoderInner(mappingInstructions)}
82
+ await Promise.all(p);
83
+ `
84
+ );
85
+ };
86
+ const buildEncoder = (mappingInstructions) => {
87
+ if (!mappingInstructions.length) return () => void 0;
88
+ return new AsyncFunction(
89
+ "s3",
90
+ "placeholders",
91
+ "errors",
92
+ "uploader",
93
+ "idBuilder",
94
+ `
95
+ if(!placeholders) return;
96
+ await Promise.all([
97
+ ${mappingInstructions.map((i) => {
98
+ const path = `[${JSON.stringify(i.key)}]`;
99
+ return i.arrayDimensions ? `...(() => {
100
+ const arr = placeholders${path};
101
+ const p = [];
102
+ ${buildFunctionArrayRecursion(
103
+ i.arrayDimensions,
104
+ `p.push((async () => {
105
+ if(!arr || typeof arr !== 'object') return;
106
+
107
+ const { key, bucket, data } = arr;
108
+ await uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });
109
+ placeholders${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = idBuilder(arr);
110
+ })().catch((e) => errors.push(e)))`
111
+ )}
112
+ return p;
113
+ })()` : `(async () => {
114
+ const params = placeholders${path};
115
+ if(!params || typeof params !== 'object') return;
116
+
117
+ const { key, bucket, data } = params;
118
+ await uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });
119
+ placeholders${path} = idBuilder(params);
120
+ })().catch((e) => errors.push(e))`;
121
+ }).join(",\n")}
122
+ ]);
123
+ `
124
+ );
125
+ };
126
+ const separator = ":";
127
+ function objectIdToText({ key, bucket }) {
128
+ return `${bucket}${separator}${key}`;
129
+ }
130
+ function textToObjectId(text) {
131
+ const split = text.split(separator);
132
+ if (split.length < 2) throw new Error(`Invalid S3 object identifier: "${text}". Expected: "bucket${separator}key"`);
133
+ const bucket = split.shift();
134
+ const key = split.join(separator);
135
+ return { key, bucket };
136
+ }
137
+ async function downloadFile({ key, bucket, s3, mode, fileOnly }) {
138
+ const res = await s3.send(
139
+ new GetObjectCommand({
140
+ Bucket: bucket,
141
+ Key: key
142
+ })
143
+ );
144
+ if (!res.Body) {
145
+ throw new DrizzleError({
146
+ message: `No data found in bucket "${bucket}" for key "${key}"`
147
+ });
148
+ }
149
+ let data;
150
+ switch (mode) {
151
+ case "uint8array": {
152
+ data = await res.Body.transformToByteArray();
153
+ break;
154
+ }
155
+ case "buffer": {
156
+ data = Buffer.from(await res.Body.transformToByteArray());
157
+ break;
158
+ }
159
+ default: {
160
+ data = await res.Body.transformToString(mode);
161
+ break;
162
+ }
163
+ }
164
+ return fileOnly ? data : {
165
+ key,
166
+ bucket,
167
+ data
168
+ };
169
+ }
170
+ async function presignDownload({ key, bucket, options, s3 }) {
171
+ const command = new GetObjectCommand({
172
+ Bucket: bucket,
173
+ Key: key
174
+ });
175
+ const presigner = await PresignerImporter.importPresigner();
176
+ const url = await presigner(s3, command, options);
177
+ return url;
178
+ }
179
+ async function uploadFile({ key, bucket, data, s3, mode }) {
180
+ let body;
181
+ switch (mode) {
182
+ case "uint8array":
183
+ case "buffer": {
184
+ body = data;
185
+ break;
186
+ }
187
+ case "hex": {
188
+ body = Uint8Array.fromHex ? Uint8Array.fromHex(data) : Buffer.from(data, "hex");
189
+ break;
190
+ }
191
+ case "base64": {
192
+ body = Uint8Array.fromBase64 ? Uint8Array.fromBase64(data) : Buffer.from(data, "base64");
193
+ break;
194
+ }
195
+ }
196
+ const res = await s3.send(
197
+ new PutObjectCommand({
198
+ Bucket: bucket,
199
+ Key: key,
200
+ Body: body
201
+ })
202
+ );
203
+ return res;
204
+ }
205
+ function mapArrayParam(s3, item, dimensions, mode, errors, promises) {
206
+ if (dimensions > 1) {
207
+ for (const sub of item) {
208
+ mapArrayParam(s3, sub, dimensions - 1, mode, errors, promises);
209
+ }
210
+ return;
211
+ }
212
+ let i = 0;
213
+ for (const param of item) {
214
+ if (!param || typeof param !== "object") {
215
+ ++i;
216
+ continue;
217
+ }
218
+ const obj = param;
219
+ promises.push(
220
+ (async (i2) => {
221
+ await uploadFile({
222
+ s3,
223
+ key: obj.key,
224
+ bucket: obj.bucket,
225
+ data: obj.data,
226
+ mode
227
+ });
228
+ const value = objectIdToText(obj);
229
+ item[i2] = value;
230
+ })(i++).catch((e) => errors.push(e))
231
+ );
232
+ }
233
+ }
234
+ async function mapParams(s3, params, indexes, errors) {
235
+ if (!indexes.length) return;
236
+ const arrayIdxs = [];
237
+ await Promise.all(
238
+ indexes.reduce((p, { index, mode, arrayDimensions }) => {
239
+ const { value: param } = params[index];
240
+ if (arrayDimensions) {
241
+ mapArrayParam(s3, param, arrayDimensions, mode, errors, p);
242
+ arrayIdxs.push(index);
243
+ return p;
244
+ }
245
+ if (!param || typeof param !== "object") return p;
246
+ p.push(
247
+ (async (i) => {
248
+ await uploadFile({
249
+ s3,
250
+ key: param.key,
251
+ bucket: param.bucket,
252
+ data: param.data,
253
+ mode
254
+ });
255
+ const value = objectIdToText(param);
256
+ params[i] = value;
257
+ })(index).catch((e) => errors.push(e))
258
+ );
259
+ return p;
260
+ }, [])
261
+ );
262
+ for (const idx of arrayIdxs) {
263
+ params[idx] = params[idx].value ? params[idx].encoder.mapToDriverValue(
264
+ params[idx].value
265
+ ) : params[idx];
266
+ }
267
+ }
268
+ export {
269
+ buildDecoder,
270
+ buildDecoderInner,
271
+ buildEncoder,
272
+ downloadFile,
273
+ mapArrayParam,
274
+ mapParams,
275
+ objectIdToText,
276
+ presignDownload,
277
+ textToObjectId,
278
+ uploadFile
279
+ };
280
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/extensions/s3-file/common.ts"],"sourcesContent":["import { GetObjectCommand, PutObjectCommand, type S3Client } from '@aws-sdk/client-s3';\nimport type { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { DrizzleError } from '~/errors.ts';\nimport type { ExtensionParam } from '~/sql/sql.ts';\nimport type { Simplify } from '~/utils.ts';\n\n// Local class, won't be used with `is` nor `instanceof`\n// eslint-disable-next-line drizzle-internal/require-entity-kind\nclass PresignerImporter {\n\tprivate static presignerImportSource: string = ['@aws', 'sdk/s3', 'request', 'presigner'].join('-');\n\tprivate static presigner: typeof getSignedUrl | undefined = undefined;\n\tconstructor() {}\n\n\tstatic async importPresigner(): Promise<typeof getSignedUrl> {\n\t\tif (this.presigner) return this.presigner;\n\n\t\tthis.presigner = await import(this.presignerImportSource).then((e) => e.getSignedUrl);\n\n\t\treturn this.presigner!;\n\t}\n}\n\nconst AsyncFunction = (async function() {}.constructor) as {\n\tnew(...args: string[]): (...args: any[]) => Promise<any>;\n\t(...args: string[]): (...args: any[]) => Promise<any>;\n};\n\nexport interface DecoderFunction {\n\t(\n\t\ts3: S3Client,\n\t\tdata: Record<string, unknown>[] | Record<string, unknown>,\n\t\terrors: unknown[],\n\t\tdownloader: typeof downloadFile,\n\t\tpresigner: typeof presignDownload,\n\t\tidGetter: typeof textToObjectId,\n\t): Promise<void>;\n}\n\nexport interface EncoderFunction {\n\t(\n\t\ts3: S3Client,\n\t\tplaceholders: Record<string, unknown> | undefined,\n\t\terrors: unknown[],\n\t\tuploader: typeof uploadFile,\n\t\tidBuilder: typeof objectIdToText,\n\t): Promise<void>;\n}\n\nconst buildFunctionArrayRecursion = (dimensions: number, body: string): string => {\n\tif (dimensions) {\n\t\treturn buildFunctionArrayRecursion(dimensions - 1, `arr?.forEach((arr, i${dimensions}) => ${body})`);\n\t}\n\n\treturn body;\n};\n\nconst buildArrayRecursionIndexAccess = (dimensions: number) => {\n\tlet idxs = '';\n\tfor (let idx = 1; idx <= dimensions; ++idx) {\n\t\tidxs = `${idxs}[i${idx}]`;\n\t}\n\treturn idxs;\n};\n\nconst formPresignerOptions = (options?: RequestPresigningArguments) => {\n\tif (!options) return 'undefined';\n\n\tconst fields = Object.entries(options).map(([k, v]) =>\n\t\t// eslint-disable-next-line no-instanceof/no-instanceof\n\t\t`${JSON.stringify(k)}: ${v instanceof Set ? `new Set(${JSON.stringify([...v])})` : JSON.stringify(v)}`\n\t).join(',\\n');\n\n\treturn `{${fields}}`;\n};\n\nexport const buildDecoderInner = (mappingInstructions: DrizzleS3FileOutputMappingInstruction[]): string => {\n\treturn mappingInstructions.map((i) => {\n\t\tconst path = i.path.join('');\n\t\tconst optPath = i.path.join('?.');\n\n\t\treturn `if(row${optPath}) {\\n` + (\n\t\t\t'subinstructions' in i\n\t\t\t\t? `row${path}.forEach(row => {\n\t\t\t${buildDecoderInner(i.subinstructions)} \n\t\t\t});`\n\t\t\t\t: i.arrayDimensions\n\t\t\t\t? `const arr = row${path};\n\t\t\t\t` + buildFunctionArrayRecursion(\n\t\t\t\t\ti.arrayDimensions,\n\t\t\t\t\t`p.push((async () => {\n\t\t\t\t\t\t\t\tif(!arr || typeof arr !== 'string') return;\n\n\t\t\t\t\t\t\t\tconst { key, bucket } = idGetter(arr);\n\t\t\t\t\t\t\t\trow${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = await ${\n\t\t\t\t\t\ti.fetchMode === 'file' || i.fetchMode === 'data'\n\t\t\t\t\t\t\t? 'downloader'\n\t\t\t\t\t\t\t: 'presigner'\n\t\t\t\t\t}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${\n\t\t\t\t\t\ti.fetchMode === 'data' ? 'true' : 'false'\n\t\t\t\t\t}, options: ${formPresignerOptions(i.options)}});\n\t\t\t\t\t\t})().catch((e) => errors.push(e)))`,\n\t\t\t\t)\n\t\t\t\t: `p.push((async () => {\n\t\t\t\t\t\tconst str = row${path};\n\t\t\t\t\t\tif(typeof str !== 'string') return;\n\n\t\t\t\t\t\tconst { key, bucket } = idGetter(str);\n\t\t\t\t\t\trow${path} = await ${\n\t\t\t\t\ti.fetchMode === 'file' || i.fetchMode === 'data'\n\t\t\t\t\t\t? 'downloader'\n\t\t\t\t\t\t: 'presigner'\n\t\t\t\t}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${\n\t\t\t\t\ti.fetchMode === 'data' ? 'true' : 'false'\n\t\t\t\t}, options: ${formPresignerOptions(i.options)}});\n\t\t\t\t\t\t})().catch((e) => errors.push(e)));`\n\t\t) + `\n\t\t}`;\n\t}).join('\\n');\n};\n\nexport const buildDecoder = (\n\tmappingInstructions: DrizzleS3FileOutputMappingInstruction[],\n\tmode: 'first' | 'many' = 'many',\n): DecoderFunction => {\n\tif (!mappingInstructions.length) return () => undefined as any;\n\n\treturn new AsyncFunction(\n\t\t's3',\n\t\t'data',\n\t\t'errors',\n\t\t'downloader',\n\t\t'presigner',\n\t\t'idGetter',\n\t\tmode === 'many'\n\t\t\t? `\n\t\t\tawait Promise.all(data.reduce((p, row) => {\n\t\t\t${buildDecoderInner(mappingInstructions)}\n\t\t\treturn p;\n\t\t}, []));`\n\t\t\t: `\n\t\t\tconst p = [];\n\t\t\tconst row = data;\n\t\t\t${buildDecoderInner(mappingInstructions)}\n\t\t\tawait Promise.all(p);\n\t\t`,\n\t);\n};\n\nexport const buildEncoder = (mappingInstructions: DrizzleS3FilePlaceholderMappingInstruction[]): EncoderFunction => {\n\tif (!mappingInstructions.length) return () => undefined as any;\n\n\treturn new AsyncFunction(\n\t\t's3',\n\t\t'placeholders',\n\t\t'errors',\n\t\t'uploader',\n\t\t'idBuilder',\n\t\t`\n\t\t\tif(!placeholders) return;\n\t\t\tawait Promise.all([\n\t\t\t\t${\n\t\t\tmappingInstructions.map((i) => {\n\t\t\t\tconst path = `[${JSON.stringify(i.key)}]`;\n\n\t\t\t\treturn i.arrayDimensions\n\t\t\t\t\t? `...(() => {\n\t\t\t\t\t\tconst arr = placeholders${path};\n\t\t\t\t\t\tconst p = [];\n\t\t\t\t\t\t${\n\t\t\t\t\t\tbuildFunctionArrayRecursion(\n\t\t\t\t\t\t\ti.arrayDimensions,\n\t\t\t\t\t\t\t`p.push((async () => {\n\t\t\t\t\t\t\tif(!arr || typeof arr !== 'object') return;\n\n\t\t\t\t\t\t\tconst { key, bucket, data } = arr;\n\t\t\t\t\t\t\tawait uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });\n\t\t\t\t\t\t\tplaceholders${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = idBuilder(arr);\n\t\t\t\t\t\t})().catch((e) => errors.push(e)))`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\t\treturn p;\n\t\t\t\t\t})()`\n\t\t\t\t\t: `(async () => {\n\t\t\t\t\t\t\tconst params = placeholders${path};\n\t\t\t\t\t\t\tif(!params || typeof params !== 'object') return;\n\n\t\t\t\t\t\t\tconst { key, bucket, data } = params;\n\t\t\t\t\t\t\tawait uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });\n\t\t\t\t\t\t\tplaceholders${path} = idBuilder(params);\n\t\t\t\t\t\t})().catch((e) => errors.push(e))`;\n\t\t\t}).join(',\\n')\n\t\t}\n\t\t\t]);\n\t\t`,\n\t);\n};\n\nexport type DrizzleS3FileMode = 'buffer' | 'hex' | 'base64' | 'uint8array';\n\nexport type DrizzleS3FileModeToData = {\n\tbuffer: Buffer;\n\thex: string;\n\tbase64: string;\n\tuint8array: Uint8Array;\n};\n\nexport type DrizzleS3FetchMode = 'file' | 'data' | 'presigned';\n\nexport type DrizzleS3FileOutputMappingInstructionNodeCommon = {\n\tpath: string[];\n};\nexport type DrizzleS3FileOutputMappingInstruction =\n\t| DrizzleS3FileOutputMappingInstructionIterableNode\n\t| DrizzleS3FileOutputMappingInstructionTerminalNode;\n\nexport type DrizzleS3FileOutputMappingInstructionTerminalNode =\n\t& DrizzleS3FileOutputMappingInstructionNodeCommon\n\t& {\n\t\tfileMode: DrizzleS3FileMode;\n\t\tfetchMode: DrizzleS3FetchMode;\n\t\toptions?: RequestPresigningArguments;\n\t\tarrayDimensions?: number;\n\t};\n\nexport type DrizzleS3FileOutputMappingInstructionIterableNode =\n\t& DrizzleS3FileOutputMappingInstructionNodeCommon\n\t& {\n\t\tsubinstructions: DrizzleS3FileOutputMappingInstruction[];\n\t};\n\nexport interface DrizzleS3FileInputMappingInstruction {\n\tmode: DrizzleS3FileMode;\n\tindex: number;\n\tarrayDimensions?: number;\n}\n\nexport interface DrizzleS3FilePlaceholderMappingInstruction {\n\tmode: DrizzleS3FileMode;\n\tkey: string;\n\tarrayDimensions?: number;\n}\n\nexport type RequestPresigningArguments = typeof getSignedUrl extends\n\t((client: any, command: any, options?: infer R) => any) ? R\n\t: Record<string, unknown>;\n\nexport interface DrizzleS3ObjectIdentification {\n\tkey: string;\n\tbucket: string;\n}\n\nexport interface S3ExtMeta {\n\tdecoder?: DecoderFunction;\n\tencoder?: EncoderFunction;\n}\n\nexport type DrizzleS3Object<TData extends string | Buffer | Uint8Array = string | Buffer | Uint8Array> = Simplify<\n\t& DrizzleS3ObjectIdentification\n\t& {\n\t\tdata: TData;\n\t}\n>;\n\nexport type DrizzleS3ObjectFile<TData extends string | Buffer | Uint8Array = string | Buffer | Uint8Array> = Simplify<\n\t& DrizzleS3ObjectIdentification\n\t& {\n\t\tdata: TData;\n\t}\n>;\n\n// export type DrizzleS3ObjectMeta = Simplify<\n// \t& DrizzleS3ObjectIdentification\n// \t& {\n// \t\tmeta?: Record<string, unknown>;\n// \t}\n// >;\n\nconst separator = ':';\n\nexport function objectIdToText({ key, bucket }: DrizzleS3ObjectIdentification): string {\n\treturn `${bucket}${separator}${key}`;\n}\n\nexport function textToObjectId(text: string): DrizzleS3ObjectIdentification {\n\tconst split = text.split(separator);\n\n\tif (split.length < 2) throw new Error(`Invalid S3 object identifier: \"${text}\". Expected: \"bucket${separator}key\"`);\n\n\tconst bucket = split.shift()!;\n\tconst key = split.join(separator);\n\n\treturn { key, bucket };\n}\n\nexport async function downloadFile(\n\t{ key, bucket, s3, mode, fileOnly }: {\n\t\tkey: string;\n\t\tbucket: string;\n\t\ts3: S3Client;\n\t\tmode: DrizzleS3FileMode;\n\t\tfileOnly?: boolean;\n\t},\n) {\n\tconst res = await s3.send(\n\t\tnew GetObjectCommand({\n\t\t\tBucket: bucket,\n\t\t\tKey: key,\n\t\t}),\n\t);\n\n\tif (!res.Body) {\n\t\tthrow new DrizzleError({\n\t\t\tmessage: `No data found in bucket \"${bucket}\" for key \"${key}\"`,\n\t\t});\n\t}\n\n\tlet data;\n\tswitch (mode) {\n\t\tcase 'uint8array': {\n\t\t\tdata = await res.Body.transformToByteArray();\n\t\t\tbreak;\n\t\t}\n\t\tcase 'buffer': {\n\t\t\tdata = Buffer.from(await res.Body.transformToByteArray());\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tdata = await res.Body.transformToString(mode);\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn fileOnly ? data : {\n\t\tkey,\n\t\tbucket,\n\t\tdata,\n\t};\n}\n\n// export async function downloadFileMeta({ key, bucket, s3 }: { key: string; bucket: string; s3: S3Client }) {\n// \tconst { Metadata: meta } = await s3.send(\n// \t\tnew HeadObjectCommand({\n// \t\t\tBucket: bucket,\n// \t\t\tKey: key,\n// \t\t}),\n// \t);\n\n// \treturn {\n// \t\tkey,\n// \t\tbucket,\n// \t\tmeta,\n// \t};\n// }\n\nexport async function presignDownload(\n\t{ key, bucket, options, s3 }: { key: string; bucket: string; options?: RequestPresigningArguments; s3: S3Client },\n) {\n\tconst command = new GetObjectCommand({\n\t\tBucket: bucket,\n\t\tKey: key,\n\t});\n\n\tconst presigner = await PresignerImporter.importPresigner();\n\t// Types are compatible, errors seem to be caused by internal package or package resolution issues\n\tconst url = await presigner(s3 as any, command as any, options);\n\n\treturn url;\n}\n\nexport async function uploadFile(\n\t{ key, bucket, data, s3, mode }: {\n\t\tkey: string;\n\t\tbucket: string;\n\t\tdata: DrizzleS3Object['data'];\n\t\ts3: S3Client;\n\t\tmode: DrizzleS3FileMode;\n\t},\n) {\n\tlet body: Buffer | Uint8Array;\n\tswitch (mode) {\n\t\tcase 'uint8array':\n\t\tcase 'buffer': {\n\t\t\tbody = data as Buffer | Uint8Array;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'hex': {\n\t\t\tbody = Uint8Array.fromHex ? Uint8Array.fromHex(data as string) : Buffer.from(data as string, 'hex');\n\t\t\tbreak;\n\t\t}\n\t\tcase 'base64': {\n\t\t\tbody = Uint8Array.fromBase64 ? Uint8Array.fromBase64(data as string) : Buffer.from(data as string, 'base64');\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst res = await s3.send(\n\t\tnew PutObjectCommand({\n\t\t\tBucket: bucket,\n\t\t\tKey: key,\n\t\t\tBody: body,\n\t\t}),\n\t);\n\n\treturn res;\n}\n\ntype RecursiveArrayItem = DrizzleS3Object | RecursiveArrayItem[];\n\nexport function mapArrayParam(\n\ts3: S3Client,\n\titem: RecursiveArrayItem,\n\tdimensions: number,\n\tmode: DrizzleS3FileMode,\n\terrors: unknown[],\n\tpromises: Promise<unknown>[],\n) {\n\tif (dimensions > 1) {\n\t\tfor (const sub of item as Exclude<RecursiveArrayItem, DrizzleS3Object>) {\n\t\t\tmapArrayParam(s3, sub, dimensions - 1, mode, errors, promises);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tlet i = 0;\n\tfor (const param of item as (DrizzleS3Object | unknown)[]) {\n\t\tif (!param || typeof param !== 'object') {\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\t\tconst obj = param as DrizzleS3Object;\n\n\t\tpromises.push(\n\t\t\t(async (i: number) => {\n\t\t\t\tawait uploadFile({\n\t\t\t\t\ts3: s3,\n\t\t\t\t\tkey: obj.key,\n\t\t\t\t\tbucket: obj.bucket,\n\t\t\t\t\tdata: obj.data,\n\t\t\t\t\tmode: mode,\n\t\t\t\t});\n\n\t\t\t\tconst value = objectIdToText(obj);\n\t\t\t\t(item as unknown[])[i] = value;\n\t\t\t})(i++).catch((e) => errors.push(e)),\n\t\t);\n\t}\n}\n\nexport async function mapParams(\n\ts3: S3Client,\n\tparams: unknown[],\n\tindexes: DrizzleS3FileInputMappingInstruction[],\n\terrors: unknown[],\n) {\n\tif (!indexes.length) return;\n\n\tconst arrayIdxs: number[] = [];\n\tawait Promise.all(\n\t\tindexes.reduce((p, { index, mode, arrayDimensions }) => {\n\t\t\tconst { value: param } = params![index]! as ExtensionParam<DrizzleS3Object, string>;\n\n\t\t\tif (arrayDimensions) {\n\t\t\t\tmapArrayParam(s3, param, arrayDimensions, mode, errors, p);\n\t\t\t\tarrayIdxs.push(index);\n\n\t\t\t\treturn p;\n\t\t\t}\n\n\t\t\tif (!param || typeof param !== 'object') return p;\n\n\t\t\tp.push(\n\t\t\t\t(async (i: number) => {\n\t\t\t\t\tawait uploadFile({\n\t\t\t\t\t\ts3: s3,\n\t\t\t\t\t\tkey: param.key,\n\t\t\t\t\t\tbucket: param.bucket,\n\t\t\t\t\t\tdata: param.data,\n\t\t\t\t\t\tmode: mode,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst value = objectIdToText(param);\n\t\t\t\t\tparams![i] = value;\n\t\t\t\t})(index).catch((e) => errors.push(e)),\n\t\t\t);\n\n\t\t\treturn p;\n\t\t}, [] as Promise<unknown>[]),\n\t);\n\n\tfor (const idx of arrayIdxs) {\n\t\tparams[idx] = (<ExtensionParam<any[]>> params[idx]).value\n\t\t\t? (<ExtensionParam> params[idx]).encoder.mapToDriverValue(\n\t\t\t\t(<ExtensionParam<any[]>> params[idx]).value,\n\t\t\t)\n\t\t\t: params[idx];\n\t}\n}\n"],"mappings":"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","names":["i"]}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var column_exports = {};
20
+ __export(column_exports, {
21
+ GelS3File: () => GelS3File,
22
+ GelS3FileBuilder: () => GelS3FileBuilder,
23
+ s3File: () => s3File
24
+ });
25
+ module.exports = __toCommonJS(column_exports);
26
+ var import_entity = require("../../../entity.cjs");
27
+ var import_extension_core = require("../../../extension-core/index.cjs");
28
+ var import_gel_core = require("../../../gel-core/index.cjs");
29
+ var import_utils = require("../../../utils.cjs");
30
+ var import_common = require("../common.cjs");
31
+ var import_extension = require("./extension.cjs");
32
+ class GelS3FileBuilder extends import_gel_core.GelColumnBuilder {
33
+ static [import_entity.entityKind] = "GelS3FileBuilder";
34
+ [import_extension_core.extensionColumnConfig];
35
+ constructor(name, config) {
36
+ super(name, "custom", "GelS3File");
37
+ this[import_extension_core.extensionColumnConfig] = {
38
+ fileMode: config.mode,
39
+ fetchMode: "file"
40
+ };
41
+ }
42
+ array(size) {
43
+ return super.array(size);
44
+ }
45
+ /**
46
+ * Allows to set default to an existing file
47
+ *
48
+ * @example
49
+ * ```
50
+ * fileColumn: s3File().default(sql`${bucket}:${key}`)
51
+ * ```
52
+ *
53
+ * @returns
54
+ */
55
+ default(value) {
56
+ return super.default(value);
57
+ }
58
+ generatedAlwaysAs(as) {
59
+ return super.generatedAlwaysAs(as);
60
+ }
61
+ /** @internal */
62
+ build(table) {
63
+ return new GelS3File(
64
+ table,
65
+ this.config,
66
+ this[import_extension_core.extensionColumnConfig]
67
+ );
68
+ }
69
+ }
70
+ class GelS3File extends import_gel_core.GelColumn {
71
+ static [import_entity.entityKind] = "GelS3File";
72
+ [import_extension_core.requiredExtension] = import_extension.DrizzleGelS3Extension;
73
+ [import_extension_core.extensionColumnConfig];
74
+ constructor(table, config, extensionConfig) {
75
+ super(table, config);
76
+ this[import_extension_core.extensionColumnConfig] = extensionConfig ?? {
77
+ fileMode: "buffer",
78
+ fetchMode: "file"
79
+ };
80
+ }
81
+ mapToDriverValue(value) {
82
+ if (typeof value === "string") return value;
83
+ return (0, import_common.objectIdToText)(value);
84
+ }
85
+ data() {
86
+ return new GelS3File(
87
+ this.table,
88
+ this.config,
89
+ { fileMode: this[import_extension_core.extensionColumnConfig].fileMode, fetchMode: "data" }
90
+ );
91
+ }
92
+ presigned(options) {
93
+ return new GelS3File(
94
+ this.table,
95
+ this.config,
96
+ { fileMode: this[import_extension_core.extensionColumnConfig].fileMode, fetchMode: "presigned", options }
97
+ );
98
+ }
99
+ getSQLType() {
100
+ return "text";
101
+ }
102
+ }
103
+ function s3File(a, b) {
104
+ const { name, config } = (0, import_utils.getColumnNameAndConfig)(a, b);
105
+ return new GelS3FileBuilder(name, config);
106
+ }
107
+ // Annotate the CommonJS export names for ESM import in node:
108
+ 0 && (module.exports = {
109
+ GelS3File,
110
+ GelS3FileBuilder,
111
+ s3File
112
+ });
113
+ //# sourceMappingURL=column.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/extensions/s3-file/gel/column.ts"],"sourcesContent":["import type {\n\tColumnBuilderBaseConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasDefault,\n\tHasGenerated,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport type { ColumnBaseConfig, ColumnRuntimeConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { extensionColumnConfig, requiredExtension } from '~/extension-core/index.ts';\nimport {\n\ttype GelArrayBuilder,\n\ttype GelArrayColumnBuilderBaseConfig,\n\tGelColumn,\n\tGelColumnBuilder,\n} from '~/gel-core/index.ts';\nimport type { AnyGelTable, GelTable } from '~/gel-core/table.ts';\nimport type { SQL } from '~/sql/index.ts';\nimport { type Assume, getColumnNameAndConfig } from '~/utils.ts';\nimport {\n\ttype DrizzleS3FetchMode,\n\ttype DrizzleS3FileMode,\n\ttype DrizzleS3FileModeToData,\n\ttype DrizzleS3ObjectFile,\n\ttype DrizzleS3ObjectIdentification,\n\tobjectIdToText,\n\ttype RequestPresigningArguments,\n} from '../common.ts';\nimport { DrizzleGelS3Extension } from './extension.ts';\n\nexport type GelS3FileBuilderInitial<TName extends string, TMode extends DrizzleS3FileMode> = GelS3FileBuilder<{\n\tname: TName;\n\tdataType: 'custom';\n\tcolumnType: 'GelS3File';\n\tdata: DrizzleS3ObjectFile<DrizzleS3FileModeToData[TMode]>;\n\tenumValues: undefined;\n\tdriverParam: string;\n}>;\n\nexport interface GelS3FileArrayBuilder<\n\tT extends GelArrayColumnBuilderBaseConfig,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string> | GelArrayColumnBuilderBaseConfig,\n> extends GelArrayBuilder<T, TBase> {\n\tdefault(value: SQL<unknown>): HasDefault<this>;\n\tgeneratedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, { type: 'always' }>;\n\tarray<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'GelArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t\tsize: TSize;\n\t\t\tbaseBuilder: T;\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t>;\n}\n\nexport class GelS3FileBuilder<\n\tT extends ColumnBuilderBaseConfig<'custom', 'GelS3File'>,\n\tTRuntimeConfig extends object = {},\n\tTTypeConfig extends object = {},\n> extends GelColumnBuilder<T, TRuntimeConfig, TTypeConfig> {\n\tstatic override readonly [entityKind]: string = 'GelS3FileBuilder';\n\treadonly [extensionColumnConfig]: GelS3FileExtensionColumnConfig;\n\n\tconstructor(\n\t\tname: T['name'],\n\t\tconfig: GelS3FileConfig,\n\t) {\n\t\tsuper(name, 'custom', 'GelS3File');\n\t\tthis[extensionColumnConfig] = {\n\t\t\tfileMode: config.mode,\n\t\t\tfetchMode: 'file',\n\t\t};\n\t}\n\n\toverride array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'GelArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t\tsize: TSize;\n\t\t\tbaseBuilder: T;\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t> {\n\t\treturn super.array(size) as any;\n\t}\n\n\t/**\n\t * Allows to set default to an existing file\n\t *\n\t * @example\n\t * ```\n\t * fileColumn: s3File().default(sql`${bucket}:${key}`)\n\t * ```\n\t *\n\t * @returns\n\t */\n\toverride default(value: SQL<unknown>): HasDefault<this> {\n\t\treturn super.default(value);\n\t}\n\n\toverride generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, { type: 'always' }> {\n\t\treturn super.generatedAlwaysAs(as);\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyGelTable<{ name: TTableName }>,\n\t): GelS3File<MakeColumnConfig<T, TTableName>> {\n\t\treturn new GelS3File<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t\tthis[extensionColumnConfig],\n\t\t);\n\t}\n}\n\nexport type GelS3FileExtensionColumnConfig = {\n\tfetchMode: DrizzleS3FetchMode;\n\tfileMode: DrizzleS3FileMode;\n\toptions?: RequestPresigningArguments;\n};\n\nexport class GelS3File<T extends ColumnBaseConfig<'custom', 'GelS3File'> = ColumnBaseConfig<'custom', 'GelS3File'>>\n\textends GelColumn<T, { enumValues: T['enumValues'] }>\n{\n\tstatic override readonly [entityKind]: string = 'GelS3File';\n\toverride [requiredExtension] = DrizzleGelS3Extension;\n\t[extensionColumnConfig]: GelS3FileExtensionColumnConfig;\n\n\tconstructor(\n\t\ttable: GelTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], T>,\n\t\textensionConfig?: GelS3FileExtensionColumnConfig,\n\t) {\n\t\tsuper(table, config);\n\n\t\tthis[extensionColumnConfig] = extensionConfig ?? {\n\t\t\tfileMode: 'buffer',\n\t\t\tfetchMode: 'file',\n\t\t};\n\t}\n\n\toverride mapToDriverValue(value: unknown): string {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn objectIdToText(value as DrizzleS3ObjectIdentification);\n\t}\n\n\tdata(): GelColumn<Omit<T, 'data'> & { data: Assume<T['data'], DrizzleS3ObjectFile>['data'] }> {\n\t\treturn new GelS3File(\n\t\t\tthis.table,\n\t\t\tthis.config as ColumnRuntimeConfig<\n\t\t\t\tDrizzleS3ObjectFile['data'],\n\t\t\t\tOmit<T, 'data'> & { data: Assume<T['data'], DrizzleS3ObjectFile>['data'] }\n\t\t\t>,\n\t\t\t{ fileMode: this[extensionColumnConfig].fileMode, fetchMode: 'data' },\n\t\t);\n\t}\n\n\tpresigned(options?: RequestPresigningArguments): GelColumn<Omit<T, 'data'> & { data: string }> {\n\t\treturn new GelS3File(\n\t\t\tthis.table,\n\t\t\tthis.config as ColumnRuntimeConfig<\n\t\t\t\tstring,\n\t\t\t\tOmit<T, 'data'> & { data: string }\n\t\t\t>,\n\t\t\t{ fileMode: this[extensionColumnConfig].fileMode, fetchMode: 'presigned', options },\n\t\t);\n\t}\n\n\tgetSQLType(): string {\n\t\treturn 'text';\n\t}\n}\n\nexport interface GelS3FileConfig<\n\tTMode extends DrizzleS3FileMode = DrizzleS3FileMode,\n> {\n\tmode: TMode;\n}\n\nexport function s3File<TName extends string, TMode extends DrizzleS3FileMode>(\n\tconfig: GelS3FileConfig<TMode>,\n): GelS3FileBuilderInitial<TName, TMode>;\nexport function s3File<TName extends string, TMode extends DrizzleS3FileMode>(\n\tname: TName,\n\tconfig: GelS3FileConfig<TMode>,\n): GelS3FileBuilderInitial<TName, TMode>;\nexport function s3File(a: string | GelS3FileConfig, b?: GelS3FileConfig): any {\n\tconst { name, config } = getColumnNameAndConfig<GelS3FileConfig>(a, b);\n\treturn new GelS3FileBuilder(name, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,oBAA2B;AAC3B,4BAAyD;AACzD,sBAKO;AAGP,mBAAoD;AACpD,oBAQO;AACP,uBAAsC;AAkC/B,MAAM,yBAIH,iCAAiD;AAAA,EAC1D,QAA0B,wBAAU,IAAY;AAAA,EAChD,CAAU,2CAAqB;AAAA,EAE/B,YACC,MACA,QACC;AACD,UAAM,MAAM,UAAU,WAAW;AACjC,SAAK,2CAAqB,IAAI;AAAA,MAC7B,UAAU,OAAO;AAAA,MACjB,WAAW;AAAA,IACZ;AAAA,EACD;AAAA,EAES,MAAoD,MAc3D;AACD,WAAO,MAAM,MAAM,IAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYS,QAAQ,OAAuC;AACvD,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AAAA,EAES,kBAAkB,IAAwE;AAClG,WAAO,MAAM,kBAAkB,EAAE;AAAA,EAClC;AAAA;AAAA,EAGS,MACR,OAC6C;AAC7C,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,MACL,KAAK,2CAAqB;AAAA,IAC3B;AAAA,EACD;AACD;AAQO,MAAM,kBACJ,0BACT;AAAA,EACC,QAA0B,wBAAU,IAAY;AAAA,EAChD,CAAU,uCAAiB,IAAI;AAAA,EAC/B,CAAC,2CAAqB;AAAA,EAEtB,YACC,OACA,QACA,iBACC;AACD,UAAM,OAAO,MAAM;AAEnB,SAAK,2CAAqB,IAAI,mBAAmB;AAAA,MAChD,UAAU;AAAA,MACV,WAAW;AAAA,IACZ;AAAA,EACD;AAAA,EAES,iBAAiB,OAAwB;AACjD,QAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,eAAO,8BAAe,KAAsC;AAAA,EAC7D;AAAA,EAEA,OAA8F;AAC7F,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MAIL,EAAE,UAAU,KAAK,2CAAqB,EAAE,UAAU,WAAW,OAAO;AAAA,IACrE;AAAA,EACD;AAAA,EAEA,UAAU,SAAqF;AAC9F,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MAIL,EAAE,UAAU,KAAK,2CAAqB,EAAE,UAAU,WAAW,aAAa,QAAQ;AAAA,IACnF;AAAA,EACD;AAAA,EAEA,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAeO,SAAS,OAAO,GAA6B,GAA0B;AAC7E,QAAM,EAAE,MAAM,OAAO,QAAI,qCAAwC,GAAG,CAAC;AACrE,SAAO,IAAI,iBAAiB,MAAM,MAAM;AACzC;","names":[]}
@@ -0,0 +1,105 @@
1
+ import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasDefault, HasGenerated } from "../../../column-builder.cjs";
2
+ import type { ColumnBaseConfig } from "../../../column.cjs";
3
+ import { entityKind } from "../../../entity.cjs";
4
+ import { extensionColumnConfig, requiredExtension } from "../../../extension-core/index.cjs";
5
+ import { type GelArrayBuilder, type GelArrayColumnBuilderBaseConfig, GelColumn, GelColumnBuilder } from "../../../gel-core/index.cjs";
6
+ import type { GelTable } from "../../../gel-core/table.cjs";
7
+ import type { SQL } from "../../../sql/index.cjs";
8
+ import { type Assume } from "../../../utils.cjs";
9
+ import { type DrizzleS3FetchMode, type DrizzleS3FileMode, type DrizzleS3FileModeToData, type DrizzleS3ObjectFile, type RequestPresigningArguments } from "../common.cjs";
10
+ import { DrizzleGelS3Extension } from "./extension.cjs";
11
+ export type GelS3FileBuilderInitial<TName extends string, TMode extends DrizzleS3FileMode> = GelS3FileBuilder<{
12
+ name: TName;
13
+ dataType: 'custom';
14
+ columnType: 'GelS3File';
15
+ data: DrizzleS3ObjectFile<DrizzleS3FileModeToData[TMode]>;
16
+ enumValues: undefined;
17
+ driverParam: string;
18
+ }>;
19
+ export interface GelS3FileArrayBuilder<T extends GelArrayColumnBuilderBaseConfig, TBase extends ColumnBuilderBaseConfig<ColumnDataType, string> | GelArrayColumnBuilderBaseConfig> extends GelArrayBuilder<T, TBase> {
20
+ default(value: SQL<unknown>): HasDefault<this>;
21
+ generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, {
22
+ type: 'always';
23
+ }>;
24
+ array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<{
25
+ name: T['name'];
26
+ dataType: 'array';
27
+ columnType: 'GelArray';
28
+ data: T['data'][];
29
+ driverParam: T['driverParam'][] | string;
30
+ enumValues: T['enumValues'];
31
+ size: TSize;
32
+ baseBuilder: T;
33
+ } & (T extends {
34
+ notNull: true;
35
+ } ? {
36
+ notNull: true;
37
+ } : {}) & (T extends {
38
+ hasDefault: true;
39
+ } ? {
40
+ hasDefault: true;
41
+ } : {}), T>;
42
+ }
43
+ export declare class GelS3FileBuilder<T extends ColumnBuilderBaseConfig<'custom', 'GelS3File'>, TRuntimeConfig extends object = {}, TTypeConfig extends object = {}> extends GelColumnBuilder<T, TRuntimeConfig, TTypeConfig> {
44
+ static readonly [entityKind]: string;
45
+ readonly [extensionColumnConfig]: GelS3FileExtensionColumnConfig;
46
+ constructor(name: T['name'], config: GelS3FileConfig);
47
+ array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<{
48
+ name: T['name'];
49
+ dataType: 'array';
50
+ columnType: 'GelArray';
51
+ data: T['data'][];
52
+ driverParam: T['driverParam'][] | string;
53
+ enumValues: T['enumValues'];
54
+ size: TSize;
55
+ baseBuilder: T;
56
+ } & (T extends {
57
+ notNull: true;
58
+ } ? {
59
+ notNull: true;
60
+ } : {}) & (T extends {
61
+ hasDefault: true;
62
+ } ? {
63
+ hasDefault: true;
64
+ } : {}), T>;
65
+ /**
66
+ * Allows to set default to an existing file
67
+ *
68
+ * @example
69
+ * ```
70
+ * fileColumn: s3File().default(sql`${bucket}:${key}`)
71
+ * ```
72
+ *
73
+ * @returns
74
+ */
75
+ default(value: SQL<unknown>): HasDefault<this>;
76
+ generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, {
77
+ type: 'always';
78
+ }>;
79
+ }
80
+ export type GelS3FileExtensionColumnConfig = {
81
+ fetchMode: DrizzleS3FetchMode;
82
+ fileMode: DrizzleS3FileMode;
83
+ options?: RequestPresigningArguments;
84
+ };
85
+ export declare class GelS3File<T extends ColumnBaseConfig<'custom', 'GelS3File'> = ColumnBaseConfig<'custom', 'GelS3File'>> extends GelColumn<T, {
86
+ enumValues: T['enumValues'];
87
+ }> {
88
+ static readonly [entityKind]: string;
89
+ [requiredExtension]: typeof DrizzleGelS3Extension;
90
+ [extensionColumnConfig]: GelS3FileExtensionColumnConfig;
91
+ constructor(table: GelTable, config: ColumnBuilderRuntimeConfig<T['data'], T>, extensionConfig?: GelS3FileExtensionColumnConfig);
92
+ mapToDriverValue(value: unknown): string;
93
+ data(): GelColumn<Omit<T, 'data'> & {
94
+ data: Assume<T['data'], DrizzleS3ObjectFile>['data'];
95
+ }>;
96
+ presigned(options?: RequestPresigningArguments): GelColumn<Omit<T, 'data'> & {
97
+ data: string;
98
+ }>;
99
+ getSQLType(): string;
100
+ }
101
+ export interface GelS3FileConfig<TMode extends DrizzleS3FileMode = DrizzleS3FileMode> {
102
+ mode: TMode;
103
+ }
104
+ export declare function s3File<TName extends string, TMode extends DrizzleS3FileMode>(config: GelS3FileConfig<TMode>): GelS3FileBuilderInitial<TName, TMode>;
105
+ export declare function s3File<TName extends string, TMode extends DrizzleS3FileMode>(name: TName, config: GelS3FileConfig<TMode>): GelS3FileBuilderInitial<TName, TMode>;
@@ -0,0 +1,105 @@
1
+ import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasDefault, HasGenerated } from "../../../column-builder.js";
2
+ import type { ColumnBaseConfig } from "../../../column.js";
3
+ import { entityKind } from "../../../entity.js";
4
+ import { extensionColumnConfig, requiredExtension } from "../../../extension-core/index.js";
5
+ import { type GelArrayBuilder, type GelArrayColumnBuilderBaseConfig, GelColumn, GelColumnBuilder } from "../../../gel-core/index.js";
6
+ import type { GelTable } from "../../../gel-core/table.js";
7
+ import type { SQL } from "../../../sql/index.js";
8
+ import { type Assume } from "../../../utils.js";
9
+ import { type DrizzleS3FetchMode, type DrizzleS3FileMode, type DrizzleS3FileModeToData, type DrizzleS3ObjectFile, type RequestPresigningArguments } from "../common.js";
10
+ import { DrizzleGelS3Extension } from "./extension.js";
11
+ export type GelS3FileBuilderInitial<TName extends string, TMode extends DrizzleS3FileMode> = GelS3FileBuilder<{
12
+ name: TName;
13
+ dataType: 'custom';
14
+ columnType: 'GelS3File';
15
+ data: DrizzleS3ObjectFile<DrizzleS3FileModeToData[TMode]>;
16
+ enumValues: undefined;
17
+ driverParam: string;
18
+ }>;
19
+ export interface GelS3FileArrayBuilder<T extends GelArrayColumnBuilderBaseConfig, TBase extends ColumnBuilderBaseConfig<ColumnDataType, string> | GelArrayColumnBuilderBaseConfig> extends GelArrayBuilder<T, TBase> {
20
+ default(value: SQL<unknown>): HasDefault<this>;
21
+ generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, {
22
+ type: 'always';
23
+ }>;
24
+ array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<{
25
+ name: T['name'];
26
+ dataType: 'array';
27
+ columnType: 'GelArray';
28
+ data: T['data'][];
29
+ driverParam: T['driverParam'][] | string;
30
+ enumValues: T['enumValues'];
31
+ size: TSize;
32
+ baseBuilder: T;
33
+ } & (T extends {
34
+ notNull: true;
35
+ } ? {
36
+ notNull: true;
37
+ } : {}) & (T extends {
38
+ hasDefault: true;
39
+ } ? {
40
+ hasDefault: true;
41
+ } : {}), T>;
42
+ }
43
+ export declare class GelS3FileBuilder<T extends ColumnBuilderBaseConfig<'custom', 'GelS3File'>, TRuntimeConfig extends object = {}, TTypeConfig extends object = {}> extends GelColumnBuilder<T, TRuntimeConfig, TTypeConfig> {
44
+ static readonly [entityKind]: string;
45
+ readonly [extensionColumnConfig]: GelS3FileExtensionColumnConfig;
46
+ constructor(name: T['name'], config: GelS3FileConfig);
47
+ array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<{
48
+ name: T['name'];
49
+ dataType: 'array';
50
+ columnType: 'GelArray';
51
+ data: T['data'][];
52
+ driverParam: T['driverParam'][] | string;
53
+ enumValues: T['enumValues'];
54
+ size: TSize;
55
+ baseBuilder: T;
56
+ } & (T extends {
57
+ notNull: true;
58
+ } ? {
59
+ notNull: true;
60
+ } : {}) & (T extends {
61
+ hasDefault: true;
62
+ } ? {
63
+ hasDefault: true;
64
+ } : {}), T>;
65
+ /**
66
+ * Allows to set default to an existing file
67
+ *
68
+ * @example
69
+ * ```
70
+ * fileColumn: s3File().default(sql`${bucket}:${key}`)
71
+ * ```
72
+ *
73
+ * @returns
74
+ */
75
+ default(value: SQL<unknown>): HasDefault<this>;
76
+ generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, {
77
+ type: 'always';
78
+ }>;
79
+ }
80
+ export type GelS3FileExtensionColumnConfig = {
81
+ fetchMode: DrizzleS3FetchMode;
82
+ fileMode: DrizzleS3FileMode;
83
+ options?: RequestPresigningArguments;
84
+ };
85
+ export declare class GelS3File<T extends ColumnBaseConfig<'custom', 'GelS3File'> = ColumnBaseConfig<'custom', 'GelS3File'>> extends GelColumn<T, {
86
+ enumValues: T['enumValues'];
87
+ }> {
88
+ static readonly [entityKind]: string;
89
+ [requiredExtension]: typeof DrizzleGelS3Extension;
90
+ [extensionColumnConfig]: GelS3FileExtensionColumnConfig;
91
+ constructor(table: GelTable, config: ColumnBuilderRuntimeConfig<T['data'], T>, extensionConfig?: GelS3FileExtensionColumnConfig);
92
+ mapToDriverValue(value: unknown): string;
93
+ data(): GelColumn<Omit<T, 'data'> & {
94
+ data: Assume<T['data'], DrizzleS3ObjectFile>['data'];
95
+ }>;
96
+ presigned(options?: RequestPresigningArguments): GelColumn<Omit<T, 'data'> & {
97
+ data: string;
98
+ }>;
99
+ getSQLType(): string;
100
+ }
101
+ export interface GelS3FileConfig<TMode extends DrizzleS3FileMode = DrizzleS3FileMode> {
102
+ mode: TMode;
103
+ }
104
+ export declare function s3File<TName extends string, TMode extends DrizzleS3FileMode>(config: GelS3FileConfig<TMode>): GelS3FileBuilderInitial<TName, TMode>;
105
+ export declare function s3File<TName extends string, TMode extends DrizzleS3FileMode>(name: TName, config: GelS3FileConfig<TMode>): GelS3FileBuilderInitial<TName, TMode>;