drizzle-orm 0.43.0 → 0.43.1-26a0497

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 (491) hide show
  1. package/aws-data-api/pg/driver.cjs +5 -1
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +1 -0
  4. package/aws-data-api/pg/driver.d.ts +1 -0
  5. package/aws-data-api/pg/driver.js +5 -1
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/session.cjs +15 -4
  8. package/aws-data-api/pg/session.cjs.map +1 -1
  9. package/aws-data-api/pg/session.d.cts +13 -2
  10. package/aws-data-api/pg/session.d.ts +13 -2
  11. package/aws-data-api/pg/session.js +15 -4
  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.js.map +1 -1
  15. package/better-sqlite3/session.cjs +9 -3
  16. package/better-sqlite3/session.cjs.map +1 -1
  17. package/better-sqlite3/session.d.cts +12 -2
  18. package/better-sqlite3/session.d.ts +12 -2
  19. package/better-sqlite3/session.js +9 -3
  20. package/better-sqlite3/session.js.map +1 -1
  21. package/bun-sql/driver.cjs +5 -1
  22. package/bun-sql/driver.cjs.map +1 -1
  23. package/bun-sql/driver.js +5 -1
  24. package/bun-sql/driver.js.map +1 -1
  25. package/bun-sql/session.cjs +21 -9
  26. package/bun-sql/session.cjs.map +1 -1
  27. package/bun-sql/session.d.cts +12 -2
  28. package/bun-sql/session.d.ts +12 -2
  29. package/bun-sql/session.js +21 -9
  30. package/bun-sql/session.js.map +1 -1
  31. package/cache/core/cache.cjs +47 -0
  32. package/cache/core/cache.cjs.map +1 -0
  33. package/cache/core/cache.d.cts +35 -0
  34. package/cache/core/cache.d.ts +35 -0
  35. package/cache/core/cache.js +22 -0
  36. package/cache/core/cache.js.map +1 -0
  37. package/cache/core/index.cjs +23 -0
  38. package/cache/core/index.cjs.map +1 -0
  39. package/cache/core/index.d.cts +1 -0
  40. package/cache/core/index.d.ts +1 -0
  41. package/cache/core/index.js +2 -0
  42. package/cache/core/index.js.map +1 -0
  43. package/cache/core/types.cjs +17 -0
  44. package/cache/core/types.cjs.map +1 -0
  45. package/cache/core/types.d.cts +33 -0
  46. package/cache/core/types.d.ts +33 -0
  47. package/cache/core/types.js +1 -0
  48. package/cache/core/types.js.map +1 -0
  49. package/cache/upstash/cache.cjs +148 -0
  50. package/cache/upstash/cache.cjs.map +1 -0
  51. package/cache/upstash/cache.d.cts +29 -0
  52. package/cache/upstash/cache.d.ts +29 -0
  53. package/cache/upstash/cache.js +123 -0
  54. package/cache/upstash/cache.js.map +1 -0
  55. package/cache/upstash/index.cjs +23 -0
  56. package/cache/upstash/index.cjs.map +1 -0
  57. package/cache/upstash/index.d.cts +1 -0
  58. package/cache/upstash/index.d.ts +1 -0
  59. package/cache/upstash/index.js +2 -0
  60. package/cache/upstash/index.js.map +1 -0
  61. package/d1/driver.cjs +5 -1
  62. package/d1/driver.cjs.map +1 -1
  63. package/d1/driver.js +5 -1
  64. package/d1/driver.js.map +1 -1
  65. package/d1/session.cjs +23 -9
  66. package/d1/session.cjs.map +1 -1
  67. package/d1/session.d.cts +12 -2
  68. package/d1/session.d.ts +12 -2
  69. package/d1/session.js +23 -9
  70. package/d1/session.js.map +1 -1
  71. package/durable-sqlite/session.cjs +1 -1
  72. package/durable-sqlite/session.cjs.map +1 -1
  73. package/durable-sqlite/session.js +1 -1
  74. package/durable-sqlite/session.js.map +1 -1
  75. package/gel/driver.cjs +9 -2
  76. package/gel/driver.cjs.map +1 -1
  77. package/gel/driver.d.cts +2 -0
  78. package/gel/driver.d.ts +2 -0
  79. package/gel/driver.js +9 -2
  80. package/gel/driver.js.map +1 -1
  81. package/gel/session.cjs +25 -10
  82. package/gel/session.cjs.map +1 -1
  83. package/gel/session.d.cts +12 -2
  84. package/gel/session.d.ts +12 -2
  85. package/gel/session.js +25 -10
  86. package/gel/session.js.map +1 -1
  87. package/gel-core/db.cjs +1 -0
  88. package/gel-core/db.cjs.map +1 -1
  89. package/gel-core/db.d.cts +4 -0
  90. package/gel-core/db.d.ts +4 -0
  91. package/gel-core/db.js +1 -0
  92. package/gel-core/db.js.map +1 -1
  93. package/gel-core/query-builders/delete.cjs +5 -1
  94. package/gel-core/query-builders/delete.cjs.map +1 -1
  95. package/gel-core/query-builders/delete.js +5 -1
  96. package/gel-core/query-builders/delete.js.map +1 -1
  97. package/gel-core/query-builders/insert.cjs +5 -1
  98. package/gel-core/query-builders/insert.cjs.map +1 -1
  99. package/gel-core/query-builders/insert.js +5 -1
  100. package/gel-core/query-builders/insert.js.map +1 -1
  101. package/gel-core/query-builders/select.cjs +29 -4
  102. package/gel-core/query-builders/select.cjs.map +1 -1
  103. package/gel-core/query-builders/select.d.cts +9 -0
  104. package/gel-core/query-builders/select.d.ts +9 -0
  105. package/gel-core/query-builders/select.js +29 -4
  106. package/gel-core/query-builders/select.js.map +1 -1
  107. package/gel-core/query-builders/update.cjs +5 -1
  108. package/gel-core/query-builders/update.cjs.map +1 -1
  109. package/gel-core/query-builders/update.js +5 -1
  110. package/gel-core/query-builders/update.js.map +1 -1
  111. package/gel-core/session.cjs +52 -1
  112. package/gel-core/session.cjs.map +1 -1
  113. package/gel-core/session.d.cts +14 -3
  114. package/gel-core/session.d.ts +14 -3
  115. package/gel-core/session.js +53 -2
  116. package/gel-core/session.js.map +1 -1
  117. package/gel-core/utils.cjs +16 -0
  118. package/gel-core/utils.cjs.map +1 -1
  119. package/gel-core/utils.d.cts +8 -4
  120. package/gel-core/utils.d.ts +8 -4
  121. package/gel-core/utils.js +15 -0
  122. package/gel-core/utils.js.map +1 -1
  123. package/libsql/driver-core.cjs +5 -1
  124. package/libsql/driver-core.cjs.map +1 -1
  125. package/libsql/driver-core.js +5 -1
  126. package/libsql/driver-core.js.map +1 -1
  127. package/libsql/session.cjs +27 -13
  128. package/libsql/session.cjs.map +1 -1
  129. package/libsql/session.d.cts +12 -2
  130. package/libsql/session.d.ts +12 -2
  131. package/libsql/session.js +27 -13
  132. package/libsql/session.js.map +1 -1
  133. package/mysql-core/db.cjs +1 -0
  134. package/mysql-core/db.cjs.map +1 -1
  135. package/mysql-core/db.d.cts +4 -0
  136. package/mysql-core/db.d.ts +4 -0
  137. package/mysql-core/db.js +1 -0
  138. package/mysql-core/db.js.map +1 -1
  139. package/mysql-core/query-builders/delete.cjs +9 -1
  140. package/mysql-core/query-builders/delete.cjs.map +1 -1
  141. package/mysql-core/query-builders/delete.js +9 -1
  142. package/mysql-core/query-builders/delete.js.map +1 -1
  143. package/mysql-core/query-builders/insert.cjs +8 -1
  144. package/mysql-core/query-builders/insert.cjs.map +1 -1
  145. package/mysql-core/query-builders/insert.d.cts +2 -0
  146. package/mysql-core/query-builders/insert.d.ts +2 -0
  147. package/mysql-core/query-builders/insert.js +8 -1
  148. package/mysql-core/query-builders/insert.js.map +1 -1
  149. package/mysql-core/query-builders/select.cjs +27 -3
  150. package/mysql-core/query-builders/select.cjs.map +1 -1
  151. package/mysql-core/query-builders/select.d.cts +9 -0
  152. package/mysql-core/query-builders/select.d.ts +9 -0
  153. package/mysql-core/query-builders/select.js +28 -4
  154. package/mysql-core/query-builders/select.js.map +1 -1
  155. package/mysql-core/query-builders/update.cjs +11 -1
  156. package/mysql-core/query-builders/update.cjs.map +1 -1
  157. package/mysql-core/query-builders/update.d.cts +2 -0
  158. package/mysql-core/query-builders/update.d.ts +2 -0
  159. package/mysql-core/query-builders/update.js +11 -1
  160. package/mysql-core/query-builders/update.js.map +1 -1
  161. package/mysql-core/session.cjs +53 -0
  162. package/mysql-core/session.cjs.map +1 -1
  163. package/mysql-core/session.d.cts +15 -2
  164. package/mysql-core/session.d.ts +15 -2
  165. package/mysql-core/session.js +54 -1
  166. package/mysql-core/session.js.map +1 -1
  167. package/mysql-core/utils.cjs +16 -0
  168. package/mysql-core/utils.cjs.map +1 -1
  169. package/mysql-core/utils.d.cts +6 -2
  170. package/mysql-core/utils.d.ts +6 -2
  171. package/mysql-core/utils.js +15 -0
  172. package/mysql-core/utils.js.map +1 -1
  173. package/mysql-proxy/session.cjs +15 -5
  174. package/mysql-proxy/session.cjs.map +1 -1
  175. package/mysql-proxy/session.d.cts +12 -2
  176. package/mysql-proxy/session.d.ts +12 -2
  177. package/mysql-proxy/session.js +15 -5
  178. package/mysql-proxy/session.js.map +1 -1
  179. package/mysql2/driver.cjs +10 -2
  180. package/mysql2/driver.cjs.map +1 -1
  181. package/mysql2/driver.d.cts +2 -0
  182. package/mysql2/driver.d.ts +2 -0
  183. package/mysql2/driver.js +10 -2
  184. package/mysql2/driver.js.map +1 -1
  185. package/mysql2/session.cjs +15 -5
  186. package/mysql2/session.cjs.map +1 -1
  187. package/mysql2/session.d.cts +12 -2
  188. package/mysql2/session.d.ts +12 -2
  189. package/mysql2/session.js +15 -5
  190. package/mysql2/session.js.map +1 -1
  191. package/neon-http/driver.cjs +9 -2
  192. package/neon-http/driver.cjs.map +1 -1
  193. package/neon-http/driver.d.cts +2 -0
  194. package/neon-http/driver.d.ts +2 -0
  195. package/neon-http/driver.js +9 -2
  196. package/neon-http/driver.js.map +1 -1
  197. package/neon-http/session.cjs +25 -15
  198. package/neon-http/session.cjs.map +1 -1
  199. package/neon-http/session.d.cts +12 -2
  200. package/neon-http/session.d.ts +12 -2
  201. package/neon-http/session.js +25 -15
  202. package/neon-http/session.js.map +1 -1
  203. package/neon-serverless/driver.cjs +9 -2
  204. package/neon-serverless/driver.cjs.map +1 -1
  205. package/neon-serverless/driver.d.cts +2 -0
  206. package/neon-serverless/driver.d.ts +2 -0
  207. package/neon-serverless/driver.js +9 -2
  208. package/neon-serverless/driver.js.map +1 -1
  209. package/neon-serverless/session.cjs +21 -7
  210. package/neon-serverless/session.cjs.map +1 -1
  211. package/neon-serverless/session.d.cts +12 -2
  212. package/neon-serverless/session.d.ts +12 -2
  213. package/neon-serverless/session.js +21 -7
  214. package/neon-serverless/session.js.map +1 -1
  215. package/node-postgres/driver.cjs +9 -2
  216. package/node-postgres/driver.cjs.map +1 -1
  217. package/node-postgres/driver.d.cts +2 -0
  218. package/node-postgres/driver.d.ts +2 -0
  219. package/node-postgres/driver.js +9 -2
  220. package/node-postgres/driver.js.map +1 -1
  221. package/node-postgres/session.cjs +19 -6
  222. package/node-postgres/session.cjs.map +1 -1
  223. package/node-postgres/session.d.cts +13 -2
  224. package/node-postgres/session.d.ts +13 -2
  225. package/node-postgres/session.js +19 -6
  226. package/node-postgres/session.js.map +1 -1
  227. package/op-sqlite/driver.cjs +5 -1
  228. package/op-sqlite/driver.cjs.map +1 -1
  229. package/op-sqlite/driver.js +5 -1
  230. package/op-sqlite/driver.js.map +1 -1
  231. package/op-sqlite/session.cjs +23 -9
  232. package/op-sqlite/session.cjs.map +1 -1
  233. package/op-sqlite/session.d.cts +12 -2
  234. package/op-sqlite/session.d.ts +12 -2
  235. package/op-sqlite/session.js +23 -9
  236. package/op-sqlite/session.js.map +1 -1
  237. package/package.json +69 -4
  238. package/pg-core/db.cjs +1 -0
  239. package/pg-core/db.cjs.map +1 -1
  240. package/pg-core/db.d.cts +4 -0
  241. package/pg-core/db.d.ts +4 -0
  242. package/pg-core/db.js +1 -0
  243. package/pg-core/db.js.map +1 -1
  244. package/pg-core/query-builders/delete.cjs +6 -1
  245. package/pg-core/query-builders/delete.cjs.map +1 -1
  246. package/pg-core/query-builders/delete.d.cts +3 -1
  247. package/pg-core/query-builders/delete.d.ts +3 -1
  248. package/pg-core/query-builders/delete.js +6 -1
  249. package/pg-core/query-builders/delete.js.map +1 -1
  250. package/pg-core/query-builders/insert.cjs +6 -1
  251. package/pg-core/query-builders/insert.cjs.map +1 -1
  252. package/pg-core/query-builders/insert.d.cts +2 -0
  253. package/pg-core/query-builders/insert.d.ts +2 -0
  254. package/pg-core/query-builders/insert.js +6 -1
  255. package/pg-core/query-builders/insert.js.map +1 -1
  256. package/pg-core/query-builders/select.cjs +31 -5
  257. package/pg-core/query-builders/select.cjs.map +1 -1
  258. package/pg-core/query-builders/select.d.cts +15 -6
  259. package/pg-core/query-builders/select.d.ts +15 -6
  260. package/pg-core/query-builders/select.js +31 -5
  261. package/pg-core/query-builders/select.js.map +1 -1
  262. package/pg-core/query-builders/update.cjs +6 -1
  263. package/pg-core/query-builders/update.cjs.map +1 -1
  264. package/pg-core/query-builders/update.d.cts +4 -2
  265. package/pg-core/query-builders/update.d.ts +4 -2
  266. package/pg-core/query-builders/update.js +6 -1
  267. package/pg-core/query-builders/update.js.map +1 -1
  268. package/pg-core/schema.cjs +2 -2
  269. package/pg-core/schema.cjs.map +1 -1
  270. package/pg-core/schema.d.cts +4 -1
  271. package/pg-core/schema.d.ts +4 -1
  272. package/pg-core/schema.js +2 -2
  273. package/pg-core/schema.js.map +1 -1
  274. package/pg-core/session.cjs +52 -1
  275. package/pg-core/session.cjs.map +1 -1
  276. package/pg-core/session.d.cts +14 -3
  277. package/pg-core/session.d.ts +14 -3
  278. package/pg-core/session.js +53 -2
  279. package/pg-core/session.js.map +1 -1
  280. package/pg-core/utils.cjs +16 -0
  281. package/pg-core/utils.cjs.map +1 -1
  282. package/pg-core/utils.d.cts +8 -4
  283. package/pg-core/utils.d.ts +8 -4
  284. package/pg-core/utils.js +16 -1
  285. package/pg-core/utils.js.map +1 -1
  286. package/pg-proxy/driver.cjs +7 -2
  287. package/pg-proxy/driver.cjs.map +1 -1
  288. package/pg-proxy/driver.js +7 -2
  289. package/pg-proxy/driver.js.map +1 -1
  290. package/pg-proxy/session.cjs +15 -5
  291. package/pg-proxy/session.cjs.map +1 -1
  292. package/pg-proxy/session.d.cts +12 -2
  293. package/pg-proxy/session.d.ts +12 -2
  294. package/pg-proxy/session.js +15 -5
  295. package/pg-proxy/session.js.map +1 -1
  296. package/pglite/driver.cjs +9 -2
  297. package/pglite/driver.cjs.map +1 -1
  298. package/pglite/driver.d.cts +2 -0
  299. package/pglite/driver.d.ts +2 -0
  300. package/pglite/driver.js +9 -2
  301. package/pglite/driver.js.map +1 -1
  302. package/pglite/session.cjs +19 -7
  303. package/pglite/session.cjs.map +1 -1
  304. package/pglite/session.d.cts +12 -2
  305. package/pglite/session.d.ts +12 -2
  306. package/pglite/session.js +19 -7
  307. package/pglite/session.js.map +1 -1
  308. package/planetscale-serverless/driver.cjs +5 -1
  309. package/planetscale-serverless/driver.cjs.map +1 -1
  310. package/planetscale-serverless/driver.d.cts +1 -0
  311. package/planetscale-serverless/driver.d.ts +1 -0
  312. package/planetscale-serverless/driver.js +5 -1
  313. package/planetscale-serverless/driver.js.map +1 -1
  314. package/planetscale-serverless/session.cjs +15 -5
  315. package/planetscale-serverless/session.cjs.map +1 -1
  316. package/planetscale-serverless/session.d.cts +12 -2
  317. package/planetscale-serverless/session.d.ts +12 -2
  318. package/planetscale-serverless/session.js +15 -5
  319. package/planetscale-serverless/session.js.map +1 -1
  320. package/postgres-js/driver.cjs +5 -1
  321. package/postgres-js/driver.cjs.map +1 -1
  322. package/postgres-js/driver.js +5 -1
  323. package/postgres-js/driver.js.map +1 -1
  324. package/postgres-js/session.cjs +18 -6
  325. package/postgres-js/session.cjs.map +1 -1
  326. package/postgres-js/session.d.cts +12 -2
  327. package/postgres-js/session.d.ts +12 -2
  328. package/postgres-js/session.js +18 -6
  329. package/postgres-js/session.js.map +1 -1
  330. package/prisma/mysql/session.cjs +1 -1
  331. package/prisma/mysql/session.cjs.map +1 -1
  332. package/prisma/mysql/session.js +1 -1
  333. package/prisma/mysql/session.js.map +1 -1
  334. package/prisma/pg/session.cjs +1 -1
  335. package/prisma/pg/session.cjs.map +1 -1
  336. package/prisma/pg/session.js +1 -1
  337. package/prisma/pg/session.js.map +1 -1
  338. package/query-builders/query-builder.cjs.map +1 -1
  339. package/query-builders/query-builder.d.cts +2 -1
  340. package/query-builders/query-builder.d.ts +2 -1
  341. package/query-builders/query-builder.js.map +1 -1
  342. package/singlestore/driver.cjs +12 -2
  343. package/singlestore/driver.cjs.map +1 -1
  344. package/singlestore/driver.d.cts +2 -0
  345. package/singlestore/driver.d.ts +2 -0
  346. package/singlestore/driver.js +12 -2
  347. package/singlestore/driver.js.map +1 -1
  348. package/singlestore/session.cjs +15 -5
  349. package/singlestore/session.cjs.map +1 -1
  350. package/singlestore/session.d.cts +12 -2
  351. package/singlestore/session.d.ts +12 -2
  352. package/singlestore/session.js +15 -5
  353. package/singlestore/session.js.map +1 -1
  354. package/singlestore-core/db.cjs +1 -0
  355. package/singlestore-core/db.cjs.map +1 -1
  356. package/singlestore-core/db.d.cts +4 -0
  357. package/singlestore-core/db.d.ts +4 -0
  358. package/singlestore-core/db.js +1 -0
  359. package/singlestore-core/db.js.map +1 -1
  360. package/singlestore-core/query-builders/delete.cjs +9 -1
  361. package/singlestore-core/query-builders/delete.cjs.map +1 -1
  362. package/singlestore-core/query-builders/delete.js +9 -1
  363. package/singlestore-core/query-builders/delete.js.map +1 -1
  364. package/singlestore-core/query-builders/insert.cjs +6 -1
  365. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  366. package/singlestore-core/query-builders/insert.js +6 -1
  367. package/singlestore-core/query-builders/insert.js.map +1 -1
  368. package/singlestore-core/query-builders/select.cjs +28 -3
  369. package/singlestore-core/query-builders/select.cjs.map +1 -1
  370. package/singlestore-core/query-builders/select.d.cts +9 -0
  371. package/singlestore-core/query-builders/select.d.ts +9 -0
  372. package/singlestore-core/query-builders/select.js +28 -3
  373. package/singlestore-core/query-builders/select.js.map +1 -1
  374. package/singlestore-core/query-builders/update.cjs +9 -1
  375. package/singlestore-core/query-builders/update.cjs.map +1 -1
  376. package/singlestore-core/query-builders/update.js +9 -1
  377. package/singlestore-core/query-builders/update.js.map +1 -1
  378. package/singlestore-core/session.cjs +53 -0
  379. package/singlestore-core/session.cjs.map +1 -1
  380. package/singlestore-core/session.d.cts +14 -2
  381. package/singlestore-core/session.d.ts +14 -2
  382. package/singlestore-core/session.js +54 -1
  383. package/singlestore-core/session.js.map +1 -1
  384. package/singlestore-core/utils.cjs +16 -0
  385. package/singlestore-core/utils.cjs.map +1 -1
  386. package/singlestore-core/utils.d.cts +3 -0
  387. package/singlestore-core/utils.d.ts +3 -0
  388. package/singlestore-core/utils.js +15 -0
  389. package/singlestore-core/utils.js.map +1 -1
  390. package/sql/sql.cjs +10 -0
  391. package/sql/sql.cjs.map +1 -1
  392. package/sql/sql.js +10 -0
  393. package/sql/sql.js.map +1 -1
  394. package/sqlite-core/db.cjs +1 -0
  395. package/sqlite-core/db.cjs.map +1 -1
  396. package/sqlite-core/db.d.cts +4 -0
  397. package/sqlite-core/db.d.ts +4 -0
  398. package/sqlite-core/db.js +1 -0
  399. package/sqlite-core/db.js.map +1 -1
  400. package/sqlite-core/query-builders/delete.cjs +7 -1
  401. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  402. package/sqlite-core/query-builders/delete.js +7 -1
  403. package/sqlite-core/query-builders/delete.js.map +1 -1
  404. package/sqlite-core/query-builders/insert.cjs +7 -1
  405. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  406. package/sqlite-core/query-builders/insert.js +7 -1
  407. package/sqlite-core/query-builders/insert.js.map +1 -1
  408. package/sqlite-core/query-builders/select.cjs +31 -3
  409. package/sqlite-core/query-builders/select.cjs.map +1 -1
  410. package/sqlite-core/query-builders/select.d.cts +9 -0
  411. package/sqlite-core/query-builders/select.d.ts +9 -0
  412. package/sqlite-core/query-builders/select.js +31 -3
  413. package/sqlite-core/query-builders/select.js.map +1 -1
  414. package/sqlite-core/query-builders/update.cjs +7 -1
  415. package/sqlite-core/query-builders/update.cjs.map +1 -1
  416. package/sqlite-core/query-builders/update.js +7 -1
  417. package/sqlite-core/query-builders/update.js.map +1 -1
  418. package/sqlite-core/session.cjs +62 -3
  419. package/sqlite-core/session.cjs.map +1 -1
  420. package/sqlite-core/session.d.cts +18 -4
  421. package/sqlite-core/session.d.ts +18 -4
  422. package/sqlite-core/session.js +63 -4
  423. package/sqlite-core/session.js.map +1 -1
  424. package/sqlite-core/utils.cjs +16 -0
  425. package/sqlite-core/utils.cjs.map +1 -1
  426. package/sqlite-core/utils.d.cts +6 -2
  427. package/sqlite-core/utils.d.ts +6 -2
  428. package/sqlite-core/utils.js +15 -0
  429. package/sqlite-core/utils.js.map +1 -1
  430. package/sqlite-proxy/driver.cjs +9 -2
  431. package/sqlite-proxy/driver.cjs.map +1 -1
  432. package/sqlite-proxy/driver.js +9 -2
  433. package/sqlite-proxy/driver.js.map +1 -1
  434. package/sqlite-proxy/session.cjs +22 -8
  435. package/sqlite-proxy/session.cjs.map +1 -1
  436. package/sqlite-proxy/session.d.cts +12 -2
  437. package/sqlite-proxy/session.d.ts +12 -2
  438. package/sqlite-proxy/session.js +22 -8
  439. package/sqlite-proxy/session.js.map +1 -1
  440. package/subquery.cjs +4 -3
  441. package/subquery.cjs.map +1 -1
  442. package/subquery.d.cts +2 -1
  443. package/subquery.d.ts +2 -1
  444. package/subquery.js +4 -3
  445. package/subquery.js.map +1 -1
  446. package/tidb-serverless/driver.cjs +5 -1
  447. package/tidb-serverless/driver.cjs.map +1 -1
  448. package/tidb-serverless/driver.d.cts +1 -0
  449. package/tidb-serverless/driver.d.ts +1 -0
  450. package/tidb-serverless/driver.js +5 -1
  451. package/tidb-serverless/driver.js.map +1 -1
  452. package/tidb-serverless/session.cjs +15 -5
  453. package/tidb-serverless/session.cjs.map +1 -1
  454. package/tidb-serverless/session.d.cts +12 -2
  455. package/tidb-serverless/session.d.ts +12 -2
  456. package/tidb-serverless/session.js +15 -5
  457. package/tidb-serverless/session.js.map +1 -1
  458. package/utils.cjs +22 -0
  459. package/utils.cjs.map +1 -1
  460. package/utils.d.cts +3 -0
  461. package/utils.d.ts +3 -0
  462. package/utils.js +11 -0
  463. package/utils.js.map +1 -1
  464. package/vercel-postgres/driver.cjs +9 -2
  465. package/vercel-postgres/driver.cjs.map +1 -1
  466. package/vercel-postgres/driver.d.cts +2 -0
  467. package/vercel-postgres/driver.d.ts +2 -0
  468. package/vercel-postgres/driver.js +9 -2
  469. package/vercel-postgres/driver.js.map +1 -1
  470. package/vercel-postgres/session.cjs +21 -7
  471. package/vercel-postgres/session.cjs.map +1 -1
  472. package/vercel-postgres/session.d.cts +12 -2
  473. package/vercel-postgres/session.d.ts +12 -2
  474. package/vercel-postgres/session.js +21 -7
  475. package/vercel-postgres/session.js.map +1 -1
  476. package/version.cjs +1 -1
  477. package/version.d.cts +1 -1
  478. package/version.d.ts +1 -1
  479. package/version.js +1 -1
  480. package/xata-http/driver.cjs +7 -2
  481. package/xata-http/driver.cjs.map +1 -1
  482. package/xata-http/driver.d.cts +2 -0
  483. package/xata-http/driver.d.ts +2 -0
  484. package/xata-http/driver.js +7 -2
  485. package/xata-http/driver.js.map +1 -1
  486. package/xata-http/session.cjs +21 -7
  487. package/xata-http/session.cjs.map +1 -1
  488. package/xata-http/session.d.cts +12 -2
  489. package/xata-http/session.d.ts +12 -2
  490. package/xata-http/session.js +21 -7
  491. package/xata-http/session.js.map +1 -1
