drizzle-orm 0.43.1-63b40d5 → 0.43.1-8eb999a

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 (485) 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 +191 -0
  50. package/cache/upstash/cache.cjs.map +1 -0
  51. package/cache/upstash/cache.d.cts +59 -0
  52. package/cache/upstash/cache.d.ts +59 -0
  53. package/cache/upstash/cache.js +166 -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 +3 -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 +3 -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 +53 -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 +54 -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 +3 -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 +3 -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 +54 -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 +55 -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 +201 -136
  238. package/pg-core/db.cjs +3 -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 +3 -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/session.cjs +53 -1
  269. package/pg-core/session.cjs.map +1 -1
  270. package/pg-core/session.d.cts +14 -3
  271. package/pg-core/session.d.ts +14 -3
  272. package/pg-core/session.js +54 -2
  273. package/pg-core/session.js.map +1 -1
  274. package/pg-core/utils.cjs +16 -0
  275. package/pg-core/utils.cjs.map +1 -1
  276. package/pg-core/utils.d.cts +8 -4
  277. package/pg-core/utils.d.ts +8 -4
  278. package/pg-core/utils.js +16 -1
  279. package/pg-core/utils.js.map +1 -1
  280. package/pg-proxy/driver.cjs +7 -2
  281. package/pg-proxy/driver.cjs.map +1 -1
  282. package/pg-proxy/driver.js +7 -2
  283. package/pg-proxy/driver.js.map +1 -1
  284. package/pg-proxy/session.cjs +15 -5
  285. package/pg-proxy/session.cjs.map +1 -1
  286. package/pg-proxy/session.d.cts +12 -2
  287. package/pg-proxy/session.d.ts +12 -2
  288. package/pg-proxy/session.js +15 -5
  289. package/pg-proxy/session.js.map +1 -1
  290. package/pglite/driver.cjs +9 -2
  291. package/pglite/driver.cjs.map +1 -1
  292. package/pglite/driver.d.cts +2 -0
  293. package/pglite/driver.d.ts +2 -0
  294. package/pglite/driver.js +9 -2
  295. package/pglite/driver.js.map +1 -1
  296. package/pglite/session.cjs +19 -7
  297. package/pglite/session.cjs.map +1 -1
  298. package/pglite/session.d.cts +12 -2
  299. package/pglite/session.d.ts +12 -2
  300. package/pglite/session.js +19 -7
  301. package/pglite/session.js.map +1 -1
  302. package/planetscale-serverless/driver.cjs +5 -1
  303. package/planetscale-serverless/driver.cjs.map +1 -1
  304. package/planetscale-serverless/driver.d.cts +1 -0
  305. package/planetscale-serverless/driver.d.ts +1 -0
  306. package/planetscale-serverless/driver.js +5 -1
  307. package/planetscale-serverless/driver.js.map +1 -1
  308. package/planetscale-serverless/session.cjs +15 -5
  309. package/planetscale-serverless/session.cjs.map +1 -1
  310. package/planetscale-serverless/session.d.cts +12 -2
  311. package/planetscale-serverless/session.d.ts +12 -2
  312. package/planetscale-serverless/session.js +15 -5
  313. package/planetscale-serverless/session.js.map +1 -1
  314. package/postgres-js/driver.cjs +5 -1
  315. package/postgres-js/driver.cjs.map +1 -1
  316. package/postgres-js/driver.js +5 -1
  317. package/postgres-js/driver.js.map +1 -1
  318. package/postgres-js/session.cjs +18 -6
  319. package/postgres-js/session.cjs.map +1 -1
  320. package/postgres-js/session.d.cts +12 -2
  321. package/postgres-js/session.d.ts +12 -2
  322. package/postgres-js/session.js +18 -6
  323. package/postgres-js/session.js.map +1 -1
  324. package/prisma/mysql/session.cjs +1 -1
  325. package/prisma/mysql/session.cjs.map +1 -1
  326. package/prisma/mysql/session.js +1 -1
  327. package/prisma/mysql/session.js.map +1 -1
  328. package/prisma/pg/session.cjs +1 -1
  329. package/prisma/pg/session.cjs.map +1 -1
  330. package/prisma/pg/session.js +1 -1
  331. package/prisma/pg/session.js.map +1 -1
  332. package/query-builders/query-builder.cjs.map +1 -1
  333. package/query-builders/query-builder.d.cts +2 -1
  334. package/query-builders/query-builder.d.ts +2 -1
  335. package/query-builders/query-builder.js.map +1 -1
  336. package/singlestore/driver.cjs +12 -2
  337. package/singlestore/driver.cjs.map +1 -1
  338. package/singlestore/driver.d.cts +2 -0
  339. package/singlestore/driver.d.ts +2 -0
  340. package/singlestore/driver.js +12 -2
  341. package/singlestore/driver.js.map +1 -1
  342. package/singlestore/session.cjs +15 -5
  343. package/singlestore/session.cjs.map +1 -1
  344. package/singlestore/session.d.cts +12 -2
  345. package/singlestore/session.d.ts +12 -2
  346. package/singlestore/session.js +15 -5
  347. package/singlestore/session.js.map +1 -1
  348. package/singlestore-core/db.cjs +3 -0
  349. package/singlestore-core/db.cjs.map +1 -1
  350. package/singlestore-core/db.d.cts +4 -0
  351. package/singlestore-core/db.d.ts +4 -0
  352. package/singlestore-core/db.js +3 -0
  353. package/singlestore-core/db.js.map +1 -1
  354. package/singlestore-core/query-builders/delete.cjs +9 -1
  355. package/singlestore-core/query-builders/delete.cjs.map +1 -1
  356. package/singlestore-core/query-builders/delete.js +9 -1
  357. package/singlestore-core/query-builders/delete.js.map +1 -1
  358. package/singlestore-core/query-builders/insert.cjs +6 -1
  359. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  360. package/singlestore-core/query-builders/insert.js +6 -1
  361. package/singlestore-core/query-builders/insert.js.map +1 -1
  362. package/singlestore-core/query-builders/select.cjs +28 -3
  363. package/singlestore-core/query-builders/select.cjs.map +1 -1
  364. package/singlestore-core/query-builders/select.d.cts +9 -0
  365. package/singlestore-core/query-builders/select.d.ts +9 -0
  366. package/singlestore-core/query-builders/select.js +28 -3
  367. package/singlestore-core/query-builders/select.js.map +1 -1
  368. package/singlestore-core/query-builders/update.cjs +9 -1
  369. package/singlestore-core/query-builders/update.cjs.map +1 -1
  370. package/singlestore-core/query-builders/update.js +9 -1
  371. package/singlestore-core/query-builders/update.js.map +1 -1
  372. package/singlestore-core/session.cjs +54 -0
  373. package/singlestore-core/session.cjs.map +1 -1
  374. package/singlestore-core/session.d.cts +14 -2
  375. package/singlestore-core/session.d.ts +14 -2
  376. package/singlestore-core/session.js +55 -1
  377. package/singlestore-core/session.js.map +1 -1
  378. package/singlestore-core/utils.cjs +16 -0
  379. package/singlestore-core/utils.cjs.map +1 -1
  380. package/singlestore-core/utils.d.cts +3 -0
  381. package/singlestore-core/utils.d.ts +3 -0
  382. package/singlestore-core/utils.js +15 -0
  383. package/singlestore-core/utils.js.map +1 -1
  384. package/sql/sql.cjs +10 -0
  385. package/sql/sql.cjs.map +1 -1
  386. package/sql/sql.js +10 -0
  387. package/sql/sql.js.map +1 -1
  388. package/sqlite-core/db.cjs +3 -0
  389. package/sqlite-core/db.cjs.map +1 -1
  390. package/sqlite-core/db.d.cts +4 -0
  391. package/sqlite-core/db.d.ts +4 -0
  392. package/sqlite-core/db.js +3 -0
  393. package/sqlite-core/db.js.map +1 -1
  394. package/sqlite-core/query-builders/delete.cjs +7 -1
  395. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  396. package/sqlite-core/query-builders/delete.js +7 -1
  397. package/sqlite-core/query-builders/delete.js.map +1 -1
  398. package/sqlite-core/query-builders/insert.cjs +7 -1
  399. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  400. package/sqlite-core/query-builders/insert.js +7 -1
  401. package/sqlite-core/query-builders/insert.js.map +1 -1
  402. package/sqlite-core/query-builders/select.cjs +31 -3
  403. package/sqlite-core/query-builders/select.cjs.map +1 -1
  404. package/sqlite-core/query-builders/select.d.cts +9 -0
  405. package/sqlite-core/query-builders/select.d.ts +9 -0
  406. package/sqlite-core/query-builders/select.js +31 -3
  407. package/sqlite-core/query-builders/select.js.map +1 -1
  408. package/sqlite-core/query-builders/update.cjs +7 -1
  409. package/sqlite-core/query-builders/update.cjs.map +1 -1
  410. package/sqlite-core/query-builders/update.js +7 -1
  411. package/sqlite-core/query-builders/update.js.map +1 -1
  412. package/sqlite-core/session.cjs +63 -3
  413. package/sqlite-core/session.cjs.map +1 -1
  414. package/sqlite-core/session.d.cts +18 -4
  415. package/sqlite-core/session.d.ts +18 -4
  416. package/sqlite-core/session.js +64 -4
  417. package/sqlite-core/session.js.map +1 -1
  418. package/sqlite-core/utils.cjs +16 -0
  419. package/sqlite-core/utils.cjs.map +1 -1
  420. package/sqlite-core/utils.d.cts +6 -2
  421. package/sqlite-core/utils.d.ts +6 -2
  422. package/sqlite-core/utils.js +15 -0
  423. package/sqlite-core/utils.js.map +1 -1
  424. package/sqlite-proxy/driver.cjs +9 -2
  425. package/sqlite-proxy/driver.cjs.map +1 -1
  426. package/sqlite-proxy/driver.js +9 -2
  427. package/sqlite-proxy/driver.js.map +1 -1
  428. package/sqlite-proxy/session.cjs +22 -8
  429. package/sqlite-proxy/session.cjs.map +1 -1
  430. package/sqlite-proxy/session.d.cts +12 -2
  431. package/sqlite-proxy/session.d.ts +12 -2
  432. package/sqlite-proxy/session.js +22 -8
  433. package/sqlite-proxy/session.js.map +1 -1
  434. package/subquery.cjs +4 -3
  435. package/subquery.cjs.map +1 -1
  436. package/subquery.d.cts +2 -1
  437. package/subquery.d.ts +2 -1
  438. package/subquery.js +4 -3
  439. package/subquery.js.map +1 -1
  440. package/tidb-serverless/driver.cjs +5 -1
  441. package/tidb-serverless/driver.cjs.map +1 -1
  442. package/tidb-serverless/driver.d.cts +1 -0
  443. package/tidb-serverless/driver.d.ts +1 -0
  444. package/tidb-serverless/driver.js +5 -1
  445. package/tidb-serverless/driver.js.map +1 -1
  446. package/tidb-serverless/session.cjs +15 -5
  447. package/tidb-serverless/session.cjs.map +1 -1
  448. package/tidb-serverless/session.d.cts +12 -2
  449. package/tidb-serverless/session.d.ts +12 -2
  450. package/tidb-serverless/session.js +15 -5
  451. package/tidb-serverless/session.js.map +1 -1
  452. package/utils.cjs +22 -0
  453. package/utils.cjs.map +1 -1
  454. package/utils.d.cts +3 -0
  455. package/utils.d.ts +3 -0
  456. package/utils.js +11 -0
  457. package/utils.js.map +1 -1
  458. package/vercel-postgres/driver.cjs +9 -2
  459. package/vercel-postgres/driver.cjs.map +1 -1
  460. package/vercel-postgres/driver.d.cts +2 -0
  461. package/vercel-postgres/driver.d.ts +2 -0
  462. package/vercel-postgres/driver.js +9 -2
  463. package/vercel-postgres/driver.js.map +1 -1
  464. package/vercel-postgres/session.cjs +21 -7
  465. package/vercel-postgres/session.cjs.map +1 -1
  466. package/vercel-postgres/session.d.cts +12 -2
  467. package/vercel-postgres/session.d.ts +12 -2
  468. package/vercel-postgres/session.js +21 -7
  469. package/vercel-postgres/session.js.map +1 -1
  470. package/version.cjs +1 -1
  471. package/version.d.cts +1 -1
  472. package/version.d.ts +1 -1
  473. package/version.js +1 -1
  474. package/xata-http/driver.cjs +7 -2
  475. package/xata-http/driver.cjs.map +1 -1
  476. package/xata-http/driver.d.cts +2 -0
  477. package/xata-http/driver.d.ts +2 -0
  478. package/xata-http/driver.js +7 -2
  479. package/xata-http/driver.js.map +1 -1
  480. package/xata-http/session.cjs +21 -7
  481. package/xata-http/session.cjs.map +1 -1
  482. package/xata-http/session.d.cts +12 -2
  483. package/xata-http/session.d.ts +12 -2
  484. package/xata-http/session.js +21 -7
  485. 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\tisAutoInvalidate?: 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;AAoCxC;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, isAutoInvalidate?: 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, isAutoInvalidate?: 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\tisAutoInvalidate?: 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;AAoCxC;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,191 @@
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
+ /**
88
+ * Prefix for sets which denote the composite table names for each unique table
89
+ *
90
+ * Example: In the composite table set of "table1", you may find
91
+ * `${compositeTablePrefix}table1,table2` and `${compositeTablePrefix}table1,table3`
92
+ */
93
+ static compositeTableSetPrefix = "__CTS__";
94
+ /**
95
+ * Prefix for hashes which map hash or tags to cache values
96
+ */
97
+ static compositeTablePrefix = "__CT__";
98
+ /**
99
+ * Key which holds the mapping of tags to composite table names
100
+ *
101
+ * Using this tagsMapKey, you can find the composite table name for a given tag
102
+ * and get the cache value for that tag:
103
+ *
104
+ * ```ts
105
+ * const compositeTable = redis.hget(tagsMapKey, 'tag1')
106
+ * console.log(compositeTable) // `${compositeTablePrefix}table1,table2`
107
+ *
108
+ * const cachevalue = redis.hget(compositeTable, 'tag1')
109
+ */
110
+ static tagsMapKey = "__tagsMap__";
111
+ /**
112
+ * Queries whose auto invalidation is false aren't stored in their respective
113
+ * composite table hashes because those hashes are deleted when a mutation
114
+ * occurs on related tables.
115
+ *
116
+ * Instead, they are stored in a separate hash with the prefix
117
+ * `__nonAutoInvalidate__` to prevent them from being deleted when a mutation
118
+ */
119
+ static nonAutoInvalidateTablePrefix = "__nonAutoInvalidate__";
120
+ luaScripts;
121
+ internalConfig;
122
+ strategy() {
123
+ return this.useGlobally ? "all" : "explicit";
124
+ }
125
+ toInternalConfig(config) {
126
+ return config ? {
127
+ seconds: config.ex,
128
+ hexOptions: config.hexOptions
129
+ } : {
130
+ seconds: 1
131
+ };
132
+ }
133
+ async get(key, tables, isTag = false, isAutoInvalidate) {
134
+ if (!isAutoInvalidate) {
135
+ const result2 = await this.redis.hget(UpstashCache.nonAutoInvalidateTablePrefix, key);
136
+ return result2 === null ? void 0 : result2;
137
+ }
138
+ if (isTag) {
139
+ const result2 = await this.luaScripts.getByTagScript.exec([UpstashCache.tagsMapKey], [key]);
140
+ return result2 === null ? void 0 : result2;
141
+ }
142
+ const compositeKey = this.getCompositeKey(tables);
143
+ const result = (await this.redis.hget(compositeKey, key)) ?? void 0;
144
+ return result === null ? void 0 : result;
145
+ }
146
+ async put(key, response, tables, isTag = false, config) {
147
+ const isAutoInvalidate = tables.length !== 0;
148
+ const pipeline = this.redis.pipeline();
149
+ const ttlSeconds = config && config.ex ? config.ex : this.internalConfig.seconds;
150
+ const hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;
151
+ if (!isAutoInvalidate) {
152
+ pipeline.hset(UpstashCache.nonAutoInvalidateTablePrefix, { [key]: response });
153
+ pipeline.hexpire(UpstashCache.nonAutoInvalidateTablePrefix, key, ttlSeconds, hexOptions);
154
+ await pipeline.exec();
155
+ return;
156
+ }
157
+ const compositeKey = this.getCompositeKey(tables);
158
+ pipeline.hset(compositeKey, { [key]: response });
159
+ pipeline.hexpire(compositeKey, key, ttlSeconds, hexOptions);
160
+ if (isTag) {
161
+ pipeline.hset(UpstashCache.tagsMapKey, { [key]: compositeKey });
162
+ pipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions);
163
+ }
164
+ for (const table of tables) {
165
+ pipeline.sadd(this.addTablePrefix(table), compositeKey);
166
+ }
167
+ await pipeline.exec();
168
+ }
169
+ async onMutate(params) {
170
+ const tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];
171
+ const tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];
172
+ const tableNames = tables.map((table) => (0, import_entity.is)(table, import__.Table) ? table[import__.OriginalName] : table);
173
+ const compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));
174
+ await this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);
175
+ }
176
+ addTablePrefix = (table) => `${UpstashCache.compositeTableSetPrefix}${table}`;
177
+ getCompositeKey = (tables) => `${UpstashCache.compositeTablePrefix}${tables.sort().join(",")}`;
178
+ }
179
+ function upstashCache({ url, token, config, global = false }) {
180
+ const redis = new import_redis.Redis({
181
+ url,
182
+ token
183
+ });
184
+ return new UpstashCache(redis, config, global);
185
+ }
186
+ // Annotate the CommonJS export names for ESM import in node:
187
+ 0 && (module.exports = {
188
+ UpstashCache,
189
+ upstashCache
190
+ });
191
+ //# 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\t/**\n\t * Prefix for sets which denote the composite table names for each unique table\n\t *\n\t * Example: In the composite table set of \"table1\", you may find\n\t * `${compositeTablePrefix}table1,table2` and `${compositeTablePrefix}table1,table3`\n\t */\n\tprivate static compositeTableSetPrefix = '__CTS__';\n\t/**\n\t * Prefix for hashes which map hash or tags to cache values\n\t */\n\tprivate static compositeTablePrefix = '__CT__';\n\t/**\n\t * Key which holds the mapping of tags to composite table names\n\t *\n\t * Using this tagsMapKey, you can find the composite table name for a given tag\n\t * and get the cache value for that tag:\n\t *\n\t * ```ts\n\t * const compositeTable = redis.hget(tagsMapKey, 'tag1')\n\t * console.log(compositeTable) // `${compositeTablePrefix}table1,table2`\n\t *\n\t * const cachevalue = redis.hget(compositeTable, 'tag1')\n\t */\n\tprivate static tagsMapKey = '__tagsMap__';\n\t/**\n\t * Queries whose auto invalidation is false aren't stored in their respective\n\t * composite table hashes because those hashes are deleted when a mutation\n\t * occurs on related tables.\n\t *\n\t * Instead, they are stored in a separate hash with the prefix\n\t * `__nonAutoInvalidate__` to prevent them from being deleted when a mutation\n\t */\n\tprivate static nonAutoInvalidateTablePrefix = '__nonAutoInvalidate__';\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): { seconds: number; hexOptions?: ExpireOptions } {\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}\n\t\t\t: {\n\t\t\t\tseconds: 1,\n\t\t\t};\n\t}\n\n\toverride async get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean = false,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined> {\n\t\tif (!isAutoInvalidate) {\n\t\t\tconst result = await this.redis.hget(UpstashCache.nonAutoInvalidateTablePrefix, key);\n\t\t\treturn result === null ? undefined : result as any[];\n\t\t}\n\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 isAutoInvalidate = tables.length !== 0;\n\n\t\tconst pipeline = this.redis.pipeline();\n\t\tconst ttlSeconds = config && config.ex ? config.ex : this.internalConfig.seconds;\n\t\tconst hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;\n\n\t\tif (!isAutoInvalidate) {\n\t\t\tpipeline.hset(UpstashCache.nonAutoInvalidateTablePrefix, { [key]: response });\n\t\t\tpipeline.hexpire(UpstashCache.nonAutoInvalidateTablePrefix, key, ttlSeconds, hexOptions);\n\t\t\tawait pipeline.exec();\n\t\t\treturn;\n\t\t}\n\n\t\tconst compositeKey = this.getCompositeKey(tables);\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[]) => `${UpstashCache.compositeTablePrefix}${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"]}