@@ -1,3 +1,4 @@
1
+ import { NoopCache } from "../cache/core/index.js";
1
2
  import { entityKind } from "../entity.js";
2
3
  import { NoopLogger } from "../logger.js";
3
4
  import { PgTransaction } from "../pg-core/index.js";
@@ -6,8 +7,8 @@ import { fillPlaceholders } from "../sql/sql.js";
6
7
  import { tracer } from "../tracing.js";
7
8
  import { mapResultRow } from "../utils.js";
8
9
  class BunSQLPreparedQuery extends PgPreparedQuery {
9
- constructor(client, queryString, params, logger, fields, _isResponseInArrayMode, customResultMapper) {
10
- super({ sql: queryString, params });
10
+ constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, _isResponseInArrayMode, customResultMapper) {
11
+ super({ sql: queryString, params }, cache, queryMetadata, cacheConfig);
11
12
  this.client = client;
12
13
  this.queryString = queryString;
13
14
  this.params = params;
@@ -27,16 +28,20 @@ class BunSQLPreparedQuery extends PgPreparedQuery {
27
28
  this.logger.logQuery(this.queryString, params);
28
29
  const { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;
29
30
  if (!fields && !customResultMapper) {
30
- return tracer.startActiveSpan("drizzle.driver.execute", () => {
31
- return client.unsafe(query, params);
31
+ return tracer.startActiveSpan("drizzle.driver.execute", async () => {
32
+ return await this.queryWithCache(query, params, async () => {
33
+ return await client.unsafe(query, params);
34
+ });
32
35
  });
33
36
  }
34
- const rows = await tracer.startActiveSpan("drizzle.driver.execute", () => {
37
+ const rows = await tracer.startActiveSpan("drizzle.driver.execute", async () => {
35
38
  span?.setAttributes({
36
39
  "drizzle.query.text": query,
37
40
  "drizzle.query.params": JSON.stringify(params)
38
41
  });
39
- return client.unsafe(query, params).values();
42
+ return await this.queryWithCache(query, params, async () => {
43
+ return client.unsafe(query, params).values();
44
+ });
40
45
  });
41
46
  return tracer.startActiveSpan("drizzle.mapResponse", () => {
42
47
  return customResultMapper ? customResultMapper(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
@@ -51,12 +56,14 @@ class BunSQLPreparedQuery extends PgPreparedQuery {
51
56
  "drizzle.query.params": JSON.stringify(params)
52
57
  });
53
58
  this.logger.logQuery(this.queryString, params);
54
- return tracer.startActiveSpan("drizzle.driver.execute", () => {
59
+ return tracer.startActiveSpan("drizzle.driver.execute", async () => {
55
60
  span?.setAttributes({
56
61
  "drizzle.query.text": this.queryString,
57
62
  "drizzle.query.params": JSON.stringify(params)
58
63
  });
59
- return this.client.unsafe(this.queryString, params);
64
+ return await this.queryWithCache(this.queryString, params, async () => {
65
+ return await this.client.unsafe(this.queryString, params);
66
+ });
60
67
  });
61
68
  });
62
69
  }
@@ -72,15 +79,20 @@ class BunSQLSession extends PgSession {
72
79
  this.schema = schema;
73
80
  this.options = options;
74
81
  this.logger = options.logger ?? new NoopLogger();
82
+ this.cache = options.cache ?? new NoopCache();
75
83
  }
76
84
  static [entityKind] = "BunSQLSession";
77
85
  logger;
78
- prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
86
+ cache;
87
+ prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
79
88
  return new BunSQLPreparedQuery(
80
89
  this.client,
81
90
  query.sql,
82
91
  query.params,
83
92
  this.logger,
93
+ this.cache,
94
+ queryMetadata,
95
+ cacheConfig,
84
96
  fields,
85
97
  isResponseInArrayMode,
86
98
  customResultMapper
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bun-sql/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class BunSQLPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'BunSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: SQL,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\t\treturn client.unsafe(query, params as any[]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst rows: any[] = await tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn client.unsafe(query, params as any[]).values();\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn customResultMapper\n\t\t\t\t\t? customResultMapper(rows)\n\t\t\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn this.client.unsafe(this.queryString, params as any[]);\n\t\t\t});\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\n\tconstructor(\n\t\tpublic client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tquery(query: string, params: unknown[]): Promise<any> {\n\t\tthis.logger.logQuery(query, params);\n\t\treturn this.client.unsafe(query, params as any[]).values();\n\t}\n\n\tqueryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<any> {\n\t\treturn this.client.unsafe(query, params as any[]);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<TransactionSQL | SavepointSQL, TFullSchema, TSchema>,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: Assume<this['row'], Record<string, any>[]>;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/bun-sql/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class BunSQLPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'BunSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: SQL,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\t\treturn await client.unsafe(query, params as any[]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst rows: any[] = await tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn await this.queryWithCache(query, params, async () => {\n\t\t\t\t\treturn client.unsafe(query, params as any[]).values();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn customResultMapper\n\t\t\t\t\t? customResultMapper(rows)\n\t\t\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn await this.queryWithCache(this.queryString, params, async () => {\n\t\t\t\t\treturn await this.client.unsafe(this.queryString, params as any[]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tpublic client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tquery(query: string, params: unknown[]): Promise<any> {\n\t\tthis.logger.logQuery(query, params);\n\t\treturn this.client.unsafe(query, params as any[]).values();\n\t}\n\n\tqueryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<any> {\n\t\treturn this.client.unsafe(query, params as any[]);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<TransactionSQL | SavepointSQL, TFullSchema, TSchema>,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: Assume<this['row'], Record<string, any>[]>;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,47 @@
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 cache_exports = {};
20
+ __export(cache_exports, {
21
+ Cache: () => Cache,
22
+ NoopCache: () => NoopCache
23
+ });
24
+ module.exports = __toCommonJS(cache_exports);
25
+ var import_entity = require("../../entity.cjs");
26
+ class Cache {
27
+ static [import_entity.entityKind] = "Cache";
28
+ }
29
+ class NoopCache extends Cache {
30
+ strategy() {
31
+ return "all";
32
+ }
33
+ static [import_entity.entityKind] = "NoopCache";
34
+ async get(_key) {
35
+ return void 0;
36
+ }
37
+ async put(_hashedQuery, _response, _tables, _config) {
38
+ }
39
+ async onMutate(_params) {
40
+ }
41
+ }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ Cache,
45
+ NoopCache
46
+ });
47
+ //# sourceMappingURL=cache.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/core/cache.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Table } from '~/index.ts';\nimport type { CacheConfig } from './types.ts';\n\nexport abstract class Cache {\n\tstatic readonly [entityKind]: string = 'Cache';\n\n\tabstract strategy(): 'explicit' | 'all';\n\n\t/**\n\t * Invoked if we should check cache for cached response\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t): Promise<any[] | undefined>;\n\n\t/**\n\t * Invoked if new query should be inserted to cache\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract put(\n\t\thashedQuery: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tconfig?: CacheConfig,\n\t): Promise<void>;\n\n\t/**\n\t * Invoked if insert, update, delete was invoked\n\t * @param tables\n\t */\n\tabstract onMutate(\n\t\tparams: MutationOption,\n\t): Promise<void>;\n}\n\nexport class NoopCache extends Cache {\n\toverride strategy() {\n\t\treturn 'all' as const;\n\t}\n\n\tstatic override readonly [entityKind]: string = 'NoopCache';\n\n\toverride async get(_key: string): Promise<any[] | undefined> {\n\t\treturn undefined;\n\t}\n\toverride async put(\n\t\t_hashedQuery: string,\n\t\t_response: any,\n\t\t_tables: string[],\n\t\t_config?: any,\n\t): Promise<void> {\n\t\t// noop\n\t}\n\toverride async onMutate(_params: MutationOption): Promise<void> {\n\t\t// noop\n\t}\n}\n\nexport type MutationOption = { tags?: string | string[]; tables?: Table<any> | Table<any>[] | string | string[] };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAIpB,MAAe,MAAM;AAAA,EAC3B,QAAiB,wBAAU,IAAY;AAmCxC;AAEO,MAAM,kBAAkB,MAAM;AAAA,EAC3B,WAAW;AACnB,WAAO;AAAA,EACR;AAAA,EAEA,QAA0B,wBAAU,IAAY;AAAA,EAEhD,MAAe,IAAI,MAA0C;AAC5D,WAAO;AAAA,EACR;AAAA,EACA,MAAe,IACd,cACA,WACA,SACA,SACgB;AAAA,EAEjB;AAAA,EACA,MAAe,SAAS,SAAwC;AAAA,EAEhE;AACD;","names":[]}
@@ -0,0 +1,35 @@
1
+ import { entityKind } from "../../entity.cjs";
2
+ import type { Table } from "../../index.cjs";
3
+ import type { CacheConfig } from "./types.cjs";
4
+ export declare abstract class Cache {
5
+ static readonly [entityKind]: string;
6
+ abstract strategy(): 'explicit' | 'all';
7
+ /**
8
+ * Invoked if we should check cache for cached response
9
+ * @param sql
10
+ * @param tables
11
+ */
12
+ abstract get(key: string, tables: string[], isTag: boolean): Promise<any[] | undefined>;
13
+ /**
14
+ * Invoked if new query should be inserted to cache
15
+ * @param sql
16
+ * @param tables
17
+ */
18
+ abstract put(hashedQuery: string, response: any, tables: string[], isTag: boolean, config?: CacheConfig): Promise<void>;
19
+ /**
20
+ * Invoked if insert, update, delete was invoked
21
+ * @param tables
22
+ */
23
+ abstract onMutate(params: MutationOption): Promise<void>;
24
+ }
25
+ export declare class NoopCache extends Cache {
26
+ strategy(): "all";
27
+ static readonly [entityKind]: string;
28
+ get(_key: string): Promise<any[] | undefined>;
29
+ put(_hashedQuery: string, _response: any, _tables: string[], _config?: any): Promise<void>;
30
+ onMutate(_params: MutationOption): Promise<void>;
31
+ }
32
+ export type MutationOption = {
33
+ tags?: string | string[];
34
+ tables?: Table<any> | Table<any>[] | string | string[];
35
+ };
@@ -0,0 +1,35 @@
1
+ import { entityKind } from "../../entity.js";
2
+ import type { Table } from "../../index.js";
3
+ import type { CacheConfig } from "./types.js";
4
+ export declare abstract class Cache {
5
+ static readonly [entityKind]: string;
6
+ abstract strategy(): 'explicit' | 'all';
7
+ /**
8
+ * Invoked if we should check cache for cached response
9
+ * @param sql
10
+ * @param tables
11
+ */
12
+ abstract get(key: string, tables: string[], isTag: boolean): Promise<any[] | undefined>;
13
+ /**
14
+ * Invoked if new query should be inserted to cache
15
+ * @param sql
16
+ * @param tables
17
+ */
18
+ abstract put(hashedQuery: string, response: any, tables: string[], isTag: boolean, config?: CacheConfig): Promise<void>;
19
+ /**
20
+ * Invoked if insert, update, delete was invoked
21
+ * @param tables
22
+ */
23
+ abstract onMutate(params: MutationOption): Promise<void>;
24
+ }
25
+ export declare class NoopCache extends Cache {
26
+ strategy(): "all";
27
+ static readonly [entityKind]: string;
28
+ get(_key: string): Promise<any[] | undefined>;
29
+ put(_hashedQuery: string, _response: any, _tables: string[], _config?: any): Promise<void>;
30
+ onMutate(_params: MutationOption): Promise<void>;
31
+ }
32
+ export type MutationOption = {
33
+ tags?: string | string[];
34
+ tables?: Table<any> | Table<any>[] | string | string[];
35
+ };
@@ -0,0 +1,22 @@
1
+ import { entityKind } from "../../entity.js";
2
+ class Cache {
3
+ static [entityKind] = "Cache";
4
+ }
5
+ class NoopCache extends Cache {
6
+ strategy() {
7
+ return "all";
8
+ }
9
+ static [entityKind] = "NoopCache";
10
+ async get(_key) {
11
+ return void 0;
12
+ }
13
+ async put(_hashedQuery, _response, _tables, _config) {
14
+ }
15
+ async onMutate(_params) {
16
+ }
17
+ }
18
+ export {
19
+ Cache,
20
+ NoopCache
21
+ };
22
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/core/cache.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Table } from '~/index.ts';\nimport type { CacheConfig } from './types.ts';\n\nexport abstract class Cache {\n\tstatic readonly [entityKind]: string = 'Cache';\n\n\tabstract strategy(): 'explicit' | 'all';\n\n\t/**\n\t * Invoked if we should check cache for cached response\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t): Promise<any[] | undefined>;\n\n\t/**\n\t * Invoked if new query should be inserted to cache\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract put(\n\t\thashedQuery: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tconfig?: CacheConfig,\n\t): Promise<void>;\n\n\t/**\n\t * Invoked if insert, update, delete was invoked\n\t * @param tables\n\t */\n\tabstract onMutate(\n\t\tparams: MutationOption,\n\t): Promise<void>;\n}\n\nexport class NoopCache extends Cache {\n\toverride strategy() {\n\t\treturn 'all' as const;\n\t}\n\n\tstatic override readonly [entityKind]: string = 'NoopCache';\n\n\toverride async get(_key: string): Promise<any[] | undefined> {\n\t\treturn undefined;\n\t}\n\toverride async put(\n\t\t_hashedQuery: string,\n\t\t_response: any,\n\t\t_tables: string[],\n\t\t_config?: any,\n\t): Promise<void> {\n\t\t// noop\n\t}\n\toverride async onMutate(_params: MutationOption): Promise<void> {\n\t\t// noop\n\t}\n}\n\nexport type MutationOption = { tags?: string | string[]; tables?: Table<any> | Table<any>[] | string | string[] };\n"],"mappings":"AAAA,SAAS,kBAAkB;AAIpB,MAAe,MAAM;AAAA,EAC3B,QAAiB,UAAU,IAAY;AAmCxC;AAEO,MAAM,kBAAkB,MAAM;AAAA,EAC3B,WAAW;AACnB,WAAO;AAAA,EACR;AAAA,EAEA,QAA0B,UAAU,IAAY;AAAA,EAEhD,MAAe,IAAI,MAA0C;AAC5D,WAAO;AAAA,EACR;AAAA,EACA,MAAe,IACd,cACA,WACA,SACA,SACgB;AAAA,EAEjB;AAAA,EACA,MAAe,SAAS,SAAwC;AAAA,EAEhE;AACD;","names":[]}
@@ -0,0 +1,23 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var core_exports = {};
17
+ module.exports = __toCommonJS(core_exports);
18
+ __reExport(core_exports, require("./cache.cjs"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("./cache.cjs")
22
+ });
23
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/core/index.ts"],"sourcesContent":["export * from './cache.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,yBAAc,uBAAd;","names":[]}
@@ -0,0 +1 @@
1
+ export * from "./cache.cjs";
@@ -0,0 +1 @@
1
+ export * from "./cache.js";
@@ -0,0 +1,2 @@
1
+ export * from "./cache.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/core/index.ts"],"sourcesContent":["export * from './cache.ts';\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,17 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_exports = {};
16
+ module.exports = __toCommonJS(types_exports);
17
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/core/types.ts"],"sourcesContent":["export type CacheConfig = {\n\t/**\n\t * expire time, in seconds (a positive integer)\n\t */\n\tex?: number;\n\t/**\n\t * expire time, in milliseconds (a positive integer).\n\t */\n\tpx?: number;\n\t/**\n\t * Unix time at which the key will expire, in seconds (a positive integer).\n\t */\n\texat?: number;\n\t/**\n\t * Unix time at which the key will expire, in milliseconds (a positive integer)\n\t */\n\tpxat?: number;\n\t/**\n\t * Retain the time to live associated with the key.\n\t */\n\tkeepTtl?: boolean;\n\t/**\n\t * Set an expiration (TTL or time to live) on one or more fields of a given hash key.\n\t * Used for HEXPIRE command\n\t */\n\thexOptions?: 'NX' | 'nx' | 'XX' | 'xx' | 'GT' | 'gt' | 'LT' | 'lt';\n};\n\nexport type WithCacheConfig = { enable: boolean; config?: CacheConfig; tag?: string; autoInvalidate?: boolean };\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,33 @@
1
+ export type CacheConfig = {
2
+ /**
3
+ * expire time, in seconds (a positive integer)
4
+ */
5
+ ex?: number;
6
+ /**
7
+ * expire time, in milliseconds (a positive integer).
8
+ */
9
+ px?: number;
10
+ /**
11
+ * Unix time at which the key will expire, in seconds (a positive integer).
12
+ */
13
+ exat?: number;
14
+ /**
15
+ * Unix time at which the key will expire, in milliseconds (a positive integer)
16
+ */
17
+ pxat?: number;
18
+ /**
19
+ * Retain the time to live associated with the key.
20
+ */
21
+ keepTtl?: boolean;
22
+ /**
23
+ * Set an expiration (TTL or time to live) on one or more fields of a given hash key.
24
+ * Used for HEXPIRE command
25
+ */
26
+ hexOptions?: 'NX' | 'nx' | 'XX' | 'xx' | 'GT' | 'gt' | 'LT' | 'lt';
27
+ };
28
+ export type WithCacheConfig = {
29
+ enable: boolean;
30
+ config?: CacheConfig;
31
+ tag?: string;
32
+ autoInvalidate?: boolean;
33
+ };
@@ -0,0 +1,33 @@
1
+ export type CacheConfig = {
2
+ /**
3
+ * expire time, in seconds (a positive integer)
4
+ */
5
+ ex?: number;
6
+ /**
7
+ * expire time, in milliseconds (a positive integer).
8
+ */
9
+ px?: number;
10
+ /**
11
+ * Unix time at which the key will expire, in seconds (a positive integer).
12
+ */
13
+ exat?: number;
14
+ /**
15
+ * Unix time at which the key will expire, in milliseconds (a positive integer)
16
+ */
17
+ pxat?: number;
18
+ /**
19
+ * Retain the time to live associated with the key.
20
+ */
21
+ keepTtl?: boolean;
22
+ /**
23
+ * Set an expiration (TTL or time to live) on one or more fields of a given hash key.
24
+ * Used for HEXPIRE command
25
+ */
26
+ hexOptions?: 'NX' | 'nx' | 'XX' | 'xx' | 'GT' | 'gt' | 'LT' | 'lt';
27
+ };
28
+ export type WithCacheConfig = {
29
+ enable: boolean;
30
+ config?: CacheConfig;
31
+ tag?: string;
32
+ autoInvalidate?: boolean;
33
+ };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,148 @@
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 cache_exports = {};
20
+ __export(cache_exports, {
21
+ UpstashCache: () => UpstashCache,
22
+ upstashCache: () => upstashCache
23
+ });
24
+ module.exports = __toCommonJS(cache_exports);
25
+ var import_redis = require("@upstash/redis");
26
+ var import_core = require("../core/index.cjs");
27
+ var import_entity = require("../../entity.cjs");
28
+ var import__ = require("../../index.cjs");
29
+ const getByTagScript = `
30
+ local tagsMapKey = KEYS[1] -- tags map key
31
+ local tag = ARGV[1] -- tag
32
+
33
+ local compositeTableName = redis.call('HGET', tagsMapKey, tag)
34
+ if not compositeTableName then
35
+ return nil
36
+ end
37
+
38
+ local value = redis.call('HGET', compositeTableName, tag)
39
+ return value
40
+ `;
41
+ const onMutateScript = `
42
+ local tagsMapKey = KEYS[1] -- tags map key
43
+ local tables = {} -- initialize tables array
44
+ local tags = ARGV -- tags array
45
+
46
+ for i = 2, #KEYS do
47
+ tables[#tables + 1] = KEYS[i] -- add all keys except the first one to tables
48
+ end
49
+
50
+ if #tags > 0 then
51
+ for _, tag in ipairs(tags) do
52
+ if tag ~= nil and tag ~= '' then
53
+ local compositeTableName = redis.call('HGET', tagsMapKey, tag)
54
+ if compositeTableName then
55
+ redis.call('HDEL', compositeTableName, tag)
56
+ end
57
+ end
58
+ end
59
+ redis.call('HDEL', tagsMapKey, unpack(tags))
60
+ end
61
+
62
+ local keysToDelete = {}
63
+
64
+ if #tables > 0 then
65
+ local compositeTableNames = redis.call('SUNION', unpack(tables))
66
+ for _, compositeTableName in ipairs(compositeTableNames) do
67
+ keysToDelete[#keysToDelete + 1] = compositeTableName
68
+ end
69
+ for _, table in ipairs(tables) do
70
+ keysToDelete[#keysToDelete + 1] = table
71
+ end
72
+ redis.call('DEL', unpack(keysToDelete))
73
+ end
74
+ `;
75
+ class UpstashCache extends import_core.Cache {
76
+ constructor(redis, config, useGlobally) {
77
+ super();
78
+ this.redis = redis;
79
+ this.useGlobally = useGlobally;
80
+ this.internalConfig = this.toInternalConfig(config);
81
+ this.luaScripts = {
82
+ getByTagScript: this.redis.createScript(getByTagScript, { readonly: true }),
83
+ onMutateScript: this.redis.createScript(onMutateScript)
84
+ };
85
+ }
86
+ static [import_entity.entityKind] = "UpstashCache";
87
+ static compositeTableSetPrefix = "__ct__";
88
+ static tagsMapKey = "__tagsMap__";
89
+ globalTtl = 1;
90
+ luaScripts;
91
+ internalConfig;
92
+ strategy() {
93
+ return this.useGlobally ? "all" : "explicit";
94
+ }
95
+ toInternalConfig(config) {
96
+ return config ? {
97
+ seconds: config.ex,
98
+ hexOptions: config.hexOptions
99
+ } : void 0;
100
+ }
101
+ async get(key, tables, isTag = false) {
102
+ if (isTag) {
103
+ const result2 = await this.luaScripts.getByTagScript.exec([UpstashCache.tagsMapKey], [key]);
104
+ return result2 === null ? void 0 : result2;
105
+ }
106
+ const compositeKey = this.getCompositeKey(tables);
107
+ const result = (await this.redis.hget(compositeKey, key)) ?? void 0;
108
+ return result === null ? void 0 : result;
109
+ }
110
+ async put(key, response, tables, isTag = false, config) {
111
+ const pipeline = this.redis.pipeline();
112
+ const compositeKey = this.getCompositeKey(tables);
113
+ const ttlSeconds = config && config.ex ? config.ex : this.globalTtl;
114
+ const hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;
115
+ pipeline.hset(compositeKey, { [key]: response });
116
+ pipeline.hexpire(compositeKey, key, ttlSeconds, hexOptions);
117
+ if (isTag) {
118
+ pipeline.hset(UpstashCache.tagsMapKey, { [key]: compositeKey });
119
+ pipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions);
120
+ }
121
+ for (const table of tables) {
122
+ pipeline.sadd(this.addTablePrefix(table), compositeKey);
123
+ }
124
+ await pipeline.exec();
125
+ }
126
+ async onMutate(params) {
127
+ const tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];
128
+ const tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];
129
+ const tableNames = tables.map((table) => (0, import_entity.is)(table, import__.Table) ? table[import__.OriginalName] : table);
130
+ const compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));
131
+ await this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);
132
+ }
133
+ addTablePrefix = (table) => `${UpstashCache.compositeTableSetPrefix}${table}`;
134
+ getCompositeKey = (tables) => tables.sort().join(",");
135
+ }
136
+ function upstashCache({ url, token, config, global = false }) {
137
+ const redis = new import_redis.Redis({
138
+ url,
139
+ token
140
+ });
141
+ return new UpstashCache(redis, config, global);
142
+ }
143
+ // Annotate the CommonJS export names for ESM import in node:
144
+ 0 && (module.exports = {
145
+ UpstashCache,
146
+ upstashCache
147
+ });
148
+ //# sourceMappingURL=cache.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/upstash/cache.ts"],"sourcesContent":["import { Redis } from '@upstash/redis';\nimport type { MutationOption } from '~/cache/core/index.ts';\nimport { Cache } from '~/cache/core/index.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { OriginalName, Table } from '~/index.ts';\nimport type { CacheConfig } from '../core/types.ts';\n\nconst getByTagScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tag = ARGV[1] -- tag\n\nlocal compositeTableName = redis.call('HGET', tagsMapKey, tag)\nif not compositeTableName then\n return nil\nend\n\nlocal value = redis.call('HGET', compositeTableName, tag)\nreturn value\n`;\n\nconst onMutateScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tables = {} -- initialize tables array\nlocal tags = ARGV -- tags array\n\nfor i = 2, #KEYS do\n tables[#tables + 1] = KEYS[i] -- add all keys except the first one to tables\nend\n\nif #tags > 0 then\n for _, tag in ipairs(tags) do\n if tag ~= nil and tag ~= '' then\n local compositeTableName = redis.call('HGET', tagsMapKey, tag)\n if compositeTableName then\n redis.call('HDEL', compositeTableName, tag)\n end\n end\n end\n redis.call('HDEL', tagsMapKey, unpack(tags))\nend\n\nlocal keysToDelete = {}\n\nif #tables > 0 then\n local compositeTableNames = redis.call('SUNION', unpack(tables))\n for _, compositeTableName in ipairs(compositeTableNames) do\n keysToDelete[#keysToDelete + 1] = compositeTableName\n end\n for _, table in ipairs(tables) do\n keysToDelete[#keysToDelete + 1] = table\n end\n redis.call('DEL', unpack(keysToDelete))\nend\n`;\n\ntype Script = ReturnType<Redis['createScript']>;\n\ntype ExpireOptions = 'NX' | 'nx' | 'XX' | 'xx' | 'GT' | 'gt' | 'LT' | 'lt';\n\nexport class UpstashCache extends Cache {\n\tstatic override readonly [entityKind]: string = 'UpstashCache';\n\tprivate static compositeTableSetPrefix = '__ct__';\n\tprivate static tagsMapKey = '__tagsMap__';\n\n\tprivate globalTtl: number = 1;\n\n\tprivate luaScripts: {\n\t\tgetByTagScript: Script;\n\t\tonMutateScript: Script;\n\t};\n\n\tprivate internalConfig?: { seconds: number; hexOptions: ExpireOptions };\n\n\tconstructor(public redis: Redis, config?: CacheConfig, protected useGlobally?: boolean) {\n\t\tsuper();\n\t\tthis.internalConfig = this.toInternalConfig(config);\n\t\tthis.luaScripts = {\n\t\t\tgetByTagScript: this.redis.createScript(getByTagScript, { readonly: true }),\n\t\t\tonMutateScript: this.redis.createScript(onMutateScript),\n\t\t};\n\t}\n\n\tpublic strategy() {\n\t\treturn this.useGlobally ? 'all' : 'explicit';\n\t}\n\n\tprivate toInternalConfig(config?: CacheConfig) {\n\t\treturn config\n\t\t\t? {\n\t\t\t\tseconds: config.ex,\n\t\t\t\thexOptions: config.hexOptions,\n\t\t\t} as { seconds: number; hexOptions: ExpireOptions }\n\t\t\t: undefined;\n\t}\n\n\toverride async get(key: string, tables: string[], isTag: boolean = false): Promise<any[] | undefined> {\n\t\tif (isTag) {\n\t\t\tconst result = await this.luaScripts.getByTagScript.exec([UpstashCache.tagsMapKey], [key]);\n\t\t\treturn result === null ? undefined : result as any[];\n\t\t}\n\n\t\t// Normal cache lookup for the composite key\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\t\tconst result = await this.redis.hget(compositeKey, key) ?? undefined; // Retrieve result for normal query\n\t\treturn result === null ? undefined : result as any[];\n\t}\n\n\toverride async put(\n\t\tkey: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean = false,\n\t\tconfig?: CacheConfig,\n\t): Promise<void> {\n\t\tconst pipeline = this.redis.pipeline();\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\t\tconst ttlSeconds = config && config.ex ? config.ex : this.globalTtl;\n\t\tconst hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;\n\n\t\tpipeline.hset(compositeKey, { [key]: response }); // Store the result with the tag under the composite key\n\t\tpipeline.hexpire(compositeKey, key, ttlSeconds, hexOptions); // Set expiration for the composite key\n\n\t\tif (isTag) {\n\t\t\tpipeline.hset(UpstashCache.tagsMapKey, { [key]: compositeKey }); // Store the tag and its composite key in the map\n\t\t\tpipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions); // Set expiration for the tag\n\t\t}\n\n\t\tfor (const table of tables) {\n\t\t\tpipeline.sadd(this.addTablePrefix(table), compositeKey);\n\t\t}\n\n\t\tawait pipeline.exec();\n\t}\n\n\toverride async onMutate(params: MutationOption) {\n\t\tconst tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];\n\t\tconst tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];\n\t\tconst tableNames: string[] = tables.map((table) => is(table, Table) ? table[OriginalName] : table as string);\n\n\t\tconst compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));\n\t\tawait this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);\n\t}\n\n\tprivate addTablePrefix = (table: string) => `${UpstashCache.compositeTableSetPrefix}${table}`;\n\tprivate getCompositeKey = (tables: string[]) => tables.sort().join(',');\n}\n\nexport function upstashCache(\n\t{ url, token, config, global = false }: { url: string; token: string; config?: CacheConfig; global?: boolean },\n): UpstashCache {\n\tconst redis = new Redis({\n\t\turl,\n\t\ttoken,\n\t});\n\n\treturn new UpstashCache(redis, config, global);\n}\n"],"mappings":"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","names":["result"]}
@@ -0,0 +1,29 @@
1
+ import { Redis } from '@upstash/redis';
2
+ import type { MutationOption } from "../core/index.cjs";
3
+ import { Cache } from "../core/index.cjs";
4
+ import { entityKind } from "../../entity.cjs";
5
+ import type { CacheConfig } from "../core/types.cjs";
6
+ export declare class UpstashCache extends Cache {
7
+ redis: Redis;
8
+ protected useGlobally?: boolean | undefined;
9
+ static readonly [entityKind]: string;
10
+ private static compositeTableSetPrefix;
11
+ private static tagsMapKey;
12
+ private globalTtl;
13
+ private luaScripts;
14
+ private internalConfig?;
15
+ constructor(redis: Redis, config?: CacheConfig, useGlobally?: boolean | undefined);
16
+ strategy(): "all" | "explicit";
17
+ private toInternalConfig;
18
+ get(key: string, tables: string[], isTag?: boolean): Promise<any[] | undefined>;
19
+ put(key: string, response: any, tables: string[], isTag?: boolean, config?: CacheConfig): Promise<void>;
20
+ onMutate(params: MutationOption): Promise<void>;
21
+ private addTablePrefix;
22
+ private getCompositeKey;
23
+ }
24
+ export declare function upstashCache({ url, token, config, global }: {
25
+ url: string;
26
+ token: string;
27
+ config?: CacheConfig;
28
+ global?: boolean;
29
+ }): UpstashCache;