better-supabase 0.7.1 → 0.9.0

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 (1377) hide show
  1. package/README.md +146 -81
  2. package/bin/better-supabase.js +14 -2
  3. package/dist/access-sql-DUSSMaC3.js +201 -0
  4. package/dist/actor-BAhb-d1S.d.ts +104 -0
  5. package/dist/actor-KHDOKGb1.js +151 -0
  6. package/dist/adapter-CEjmtazZ.js +1984 -0
  7. package/dist/agents-BCNhIxVZ.d.ts +111 -0
  8. package/dist/ai-cache-Dps7aRu1.d.ts +70 -0
  9. package/dist/ai-cache-zeUL94pB.js +84 -0
  10. package/dist/ai-chat-3GBSlFR4.d.ts +608 -0
  11. package/dist/ai-files-D2_9YLjF.js +331 -0
  12. package/dist/ai-message-DfaP8sis.js +14 -0
  13. package/dist/ai-sdk/agents/index.d.ts +154 -10
  14. package/dist/ai-sdk/agents/index.js +172 -17
  15. package/dist/ai-sdk/batches/index.d.ts +4 -4
  16. package/dist/ai-sdk/batches/index.js +5 -5
  17. package/dist/ai-sdk/cache/index.d.ts +2 -2
  18. package/dist/ai-sdk/cache/index.js +2 -2
  19. package/dist/ai-sdk/chat/index.d.ts +1 -1
  20. package/dist/ai-sdk/chat/index.js +10 -21
  21. package/dist/ai-sdk/embeddings/index.d.ts +3 -3
  22. package/dist/ai-sdk/embeddings/index.js +1 -2
  23. package/dist/ai-sdk/files/index.d.ts +3 -3
  24. package/dist/ai-sdk/files/index.js +4 -4
  25. package/dist/ai-sdk/index.d.ts +38 -9
  26. package/dist/ai-sdk/index.js +5 -3
  27. package/dist/ai-sdk/mcp/index.d.ts +43 -6
  28. package/dist/ai-sdk/mcp/index.js +37 -8
  29. package/dist/ai-sdk/memory/index.d.ts +5 -2
  30. package/dist/ai-sdk/memory/index.js +2 -2
  31. package/dist/ai-sdk/react/index.js +1 -2
  32. package/dist/ai-sdk/workflow/index.d.ts +7 -6
  33. package/dist/ai-sdk/workflow/index.js +15 -26
  34. package/dist/ai-tasks-Ih5oHfyj.d.ts +157 -0
  35. package/dist/announcements-BHCzraR6.js +128 -0
  36. package/dist/api-CFjuYKFY.js +680 -0
  37. package/dist/api-TG3jE5aO.d.ts +411 -0
  38. package/dist/api-keys-BEQatEUW.js +318 -0
  39. package/dist/api-keys-BYoGCM9p.d.ts +205 -0
  40. package/dist/app-tables-BGl5_U2x.js +584 -0
  41. package/dist/approvals-a2KmioBh.d.ts +124 -0
  42. package/dist/arazzo/index.d.ts +255 -0
  43. package/dist/arazzo/index.js +622 -0
  44. package/dist/assistant-Bf2cA6RO.d.ts +148 -0
  45. package/dist/astro/index.d.ts +9 -8
  46. package/dist/astro/index.js +12 -9
  47. package/dist/asyncapi/index.d.ts +103 -0
  48. package/dist/asyncapi/index.js +569 -0
  49. package/dist/attachments-DAj2Yp95.js +264 -0
  50. package/dist/attributes-D4mA7WhI.js +38 -0
  51. package/dist/audit-log-BMMuGPdP.js +786 -0
  52. package/dist/auth-CdBKt0CS.js +20 -0
  53. package/dist/auth-reply-DUCwb8YO.js +31 -0
  54. package/dist/auth-reply-Dj124sbX.d.ts +11 -0
  55. package/dist/authorization-DpRfs6Wx.d.ts +1412 -0
  56. package/dist/authorization-hooks-DkmrnDX7.d.ts +214 -0
  57. package/dist/authorizer-DH7DjkL3.js +126 -0
  58. package/dist/authorizer-eiOjo-3l.d.ts +73 -0
  59. package/dist/base64-BmeCBgGo.js +42 -0
  60. package/dist/batch-limit-DKVQDz4o.js +5 -0
  61. package/dist/before-route-B98js9m_.js +30 -0
  62. package/dist/better-result/index.d.ts +118 -0
  63. package/dist/better-result/index.js +64 -0
  64. package/dist/bind-a7sUgvf4.d.ts +70 -0
  65. package/dist/block-env-CBd_SoL5.js +29 -0
  66. package/dist/block-env-Dxl7rsI0.d.ts +10 -0
  67. package/dist/block-events-DD9Q_NUz.js +96 -0
  68. package/dist/block-fields-5UA84ZUg.d.ts +55 -0
  69. package/dist/block-fields-ffD6Gxe4.js +139 -0
  70. package/dist/block-helpers-C86hPEjI.d.ts +37 -0
  71. package/dist/block-helpers-CfG_MvDR.js +264 -0
  72. package/dist/block-hooks-BLPWD3Jt.d.ts +107 -0
  73. package/dist/block-hooks-BsXncUlZ.js +114 -0
  74. package/dist/block-transport-DaGGXjIw.d.ts +70 -0
  75. package/dist/block-transport-G4t1umrR.js +85 -0
  76. package/dist/blocks/access-requests/index.d.ts +98 -0
  77. package/dist/blocks/access-requests/index.js +99 -0
  78. package/dist/blocks/agents/index.d.ts +21 -3
  79. package/dist/blocks/agents/index.js +65 -18
  80. package/dist/blocks/ai-cache/index.d.ts +8 -3
  81. package/dist/blocks/ai-cache/index.js +15 -3
  82. package/dist/blocks/ai-chat/index.d.ts +28 -4
  83. package/dist/blocks/ai-chat/index.js +31 -5
  84. package/dist/blocks/ai-chat/react/index.d.ts +12 -46
  85. package/dist/blocks/ai-chat/react/index.js +43 -335
  86. package/dist/blocks/ai-chat/solid/index.d.ts +34 -0
  87. package/dist/blocks/ai-chat/solid/index.js +41 -0
  88. package/dist/blocks/ai-chat/svelte/index.d.ts +34 -0
  89. package/dist/blocks/ai-chat/svelte/index.js +41 -0
  90. package/dist/blocks/ai-chat/vue/index.d.ts +34 -0
  91. package/dist/blocks/ai-chat/vue/index.js +41 -0
  92. package/dist/blocks/ai-files/index.d.ts +11 -4
  93. package/dist/blocks/ai-files/index.js +16 -3
  94. package/dist/blocks/ai-providers/index.d.ts +18 -3
  95. package/dist/blocks/ai-providers/index.js +41 -15
  96. package/dist/blocks/ai-tasks/index.d.ts +10 -3
  97. package/dist/blocks/ai-tasks/index.js +71 -21
  98. package/dist/blocks/announcements/index.d.ts +18 -3
  99. package/dist/blocks/announcements/index.js +27 -3
  100. package/dist/blocks/announcements/react/index.d.ts +4 -14
  101. package/dist/blocks/announcements/react/index.js +22 -70
  102. package/dist/blocks/announcements/solid/index.d.ts +13 -0
  103. package/dist/blocks/announcements/solid/index.js +14 -0
  104. package/dist/blocks/announcements/svelte/index.d.ts +13 -0
  105. package/dist/blocks/announcements/svelte/index.js +14 -0
  106. package/dist/blocks/announcements/vue/index.d.ts +13 -0
  107. package/dist/blocks/announcements/vue/index.js +14 -0
  108. package/dist/blocks/api-keys/index.d.ts +24 -7
  109. package/dist/blocks/api-keys/index.js +30 -295
  110. package/dist/blocks/api-keys/react/index.d.ts +29 -0
  111. package/dist/blocks/api-keys/react/index.js +43 -0
  112. package/dist/blocks/api-keys/react/server.d.ts +7 -0
  113. package/dist/blocks/api-keys/react/server.js +7 -0
  114. package/dist/blocks/api-keys/solid/index.d.ts +13 -0
  115. package/dist/blocks/api-keys/solid/index.js +14 -0
  116. package/dist/blocks/api-keys/svelte/index.d.ts +13 -0
  117. package/dist/blocks/api-keys/svelte/index.js +14 -0
  118. package/dist/blocks/api-keys/vue/index.d.ts +13 -0
  119. package/dist/blocks/api-keys/vue/index.js +14 -0
  120. package/dist/blocks/approvals/index.d.ts +22 -0
  121. package/dist/blocks/approvals/index.js +189 -0
  122. package/dist/blocks/attachments/index.d.ts +18 -223
  123. package/dist/blocks/attachments/index.js +26 -233
  124. package/dist/blocks/audit/index.d.ts +72 -354
  125. package/dist/blocks/audit/index.js +91 -695
  126. package/dist/blocks/audit/react/index.d.ts +26 -0
  127. package/dist/blocks/audit/react/index.js +44 -0
  128. package/dist/blocks/audit/react/server.d.ts +7 -0
  129. package/dist/blocks/audit/react/server.js +7 -0
  130. package/dist/blocks/audit/solid/index.d.ts +13 -0
  131. package/dist/blocks/audit/solid/index.js +14 -0
  132. package/dist/blocks/audit/svelte/index.d.ts +13 -0
  133. package/dist/blocks/audit/svelte/index.js +14 -0
  134. package/dist/blocks/audit/vue/index.d.ts +13 -0
  135. package/dist/blocks/audit/vue/index.js +14 -0
  136. package/dist/blocks/billing/index.d.ts +40 -13
  137. package/dist/blocks/billing/index.js +49 -18
  138. package/dist/blocks/billing/react/index.d.ts +34 -0
  139. package/dist/blocks/billing/react/index.js +36 -0
  140. package/dist/blocks/billing/react/server.d.ts +7 -0
  141. package/dist/blocks/billing/react/server.js +7 -0
  142. package/dist/blocks/billing/solid/index.d.ts +15 -0
  143. package/dist/blocks/billing/solid/index.js +14 -0
  144. package/dist/blocks/billing/svelte/index.d.ts +15 -0
  145. package/dist/blocks/billing/svelte/index.js +14 -0
  146. package/dist/blocks/billing/vue/index.d.ts +15 -0
  147. package/dist/blocks/billing/vue/index.js +14 -0
  148. package/dist/blocks/bookings/index.d.ts +36 -0
  149. package/dist/blocks/bookings/index.js +28 -0
  150. package/dist/blocks/bookings/react/index.d.ts +31 -0
  151. package/dist/blocks/bookings/react/index.js +59 -0
  152. package/dist/blocks/bookings/react/server.d.ts +6 -0
  153. package/dist/blocks/bookings/react/server.js +7 -0
  154. package/dist/blocks/bookings/solid/index.d.ts +13 -0
  155. package/dist/blocks/bookings/solid/index.js +14 -0
  156. package/dist/blocks/bookings/svelte/index.d.ts +13 -0
  157. package/dist/blocks/bookings/svelte/index.js +14 -0
  158. package/dist/blocks/bookings/vue/index.d.ts +13 -0
  159. package/dist/blocks/bookings/vue/index.js +14 -0
  160. package/dist/blocks/bulk/index.d.ts +142 -0
  161. package/dist/blocks/bulk/index.js +154 -0
  162. package/dist/blocks/calendar/index.d.ts +20 -0
  163. package/dist/blocks/calendar/index.js +33 -0
  164. package/dist/blocks/calendar/react/index.d.ts +26 -0
  165. package/dist/blocks/calendar/react/index.js +58 -0
  166. package/dist/blocks/calendar/react/server.d.ts +6 -0
  167. package/dist/blocks/calendar/react/server.js +7 -0
  168. package/dist/blocks/calendar/solid/index.d.ts +13 -0
  169. package/dist/blocks/calendar/solid/index.js +14 -0
  170. package/dist/blocks/calendar/svelte/index.d.ts +13 -0
  171. package/dist/blocks/calendar/svelte/index.js +14 -0
  172. package/dist/blocks/calendar/vue/index.d.ts +13 -0
  173. package/dist/blocks/calendar/vue/index.js +14 -0
  174. package/dist/blocks/catalog/index.d.ts +224 -0
  175. package/dist/blocks/catalog/index.js +292 -0
  176. package/dist/blocks/collections/index.d.ts +184 -0
  177. package/dist/blocks/collections/index.js +208 -0
  178. package/dist/blocks/comments/index.d.ts +19 -166
  179. package/dist/blocks/comments/index.js +26 -206
  180. package/dist/blocks/comments/react/index.d.ts +27 -0
  181. package/dist/blocks/comments/react/index.js +45 -0
  182. package/dist/blocks/comments/react/server.d.ts +7 -0
  183. package/dist/blocks/comments/react/server.js +7 -0
  184. package/dist/blocks/comments/solid/index.d.ts +13 -0
  185. package/dist/blocks/comments/solid/index.js +14 -0
  186. package/dist/blocks/comments/svelte/index.d.ts +13 -0
  187. package/dist/blocks/comments/svelte/index.js +14 -0
  188. package/dist/blocks/comments/vue/index.d.ts +13 -0
  189. package/dist/blocks/comments/vue/index.js +14 -0
  190. package/dist/blocks/connectors/index.d.ts +21 -3
  191. package/dist/blocks/connectors/index.js +54 -18
  192. package/dist/blocks/custom-fields/index.d.ts +62 -0
  193. package/dist/blocks/custom-fields/index.js +85 -0
  194. package/dist/blocks/data-lifecycle/index.d.ts +119 -10
  195. package/dist/blocks/data-lifecycle/index.js +103 -12
  196. package/dist/blocks/deals/index.d.ts +262 -0
  197. package/dist/blocks/deals/index.js +380 -0
  198. package/dist/blocks/documents/index.d.ts +17 -0
  199. package/dist/blocks/documents/index.js +118 -0
  200. package/dist/blocks/domains/index.d.ts +117 -0
  201. package/dist/blocks/domains/index.js +118 -0
  202. package/dist/blocks/drive/index.d.ts +296 -0
  203. package/dist/blocks/drive/index.js +483 -0
  204. package/dist/blocks/employees/index.d.ts +205 -0
  205. package/dist/blocks/employees/index.js +289 -0
  206. package/dist/blocks/engagements/index.d.ts +125 -0
  207. package/dist/blocks/engagements/index.js +143 -0
  208. package/dist/blocks/entitlements/index.d.ts +40 -4
  209. package/dist/blocks/entitlements/index.js +14 -24
  210. package/dist/blocks/entitlements/react/index.d.ts +24 -0
  211. package/dist/blocks/entitlements/react/index.js +35 -0
  212. package/dist/blocks/entitlements/react/server.d.ts +6 -0
  213. package/dist/blocks/entitlements/react/server.js +7 -0
  214. package/dist/blocks/entitlements/solid/index.d.ts +13 -0
  215. package/dist/blocks/entitlements/solid/index.js +14 -0
  216. package/dist/blocks/entitlements/svelte/index.d.ts +13 -0
  217. package/dist/blocks/entitlements/svelte/index.js +14 -0
  218. package/dist/blocks/entitlements/vue/index.d.ts +13 -0
  219. package/dist/blocks/entitlements/vue/index.js +14 -0
  220. package/dist/blocks/flags/index.d.ts +61 -187
  221. package/dist/blocks/flags/index.js +65 -252
  222. package/dist/blocks/forms/index.d.ts +302 -0
  223. package/dist/blocks/forms/index.js +341 -0
  224. package/dist/blocks/forms/react/index.d.ts +16 -0
  225. package/dist/blocks/forms/react/index.js +25 -0
  226. package/dist/blocks/forms/react/server.d.ts +6 -0
  227. package/dist/blocks/forms/react/server.js +7 -0
  228. package/dist/blocks/forms/solid/index.d.ts +13 -0
  229. package/dist/blocks/forms/solid/index.js +14 -0
  230. package/dist/blocks/forms/svelte/index.d.ts +13 -0
  231. package/dist/blocks/forms/svelte/index.js +14 -0
  232. package/dist/blocks/forms/vue/index.d.ts +13 -0
  233. package/dist/blocks/forms/vue/index.js +14 -0
  234. package/dist/blocks/hiring/index.d.ts +154 -0
  235. package/dist/blocks/hiring/index.js +180 -0
  236. package/dist/blocks/identities/index.d.ts +83 -0
  237. package/dist/blocks/identities/index.js +103 -0
  238. package/dist/blocks/imports/index.d.ts +91 -0
  239. package/dist/blocks/imports/index.js +123 -0
  240. package/dist/blocks/inbox/index.d.ts +22 -3
  241. package/dist/blocks/inbox/index.js +78 -6
  242. package/dist/blocks/inbox/react/index.d.ts +3 -2
  243. package/dist/blocks/inbox/react/index.js +55 -199
  244. package/dist/blocks/inbox/react/server.d.ts +2 -1
  245. package/dist/blocks/inbox/solid/index.d.ts +27 -0
  246. package/dist/blocks/inbox/solid/index.js +32 -0
  247. package/dist/blocks/inbox/svelte/index.d.ts +27 -0
  248. package/dist/blocks/inbox/svelte/index.js +32 -0
  249. package/dist/blocks/inbox/vue/index.d.ts +27 -0
  250. package/dist/blocks/inbox/vue/index.js +32 -0
  251. package/dist/blocks/index.d.ts +9 -64
  252. package/dist/blocks/index.js +193 -57
  253. package/dist/blocks/inventory/index.d.ts +181 -0
  254. package/dist/blocks/inventory/index.js +219 -0
  255. package/dist/blocks/invoices/index.d.ts +154 -0
  256. package/dist/blocks/invoices/index.js +216 -0
  257. package/dist/blocks/jobs/index.d.ts +188 -49
  258. package/dist/blocks/jobs/index.js +698 -527
  259. package/dist/blocks/knowledge/index.d.ts +10 -3
  260. package/dist/blocks/knowledge/index.js +17 -3
  261. package/dist/blocks/leave/index.d.ts +241 -0
  262. package/dist/blocks/leave/index.js +209 -0
  263. package/dist/blocks/memory/index.d.ts +9 -4
  264. package/dist/blocks/memory/index.js +49 -12
  265. package/dist/blocks/metrics/index.d.ts +174 -0
  266. package/dist/blocks/metrics/index.js +217 -0
  267. package/dist/blocks/mfa/index.d.ts +7 -0
  268. package/dist/blocks/mfa/index.js +12 -0
  269. package/dist/blocks/mfa/react/index.d.ts +30 -0
  270. package/dist/blocks/mfa/react/index.js +45 -0
  271. package/dist/blocks/mfa/react/server.d.ts +9 -0
  272. package/dist/blocks/mfa/react/server.js +12 -0
  273. package/dist/blocks/mfa/solid/index.d.ts +20 -0
  274. package/dist/blocks/mfa/solid/index.js +23 -0
  275. package/dist/blocks/mfa/svelte/index.d.ts +20 -0
  276. package/dist/blocks/mfa/svelte/index.js +23 -0
  277. package/dist/blocks/mfa/vue/index.d.ts +20 -0
  278. package/dist/blocks/mfa/vue/index.js +23 -0
  279. package/dist/blocks/notifications/index.d.ts +345 -26
  280. package/dist/blocks/notifications/index.js +744 -120
  281. package/dist/blocks/notifications/react/index.d.ts +7 -32
  282. package/dist/blocks/notifications/react/index.js +23 -49
  283. package/dist/blocks/notifications/react/server.d.ts +2 -1
  284. package/dist/blocks/notifications/solid/index.d.ts +13 -0
  285. package/dist/blocks/notifications/solid/index.js +14 -0
  286. package/dist/blocks/notifications/svelte/index.d.ts +13 -0
  287. package/dist/blocks/notifications/svelte/index.js +14 -0
  288. package/dist/blocks/notifications/vue/index.d.ts +13 -0
  289. package/dist/blocks/notifications/vue/index.js +14 -0
  290. package/dist/blocks/number-sequences/index.d.ts +39 -0
  291. package/dist/blocks/number-sequences/index.js +38 -0
  292. package/dist/blocks/oauth-server/index.d.ts +228 -0
  293. package/dist/blocks/oauth-server/index.js +309 -0
  294. package/dist/blocks/onboarding/index.d.ts +8 -3
  295. package/dist/blocks/onboarding/index.js +17 -63
  296. package/dist/blocks/onboarding/react/index.d.ts +3 -12
  297. package/dist/blocks/onboarding/react/index.js +18 -60
  298. package/dist/blocks/onboarding/react/server.d.ts +2 -2
  299. package/dist/blocks/onboarding/react/server.js +2 -2
  300. package/dist/blocks/onboarding/solid/index.d.ts +13 -0
  301. package/dist/blocks/onboarding/solid/index.js +14 -0
  302. package/dist/blocks/onboarding/svelte/index.d.ts +13 -0
  303. package/dist/blocks/onboarding/svelte/index.js +14 -0
  304. package/dist/blocks/onboarding/vue/index.d.ts +13 -0
  305. package/dist/blocks/onboarding/vue/index.js +14 -0
  306. package/dist/blocks/orders/index.d.ts +264 -0
  307. package/dist/blocks/orders/index.js +589 -0
  308. package/dist/blocks/organizations/index.d.ts +31 -238
  309. package/dist/blocks/organizations/index.js +49 -399
  310. package/dist/blocks/organizations/react/index.d.ts +108 -0
  311. package/dist/blocks/organizations/react/index.js +113 -0
  312. package/dist/blocks/organizations/react/server.d.ts +11 -0
  313. package/dist/blocks/organizations/react/server.js +15 -0
  314. package/dist/blocks/organizations/solid/index.d.ts +34 -0
  315. package/dist/blocks/organizations/solid/index.js +32 -0
  316. package/dist/blocks/organizations/svelte/index.d.ts +34 -0
  317. package/dist/blocks/organizations/svelte/index.js +32 -0
  318. package/dist/blocks/organizations/vue/index.d.ts +34 -0
  319. package/dist/blocks/organizations/vue/index.js +32 -0
  320. package/dist/blocks/outbox/index.d.ts +12 -3
  321. package/dist/blocks/outbox/index.js +97 -67
  322. package/dist/blocks/parties/index.d.ts +181 -0
  323. package/dist/blocks/parties/index.js +258 -0
  324. package/dist/blocks/pipelines/index.d.ts +189 -0
  325. package/dist/blocks/pipelines/index.js +204 -0
  326. package/dist/blocks/profiles/index.d.ts +14 -9
  327. package/dist/blocks/profiles/index.js +20 -6
  328. package/dist/blocks/promotions/index.d.ts +125 -0
  329. package/dist/blocks/promotions/index.js +123 -0
  330. package/dist/blocks/push/index.d.ts +48 -28
  331. package/dist/blocks/push/index.js +45 -16
  332. package/dist/blocks/quotes/index.d.ts +152 -0
  333. package/dist/blocks/quotes/index.js +209 -0
  334. package/dist/blocks/rank/index.d.ts +71 -0
  335. package/dist/blocks/rank/index.js +53 -0
  336. package/dist/blocks/reactions/index.d.ts +18 -0
  337. package/dist/blocks/reactions/index.js +26 -0
  338. package/dist/blocks/reactions/react/index.d.ts +23 -0
  339. package/dist/blocks/reactions/react/index.js +46 -0
  340. package/dist/blocks/reactions/react/server.d.ts +6 -0
  341. package/dist/blocks/reactions/react/server.js +7 -0
  342. package/dist/blocks/reactions/solid/index.d.ts +13 -0
  343. package/dist/blocks/reactions/solid/index.js +14 -0
  344. package/dist/blocks/reactions/svelte/index.d.ts +13 -0
  345. package/dist/blocks/reactions/svelte/index.js +14 -0
  346. package/dist/blocks/reactions/vue/index.d.ts +13 -0
  347. package/dist/blocks/reactions/vue/index.js +14 -0
  348. package/dist/blocks/relations/index.d.ts +180 -0
  349. package/dist/blocks/relations/index.js +254 -0
  350. package/dist/blocks/reminders/index.d.ts +177 -0
  351. package/dist/blocks/reminders/index.js +171 -0
  352. package/dist/blocks/reviews/index.d.ts +148 -0
  353. package/dist/blocks/reviews/index.js +139 -0
  354. package/dist/blocks/rules/index.d.ts +103 -0
  355. package/dist/blocks/rules/index.js +54 -0
  356. package/dist/blocks/rules/react/index.d.ts +34 -0
  357. package/dist/blocks/rules/react/index.js +55 -0
  358. package/dist/blocks/rules/react/server.d.ts +6 -0
  359. package/dist/blocks/rules/react/server.js +7 -0
  360. package/dist/blocks/rules/solid/index.d.ts +13 -0
  361. package/dist/blocks/rules/solid/index.js +14 -0
  362. package/dist/blocks/rules/svelte/index.d.ts +13 -0
  363. package/dist/blocks/rules/svelte/index.js +14 -0
  364. package/dist/blocks/rules/vue/index.d.ts +13 -0
  365. package/dist/blocks/rules/vue/index.js +14 -0
  366. package/dist/blocks/saved-views/index.d.ts +17 -0
  367. package/dist/blocks/saved-views/index.js +29 -0
  368. package/dist/blocks/saved-views/react/index.d.ts +34 -0
  369. package/dist/blocks/saved-views/react/index.js +57 -0
  370. package/dist/blocks/saved-views/react/server.d.ts +7 -0
  371. package/dist/blocks/saved-views/react/server.js +7 -0
  372. package/dist/blocks/saved-views/solid/index.d.ts +13 -0
  373. package/dist/blocks/saved-views/solid/index.js +14 -0
  374. package/dist/blocks/saved-views/svelte/index.d.ts +13 -0
  375. package/dist/blocks/saved-views/svelte/index.js +14 -0
  376. package/dist/blocks/saved-views/vue/index.d.ts +13 -0
  377. package/dist/blocks/saved-views/vue/index.js +14 -0
  378. package/dist/blocks/search/index.d.ts +31 -0
  379. package/dist/blocks/search/index.js +61 -0
  380. package/dist/blocks/search/react/index.d.ts +36 -0
  381. package/dist/blocks/search/react/index.js +49 -0
  382. package/dist/blocks/search/react/server.d.ts +7 -0
  383. package/dist/blocks/search/react/server.js +8 -0
  384. package/dist/blocks/search/solid/index.d.ts +13 -0
  385. package/dist/blocks/search/solid/index.js +14 -0
  386. package/dist/blocks/search/svelte/index.d.ts +13 -0
  387. package/dist/blocks/search/svelte/index.js +14 -0
  388. package/dist/blocks/search/vue/index.d.ts +13 -0
  389. package/dist/blocks/search/vue/index.js +14 -0
  390. package/dist/blocks/service-principals/index.d.ts +126 -0
  391. package/dist/blocks/service-principals/index.js +107 -0
  392. package/dist/blocks/sessions/index.d.ts +7 -0
  393. package/dist/blocks/sessions/index.js +14 -0
  394. package/dist/blocks/sessions/react/index.d.ts +31 -0
  395. package/dist/blocks/sessions/react/index.js +51 -0
  396. package/dist/blocks/sessions/react/server.d.ts +9 -0
  397. package/dist/blocks/sessions/react/server.js +11 -0
  398. package/dist/blocks/sessions/solid/index.d.ts +20 -0
  399. package/dist/blocks/sessions/solid/index.js +23 -0
  400. package/dist/blocks/sessions/svelte/index.d.ts +20 -0
  401. package/dist/blocks/sessions/svelte/index.js +23 -0
  402. package/dist/blocks/sessions/vue/index.d.ts +20 -0
  403. package/dist/blocks/sessions/vue/index.js +23 -0
  404. package/dist/blocks/settings/index.d.ts +20 -86
  405. package/dist/blocks/settings/index.js +28 -101
  406. package/dist/blocks/settings/react/index.d.ts +25 -0
  407. package/dist/blocks/settings/react/index.js +37 -0
  408. package/dist/blocks/settings/react/server.d.ts +7 -0
  409. package/dist/blocks/settings/react/server.js +7 -0
  410. package/dist/blocks/settings/solid/index.d.ts +13 -0
  411. package/dist/blocks/settings/solid/index.js +14 -0
  412. package/dist/blocks/settings/svelte/index.d.ts +13 -0
  413. package/dist/blocks/settings/svelte/index.js +14 -0
  414. package/dist/blocks/settings/vue/index.d.ts +13 -0
  415. package/dist/blocks/settings/vue/index.js +14 -0
  416. package/dist/blocks/share-links/index.d.ts +99 -0
  417. package/dist/blocks/share-links/index.js +99 -0
  418. package/dist/blocks/shared-signals/index.d.ts +395 -0
  419. package/dist/blocks/shared-signals/index.js +880 -0
  420. package/dist/blocks/signing-keys/index.d.ts +29 -0
  421. package/dist/blocks/signing-keys/index.js +161 -0
  422. package/dist/blocks/sla/index.d.ts +114 -0
  423. package/dist/blocks/sla/index.js +122 -0
  424. package/dist/blocks/sso/index.d.ts +169 -147
  425. package/dist/blocks/sso/index.js +259 -321
  426. package/dist/blocks/state-machine/index.d.ts +105 -0
  427. package/dist/blocks/state-machine/index.js +116 -0
  428. package/dist/blocks/tags/index.d.ts +20 -0
  429. package/dist/blocks/tags/index.js +28 -0
  430. package/dist/blocks/tags/react/index.d.ts +28 -0
  431. package/dist/blocks/tags/react/index.js +47 -0
  432. package/dist/blocks/tags/react/server.d.ts +7 -0
  433. package/dist/blocks/tags/react/server.js +7 -0
  434. package/dist/blocks/tags/solid/index.d.ts +13 -0
  435. package/dist/blocks/tags/solid/index.js +14 -0
  436. package/dist/blocks/tags/svelte/index.d.ts +13 -0
  437. package/dist/blocks/tags/svelte/index.js +14 -0
  438. package/dist/blocks/tags/vue/index.d.ts +13 -0
  439. package/dist/blocks/tags/vue/index.js +14 -0
  440. package/dist/blocks/targets/index.d.ts +82 -0
  441. package/dist/blocks/targets/index.js +73 -0
  442. package/dist/blocks/teams/index.d.ts +61 -0
  443. package/dist/blocks/teams/index.js +83 -0
  444. package/dist/blocks/templates/index.d.ts +362 -0
  445. package/dist/blocks/templates/index.js +483 -0
  446. package/dist/blocks/time-tracking/index.d.ts +250 -0
  447. package/dist/blocks/time-tracking/index.js +317 -0
  448. package/dist/blocks/trash/index.d.ts +78 -0
  449. package/dist/blocks/trash/index.js +79 -0
  450. package/dist/blocks/undo/index.d.ts +9 -0
  451. package/dist/blocks/undo/index.js +14 -0
  452. package/dist/blocks/undo/react/index.d.ts +17 -0
  453. package/dist/blocks/undo/react/index.js +24 -0
  454. package/dist/blocks/undo/react/server.d.ts +7 -0
  455. package/dist/blocks/undo/react/server.js +7 -0
  456. package/dist/blocks/undo/solid/index.d.ts +13 -0
  457. package/dist/blocks/undo/solid/index.js +14 -0
  458. package/dist/blocks/undo/svelte/index.d.ts +13 -0
  459. package/dist/blocks/undo/svelte/index.js +14 -0
  460. package/dist/blocks/undo/vue/index.d.ts +13 -0
  461. package/dist/blocks/undo/vue/index.js +14 -0
  462. package/dist/blocks/usage/index.d.ts +10 -4
  463. package/dist/blocks/usage/index.js +16 -232
  464. package/dist/blocks/usage/react/index.d.ts +23 -0
  465. package/dist/blocks/usage/react/index.js +38 -0
  466. package/dist/blocks/usage/react/server.d.ts +7 -0
  467. package/dist/blocks/usage/react/server.js +7 -0
  468. package/dist/blocks/usage/solid/index.d.ts +13 -0
  469. package/dist/blocks/usage/solid/index.js +14 -0
  470. package/dist/blocks/usage/svelte/index.d.ts +13 -0
  471. package/dist/blocks/usage/svelte/index.js +14 -0
  472. package/dist/blocks/usage/vue/index.d.ts +13 -0
  473. package/dist/blocks/usage/vue/index.js +14 -0
  474. package/dist/blocks/versions/index.d.ts +165 -0
  475. package/dist/blocks/versions/index.js +283 -0
  476. package/dist/blocks/waitlist/index.d.ts +57 -19
  477. package/dist/blocks/waitlist/index.js +47 -12
  478. package/dist/blocks/webhooks/index.d.ts +275 -134
  479. package/dist/blocks/webhooks/index.js +775 -231
  480. package/dist/blocks/work-items/index.d.ts +208 -0
  481. package/dist/blocks/work-items/index.js +305 -0
  482. package/dist/blocks/workflow-builder/index.d.ts +26 -6
  483. package/dist/blocks/workflow-builder/index.js +30 -5
  484. package/dist/blocks/workflow-builder/react/index.d.ts +4 -19
  485. package/dist/blocks/workflow-builder/react/index.js +45 -89
  486. package/dist/blocks/workflow-builder/solid/index.d.ts +20 -0
  487. package/dist/blocks/workflow-builder/solid/index.js +23 -0
  488. package/dist/blocks/workflow-builder/svelte/index.d.ts +20 -0
  489. package/dist/blocks/workflow-builder/svelte/index.js +23 -0
  490. package/dist/blocks/workflow-builder/vue/index.d.ts +20 -0
  491. package/dist/blocks/workflow-builder/vue/index.js +23 -0
  492. package/dist/blocks/workflows/index.d.ts +20 -3
  493. package/dist/blocks/workflows/index.js +27 -3
  494. package/dist/blocks/workflows/react/index.d.ts +5 -20
  495. package/dist/blocks/workflows/react/index.js +41 -113
  496. package/dist/blocks/workflows/solid/index.d.ts +20 -0
  497. package/dist/blocks/workflows/solid/index.js +23 -0
  498. package/dist/blocks/workflows/svelte/index.d.ts +20 -0
  499. package/dist/blocks/workflows/svelte/index.js +23 -0
  500. package/dist/blocks/workflows/vue/index.d.ts +20 -0
  501. package/dist/blocks/workflows/vue/index.js +23 -0
  502. package/dist/blocks-D2WQ63PI.js +84 -0
  503. package/dist/bookings-0XnhHNLM.js +181 -0
  504. package/dist/build-Cm0T5MVG.js +1815 -0
  505. package/dist/build-Cx08LOT7.js +689 -0
  506. package/dist/calendar-DcFrpSOy.js +801 -0
  507. package/dist/casing-DdFWEtqr.js +16 -0
  508. package/dist/channel-D-LHCY11.d.ts +78 -0
  509. package/dist/channels-C-GCoNLd.js +114 -0
  510. package/dist/chat-sdk/index.d.ts +131 -7
  511. package/dist/chat-sdk/index.js +155 -6
  512. package/dist/chat-sdk/react/index.d.ts +2 -1
  513. package/dist/chat-sdk/react/index.js +1 -2
  514. package/dist/chat-sdk/react/server.d.ts +2 -1
  515. package/dist/chat-sdk/react/server.js +1 -2
  516. package/dist/claims-0KZVT804.js +61 -0
  517. package/dist/cli/add-B0zoJUYX.js +651 -0
  518. package/dist/cli/add-Bd5M6uEZ.js +75 -0
  519. package/dist/cli/add-CT6p5psO.js +1 -0
  520. package/dist/cli/adopt-C9jl8z0h.js +1 -0
  521. package/dist/cli/adopt-CebmlHL-.js +393 -0
  522. package/dist/cli/agent-CCt_aXpJ.js +176 -0
  523. package/dist/cli/apply-Dxk8AUNU.js +302 -0
  524. package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
  525. package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
  526. package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
  527. package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
  528. package/dist/cli/bin.js +41 -21
  529. package/dist/cli/blocks-Bzz326nn.js +1 -0
  530. package/dist/cli/blocks-Dq25D80b.js +124 -0
  531. package/dist/cli/cache-Cx6qlRDR.js +502 -0
  532. package/dist/cli/catalog-Di15TkM2.js +187 -0
  533. package/dist/cli/codemod-woL4cVe0.js +985 -0
  534. package/dist/cli/command-CK9Cn8HV.js +836 -0
  535. package/dist/cli/completion-BO5UK6bG.js +1 -0
  536. package/dist/cli/completion-CWoDmFZr.js +205 -0
  537. package/dist/cli/completion-J3dqnNoW.js +30 -0
  538. package/dist/cli/config-C1d-mbUA.js +1 -0
  539. package/dist/cli/config-CLHpTk9Y.js +1421 -0
  540. package/dist/cli/config-MuKY9kUj.js +39 -0
  541. package/dist/cli/config-edit-Ct1lXe8a.js +603 -0
  542. package/dist/cli/db-DT1bGB02.js +78 -0
  543. package/dist/cli/design-edit-B-WsnhUF.js +175 -0
  544. package/dist/cli/detect-DYDUBLU4.js +84 -0
  545. package/dist/cli/dist-D_VbPAMR.js +129 -0
  546. package/dist/cli/dist-DuiMMRbJ.js +1112 -0
  547. package/dist/cli/doctor-SGw36h1D.js +3806 -0
  548. package/dist/cli/emit-ZAYeh4Yn.js +1042 -0
  549. package/dist/cli/env-CVXvJoLP.js +142 -0
  550. package/dist/cli/env-D3gZ-OHj.js +1 -0
  551. package/dist/cli/env-DJ4ZaJpe.js +1 -0
  552. package/dist/cli/env-DMw_MBe5.js +996 -0
  553. package/dist/cli/errors-Caiz_0so.js +98 -0
  554. package/dist/cli/fastest-levenshtein-dhRRvrM2.js +120 -0
  555. package/dist/cli/files-DDvAwTko.js +963 -0
  556. package/dist/cli/gen-B344S1Oy.js +304 -0
  557. package/dist/cli/guards-CUlDNYZs.js +8 -0
  558. package/dist/cli/index.d.ts +297 -140
  559. package/dist/cli/index.js +13 -8
  560. package/dist/cli/init-B1dL-RZL.js +393 -0
  561. package/dist/cli/introspect-BPcFi8ow.js +51 -0
  562. package/dist/cli/io-BiPX-_J1.js +37 -0
  563. package/dist/cli/jsonc-C8M0EhHB.js +1 -0
  564. package/dist/cli/keys-jsxCNJdz.js +106 -0
  565. package/dist/cli/metadata-CxBZo4KM.js +138 -0
  566. package/dist/cli/module-migration-YFFdWC5X.js +592 -0
  567. package/dist/cli/moved-D9OT_Uyy.js +152 -0
  568. package/dist/cli/names-D6LrQnOv.js +6 -0
  569. package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
  570. package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
  571. package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
  572. package/dist/cli/parse-DE59XyWt.js +170 -0
  573. package/dist/cli/preset-DmcC4nWE.js +129 -0
  574. package/dist/cli/prompts-Bvg_DBpe.js +1137 -0
  575. package/dist/cli/redact-PjNswZOs.js +35 -0
  576. package/dist/cli/rolldown-runtime-kJ_i4yPo.js +26 -0
  577. package/dist/cli/run-CM_2g6KQ.js +684 -0
  578. package/dist/cli/run-DaHfUUO9.js +1539 -0
  579. package/dist/cli/scaffold-CFdDq36-.js +898 -0
  580. package/dist/cli/scaffold-Dsjr7sOT.js +1 -0
  581. package/dist/cli/seed-DldDdXWO.js +113 -0
  582. package/dist/cli/seed-DtRFysBe.js +1 -0
  583. package/dist/cli/shell-Btv_4Yhe.js +10 -0
  584. package/dist/cli/skills-v34NDb2D.js +121 -0
  585. package/dist/cli/snapshot-DAxLi4hO.js +347 -0
  586. package/dist/cli/source-args-0I9zylYy.js +47 -0
  587. package/dist/cli/spec-CaaSOYZS.js +7501 -0
  588. package/dist/cli/spec-De0cfceR.js +1 -0
  589. package/dist/cli/sql-0I1EQ3JG.js +2 -0
  590. package/dist/cli/sql-DDLWwzh9.js +326 -0
  591. package/dist/cli/stack-status-CRanl-CN.js +456 -0
  592. package/dist/cli/style-2JfIPVMQ.js +29 -0
  593. package/dist/cli/supabase-toml-DjLgBYEo.js +1153 -0
  594. package/dist/cli/sync-DFx-6t5n.js +88 -0
  595. package/dist/cli/topics-GJuIDwlY.js +30 -0
  596. package/dist/cli/trace-VbdO6bcN.js +7 -0
  597. package/dist/cli/typegen--TfvOPLh.js +494 -0
  598. package/dist/cli/typegen-version-BNBPI4Eu.js +9 -0
  599. package/dist/cli/validate-BfWNKvxy.js +7522 -0
  600. package/dist/cli/version-DNRW4DAP.js +4 -0
  601. package/dist/cli/write-BS6F3Yvz.js +180 -0
  602. package/dist/client/index.d.ts +7 -3
  603. package/dist/client/index.js +207 -4
  604. package/dist/client/native/index.d.ts +71 -4
  605. package/dist/client/native/index.js +65 -6
  606. package/dist/client-01MAuqzW.js +137 -0
  607. package/dist/client-B7QVIrJS.d.ts +263 -0
  608. package/dist/client-B9CqzgPO.js +75 -0
  609. package/dist/client-BAcILZOf.d.ts +122 -0
  610. package/dist/client-BOT2KVIp.js +128 -0
  611. package/dist/client-BUGIS__1.js +1051 -0
  612. package/dist/client-BVZtq_rQ.d.ts +34 -0
  613. package/dist/client-BYaOGCOG.js +84 -0
  614. package/dist/client-BfgwocyT.js +155 -0
  615. package/dist/client-BpS8a6Fm.js +51 -0
  616. package/dist/client-BxnLb9bz.d.ts +58 -0
  617. package/dist/client-BzCv4kKE.js +65 -0
  618. package/dist/client-C-2ajnhM.js +89 -0
  619. package/dist/client-C5mUEb2n.js +55 -0
  620. package/dist/client-C9QrWrnt.js +209 -0
  621. package/dist/client-CFdMJ1h9.d.ts +277 -0
  622. package/dist/client-CHmjaI0j.d.ts +103 -0
  623. package/dist/client-CWs3X4g1.js +120 -0
  624. package/dist/client-Cdedx_lw.js +438 -0
  625. package/dist/client-CiGjS6us.js +169 -0
  626. package/dist/client-CilSKXNu.js +288 -0
  627. package/dist/client-ClZ0D-if.d.ts +162 -0
  628. package/dist/client-Cmensu7l.d.ts +419 -0
  629. package/dist/client-Co6BPmvr.d.ts +108 -0
  630. package/dist/client-CoVGPi0c.js +133 -0
  631. package/dist/client-CvITjt-9.js +310 -0
  632. package/dist/client-CzI4QpG3.d.ts +131 -0
  633. package/dist/client-D5CZ2a34.d.ts +455 -0
  634. package/dist/client-DAHsEOVV.d.ts +155 -0
  635. package/dist/client-DG7FwgZD.js +104 -0
  636. package/dist/client-DIrCmOXz.d.ts +157 -0
  637. package/dist/client-DNq8xYb-.js +52 -0
  638. package/dist/client-DdfSIZ3M.d.ts +107 -0
  639. package/dist/client-DjTRlN3a.d.ts +68 -0
  640. package/dist/client-Ezlbskjq.js +60 -0
  641. package/dist/client-LLmgiCwJ.d.ts +135 -0
  642. package/dist/client-Lx3mlvKO.d.ts +100 -0
  643. package/dist/client-PGRk3DGz.js +98 -0
  644. package/dist/client-Tc47rlSe.d.ts +350 -0
  645. package/dist/client-VvY0K3wr.d.ts +59 -0
  646. package/dist/client-WAdEBBrH.d.ts +65 -0
  647. package/dist/client-WHeWTNVL.d.ts +130 -0
  648. package/dist/client-WgrPIHH-.js +213 -0
  649. package/dist/client-ZTtSV3l8.js +40 -0
  650. package/dist/client-b2_GjzzD.js +438 -0
  651. package/dist/client-ckXfdy1k.js +38 -0
  652. package/dist/client-e-hFkLUf.d.ts +34 -0
  653. package/dist/client-hyP_nS5R.d.ts +218 -0
  654. package/dist/client-i8glKhxh.js +67 -0
  655. package/dist/client-iDLLvGR4.d.ts +52 -0
  656. package/dist/client-pxjbgOz6.js +376 -0
  657. package/dist/client-xkSCp9hN.d.ts +101 -0
  658. package/dist/client-ysNShuJZ.d.ts +39 -0
  659. package/dist/clone-dN9XOL1K.js +29 -0
  660. package/dist/cloud-event-5rCEzIgK.d.ts +64 -0
  661. package/dist/cloud-event-CTh9Sr5w.js +60 -0
  662. package/dist/codecs-Bm46sVxr.d.ts +215 -0
  663. package/dist/codecs-YAekuQ08.js +358 -0
  664. package/dist/codegen-DeoSt1mi.d.ts +1571 -0
  665. package/dist/comments-D7sbd0xG.js +230 -0
  666. package/dist/commerce/index.d.ts +211 -0
  667. package/dist/commerce/index.js +517 -0
  668. package/dist/compiler-BVxepAY0.d.ts +14 -0
  669. package/dist/compose-Djntdacs.js +53 -0
  670. package/dist/composite-M6zPs1Xm.js +130 -0
  671. package/dist/composite-djtGy6bz.d.ts +67 -0
  672. package/dist/config/index.d.ts +7 -6
  673. package/dist/config/index.js +7 -4
  674. package/dist/config-BA1K4OPk.js +557 -0
  675. package/dist/config-C4MozTD7.js +3892 -0
  676. package/dist/connector-Cp8CqssJ.d.ts +107 -0
  677. package/dist/connectors-CjD-R2ks.d.ts +141 -0
  678. package/dist/context-1sSWcd7_.d.ts +365 -0
  679. package/dist/context-B8_p3MXo.js +11 -0
  680. package/dist/context-BDDgjoxz.js +41 -0
  681. package/dist/context-C-bHOtoD.js +5 -0
  682. package/dist/context-D6ZMKc2L.js +19 -0
  683. package/dist/context-wDKxSl9x.js +9 -0
  684. package/dist/controller-D6NyNrlZ.js +79 -0
  685. package/dist/controller-D845qKh2.d.ts +46 -0
  686. package/dist/credentials/index.d.ts +15 -5
  687. package/dist/credentials/index.js +17 -17
  688. package/dist/cron-CUaKTjWC.js +145 -0
  689. package/dist/cron-route-CoL-By8Z.js +24 -0
  690. package/dist/csv-CVfXqaAu.js +89 -0
  691. package/dist/csv-D3eKxV1T.d.ts +28 -0
  692. package/dist/define-B2ln373W.js +1896 -0
  693. package/dist/define-DxHHbNEb.d.ts +1005 -0
  694. package/dist/define-block-B6Gjs57G.js +52 -0
  695. package/dist/define-block-CLZMEFeK.d.ts +256 -0
  696. package/dist/delegation-Dt8hMJWu.js +140 -0
  697. package/dist/delivery-B1mKaOen.js +30 -0
  698. package/dist/delivery-BeHgwS3k.d.ts +69 -0
  699. package/dist/documents-CWn2mtYf.d.ts +96 -0
  700. package/dist/edge/index.d.ts +68 -13
  701. package/dist/edge/index.js +75 -43
  702. package/dist/elysia/index.d.ts +1 -1
  703. package/dist/elysia/index.js +2 -2
  704. package/dist/email-BcmbIWOX.d.ts +42 -0
  705. package/dist/embeddings-C2S14foD.d.ts +78 -0
  706. package/dist/embeddings-CVeOoufZ.js +128 -0
  707. package/dist/ended-nIdGCHxk.d.ts +70 -0
  708. package/dist/entitlements-BvU5dLpW.js +45 -0
  709. package/dist/entitlements-CbzCKalR.d.ts +53 -0
  710. package/dist/env/index.d.ts +1 -1
  711. package/dist/env/index.js +12 -5
  712. package/dist/envelope-CHYk5MXU.js +90 -0
  713. package/dist/errors-8i6tSICm.js +301 -0
  714. package/dist/errors-PIpcoe4z.js +44 -0
  715. package/dist/escape-like-AUEPn-C5.d.ts +15 -0
  716. package/dist/eve/index.d.ts +5 -5
  717. package/dist/eve/index.js +11 -17
  718. package/dist/eve-DUF70Vgi.d.ts +151 -0
  719. package/dist/event-calendar-DJXXMJ3x.d.ts +217 -0
  720. package/dist/event-map-Dy2vKHai.js +19 -0
  721. package/dist/events/index.d.ts +4 -4
  722. package/dist/events/index.js +16 -8
  723. package/dist/events-CTreRrgP.d.ts +800 -0
  724. package/dist/events-xbpHkcK9.js +82 -0
  725. package/dist/executor-BBHgjUJu.d.ts +39 -0
  726. package/dist/executor-BINiCFNp.d.ts +95 -0
  727. package/dist/executor-BXSHYyW2.js +735 -0
  728. package/dist/executor-D1kYY5BA.js +206 -0
  729. package/dist/executor-D3K3tycZ.js +147 -0
  730. package/dist/executor-DKrZr3AC.d.ts +174 -0
  731. package/dist/executor-DoE-5iM8.d.ts +272 -0
  732. package/dist/expo/index.d.ts +4 -4
  733. package/dist/expo/index.js +7 -7
  734. package/dist/expo-sqlite/index.d.ts +3 -3
  735. package/dist/expo-sqlite/index.js +2 -2
  736. package/dist/extra-CGQ2_q3S.js +10 -0
  737. package/dist/field-errors-CWXN_h_E.d.ts +113 -0
  738. package/dist/field-errors-DZVRWRkf.js +13 -0
  739. package/dist/field-formats-Cif5gr7c.js +102 -0
  740. package/dist/field-formats-DCvOQlOy.d.ts +39 -0
  741. package/dist/filter-evaluate-C0ULNfS7.js +214 -0
  742. package/dist/filter-evaluate-CjcFq0RT.d.ts +34 -0
  743. package/dist/filter-query-B3lhckKX.js +518 -0
  744. package/dist/filter-query-BKmRYrTE.d.ts +121 -0
  745. package/dist/flags-D_D1jAHB.d.ts +230 -0
  746. package/dist/flags-XAOsdNAc.js +279 -0
  747. package/dist/flags-sdk/index.d.ts +143 -0
  748. package/dist/flags-sdk/index.js +175 -0
  749. package/dist/form-definition-sagoefQr.d.ts +95 -0
  750. package/dist/format-CNwSjXUU.d.ts +70 -0
  751. package/dist/framework-DG5Bv39u.d.ts +26 -0
  752. package/dist/framework-INbjMZX1.js +51 -0
  753. package/dist/function-contract-B4c0XuTU.d.ts +21 -0
  754. package/dist/function-contract-DmkBg19r.js +5 -0
  755. package/dist/gateway-Cup00l0w.d.ts +109 -0
  756. package/dist/gateway-options-ClvvfuuU.d.ts +29 -0
  757. package/dist/gateway-options-DcLcWL5_.js +27 -0
  758. package/dist/graph-Cs28bOlK.js +360 -0
  759. package/dist/groups-CxonH3u5.js +16 -0
  760. package/dist/guards-6F2bCtQR.js +12 -0
  761. package/dist/h3/index.d.ts +7 -3
  762. package/dist/h3/index.js +3 -3
  763. package/dist/h3/v1/index.d.ts +1 -1
  764. package/dist/h3/v1/index.js +2 -2
  765. package/dist/history-GH1HJWQV.js +271 -0
  766. package/dist/hmac-DCud0myt.js +22 -0
  767. package/dist/hono/index.d.ts +33 -14
  768. package/dist/hono/index.js +58 -25
  769. package/dist/http-BF-V0CUF.js +25 -0
  770. package/dist/impersonation-CDeCzZP6.js +62 -0
  771. package/dist/impersonation-D5chOkrO.d.ts +25 -0
  772. package/dist/inbox-3ql4phyr.d.ts +400 -0
  773. package/dist/index-BIi8i6BO.d.ts +97 -0
  774. package/dist/index-BkzNUPId.d.ts +131 -0
  775. package/dist/index-BlqrGvb3.d.ts +227 -0
  776. package/dist/index-Brhm22eL.d.ts +138 -0
  777. package/dist/index-Bvw9r94Q.d.ts +245 -0
  778. package/dist/index-CETRk4YO.d.ts +82 -0
  779. package/dist/index-CrZitvSC.d.ts +258 -0
  780. package/dist/index-DfVXx4Ia.d.ts +202 -0
  781. package/dist/index-DygICr8c.d.ts +206 -0
  782. package/dist/index-Ej8XQ9w9.d.ts +58 -0
  783. package/dist/index-jhqhynmh.d.ts +58 -0
  784. package/dist/index.d.ts +90 -15
  785. package/dist/index.js +16 -14
  786. package/dist/iso4217-A8ev-CNW.js +176 -0
  787. package/dist/json-schema-CpYINXG8.js +548 -0
  788. package/dist/jws-35a8VhFV.d.ts +60 -0
  789. package/dist/jws-milwSg7E.js +191 -0
  790. package/dist/kit-D5S7KNFe.d.ts +66 -0
  791. package/dist/kit-MUK34-ZG.js +104 -0
  792. package/dist/knowledge-BXQ2-V0a.d.ts +187 -0
  793. package/dist/knowledge-CJ_Mm3ic.js +272 -0
  794. package/dist/lint/index.js +9 -9
  795. package/dist/list/index.d.ts +4 -3
  796. package/dist/list/index.js +4 -2
  797. package/dist/list-query-CBXNfJt4.js +549 -0
  798. package/dist/list-query-PvP3pPGQ.d.ts +194 -0
  799. package/dist/live-DwDreq1n.js +239 -0
  800. package/dist/mcp/index.d.ts +67 -20
  801. package/dist/mcp/index.js +220 -135
  802. package/dist/mcp/sdk/index.d.ts +38 -6
  803. package/dist/mcp/sdk/index.js +89 -7
  804. package/dist/message-B0fNJgq8.d.ts +93 -0
  805. package/dist/messages-Cx4ttLJJ.js +493 -0
  806. package/dist/metric-definition-95HFoW1V.d.ts +70 -0
  807. package/dist/metric-definition-BjxVn4R5.js +117 -0
  808. package/dist/mfa-DtflCXEt.d.ts +30 -0
  809. package/dist/model-lUafmeBQ.d.ts +311 -0
  810. package/dist/model-messages-CTu-6kBu.js +206 -0
  811. package/dist/model-messages-D4GZllOD.d.ts +34 -0
  812. package/dist/money-95Rff2vT.js +185 -0
  813. package/dist/money-DFpWzQvk.d.ts +76 -0
  814. package/dist/money-codec-C_-K5ZUU.js +41 -0
  815. package/dist/nestjs/index.d.ts +2 -2
  816. package/dist/nestjs/index.js +2 -2
  817. package/dist/next/index.d.ts +115 -55
  818. package/dist/next/index.js +208 -173
  819. package/dist/node/index.d.ts +2 -2
  820. package/dist/node/index.js +3 -3
  821. package/dist/nuxt/index.d.ts +2 -2
  822. package/dist/nuxt/index.js +3 -2
  823. package/dist/onboarding-BZvLLPaY.js +68 -0
  824. package/dist/openapi/index.d.ts +4 -2
  825. package/dist/openapi/index.js +21 -343
  826. package/dist/operations-C9-UcReN.d.ts +6 -0
  827. package/dist/operations-CsIfMED7.js +29 -0
  828. package/dist/optional-peer-Dx8TaYXw.js +29 -0
  829. package/dist/options-B0FcEKtH.js +5 -0
  830. package/dist/options-B5BU2Yg7.js +11 -0
  831. package/dist/options-B5woz53h.js +5 -0
  832. package/dist/options-B7EJaOX-.js +5 -0
  833. package/dist/options-B9q8CROT.js +9 -0
  834. package/dist/options-BA6jV6py.js +10 -0
  835. package/dist/options-BAW2ZlZ8.js +8 -0
  836. package/dist/options-BMjcVuaI.js +82 -0
  837. package/dist/options-BOOEzor9.js +5 -0
  838. package/dist/options-BQ07tTYr.js +11 -0
  839. package/dist/options-BZsoPJGX.js +5 -0
  840. package/dist/options-BesyRBnM.js +16 -0
  841. package/dist/options-Bf96aVk5.js +10 -0
  842. package/dist/options-BlOPivzq.js +8 -0
  843. package/dist/options-Blg8lAkz.js +9 -0
  844. package/dist/options-Bn4cu0gt.js +5 -0
  845. package/dist/options-BnoJOwXK.js +8 -0
  846. package/dist/options-Bp7sgKvl.js +30 -0
  847. package/dist/options-BqO9GYig.js +311 -0
  848. package/dist/options-BxcFLL1G.js +8 -0
  849. package/dist/options-C1HR4UZd.js +13 -0
  850. package/dist/options-C239TLRF.js +14 -0
  851. package/dist/options-C2HesT4A.js +9 -0
  852. package/dist/options-C3EzJATk.js +10 -0
  853. package/dist/options-C3hZ1fbC.js +10 -0
  854. package/dist/options-C6rEL6U5.js +8 -0
  855. package/dist/options-CAzVf-1T.js +8 -0
  856. package/dist/options-CGKSUFUq.js +5 -0
  857. package/dist/options-CGjGE8xS.js +12 -0
  858. package/dist/options-CK5WiFwG.js +11 -0
  859. package/dist/options-CN7PHkhU.js +8 -0
  860. package/dist/options-CTZNpb2n.js +5 -0
  861. package/dist/options-CUqQ9pm7.js +9 -0
  862. package/dist/options-CVSWgZpY.js +8 -0
  863. package/dist/options-CXFz0xxS.js +8 -0
  864. package/dist/options-CZk_fbbg.js +9 -0
  865. package/dist/options-C_pb1Nd3.js +5 -0
  866. package/dist/options-CbSOj53r.d.ts +52 -0
  867. package/dist/options-ChD15QxJ.js +9 -0
  868. package/dist/options-CkScQRJR.js +12 -0
  869. package/dist/options-CljDnQt2.js +25 -0
  870. package/dist/options-CmraJhd9.js +5 -0
  871. package/dist/options-CoX6VKGb.js +8 -0
  872. package/dist/options-CrC78Tee.js +5 -0
  873. package/dist/options-Ctac2R0Q.js +11 -0
  874. package/dist/options-CyD7OObW.js +17 -0
  875. package/dist/options-D1blDihM.js +9 -0
  876. package/dist/options-D2Gd6VfS.js +8 -0
  877. package/dist/options-D2d1fFuw.js +11 -0
  878. package/dist/options-D40CQzji.js +8 -0
  879. package/dist/options-D7f2VKzj.js +25 -0
  880. package/dist/options-DARkpk2P.js +8 -0
  881. package/dist/options-DCduTMST.js +17 -0
  882. package/dist/options-DDzggjN7.js +8 -0
  883. package/dist/options-DMR68VAC.js +5 -0
  884. package/dist/options-DNKyN5uq.js +20 -0
  885. package/dist/options-DTDxFT6J.js +13 -0
  886. package/dist/options-DWpz3V3F.js +8 -0
  887. package/dist/options-DXqcJyOP.js +10 -0
  888. package/dist/options-DYBQ973I.js +8 -0
  889. package/dist/options-Dh4wu9Ks.js +15 -0
  890. package/dist/options-Dmg1Da9P.js +25 -0
  891. package/dist/options-DsUgamiy.js +5 -0
  892. package/dist/options-EsUh744F.js +13 -0
  893. package/dist/options-Fz6xqu-b.js +5 -0
  894. package/dist/options-HSv8R6h5.js +13 -0
  895. package/dist/options-I8zVkB_y.js +8 -0
  896. package/dist/options-MHhjOoWz.js +5 -0
  897. package/dist/options-MLxMkd5B.js +11 -0
  898. package/dist/options-OJ5zmgr8.js +10 -0
  899. package/dist/options-QKP9FFcK.js +8 -0
  900. package/dist/options-SViK_2x2.js +12 -0
  901. package/dist/options-XgfTctbI.js +5 -0
  902. package/dist/options-_9arpsX9.js +11 -0
  903. package/dist/options-eBPsk4WI.js +11 -0
  904. package/dist/options-kLKILdIu.js +10 -0
  905. package/dist/options-n22NK3PL.js +8 -0
  906. package/dist/options-oeAq4Ho5.js +12 -0
  907. package/dist/options-qU8vgxhO.js +18 -0
  908. package/dist/options-vXMBEWSH.js +5 -0
  909. package/dist/options-wFnK3qWl.js +9 -0
  910. package/dist/options-xVAy3UsV.js +9 -0
  911. package/dist/organizations-Cw7om8uk.js +398 -0
  912. package/dist/orpc/index.d.ts +26 -10
  913. package/dist/orpc/index.js +66 -44
  914. package/dist/otel/index.d.ts +3 -3
  915. package/dist/otel/index.js +42 -7
  916. package/dist/outbox-BTeqjbum.d.ts +181 -0
  917. package/dist/overlay/index.d.ts +233 -0
  918. package/dist/overlay/index.js +554 -0
  919. package/dist/payments-h45bswA-.js +16 -0
  920. package/dist/pg-error-BV_X8Isq.js +26 -0
  921. package/dist/plugin-CDLJRFFg.d.ts +190 -0
  922. package/dist/plugins/actor/index.d.ts +1 -1
  923. package/dist/plugins/actor/index.js +1 -1
  924. package/dist/plugins/rules/index.d.ts +2 -2
  925. package/dist/plugins/rules/index.js +2 -2
  926. package/dist/plugins/soft-delete/index.d.ts +3 -3
  927. package/dist/plugins/soft-delete/index.js +11 -4
  928. package/dist/plugins/tenant/index.d.ts +9 -3
  929. package/dist/plugins/tenant/index.js +17 -3
  930. package/dist/plugins/timestamps/index.d.ts +1 -1
  931. package/dist/plugins/timestamps/index.js +8 -1
  932. package/dist/plugins/validation/index.d.ts +2 -2
  933. package/dist/plugins/validation/index.js +4 -4
  934. package/dist/pool-CwOCsX9e.d.ts +114 -0
  935. package/dist/pool-errors-GMjlCN0d.js +27 -0
  936. package/dist/ports-Ca63W4cW.d.ts +285 -0
  937. package/dist/ports-DAdQyjZz.d.ts +86 -0
  938. package/dist/ports-DGK3KTDH.js +133 -0
  939. package/dist/postgres/index.d.ts +28 -6
  940. package/dist/postgres/index.js +54 -22
  941. package/dist/postgrest-Cw9Bs5gm.d.ts +53 -0
  942. package/dist/powersync/index.d.ts +5 -5
  943. package/dist/powersync/index.js +4 -4
  944. package/dist/powersync/react/index.d.ts +8 -3
  945. package/dist/powersync/react/index.js +11 -3
  946. package/dist/preset/index.d.ts +352 -0
  947. package/dist/preset/index.js +564 -0
  948. package/dist/problem-CEjyhV5T.d.ts +76 -0
  949. package/dist/problem-pIiL3WbE.js +159 -0
  950. package/dist/provider-9gBq9W6k.d.ts +113 -0
  951. package/dist/provider-DKh2xFZb.js +57 -0
  952. package/dist/push-token-D6REHMMw.js +16 -0
  953. package/dist/push-token-asrmi7-6.d.ts +24 -0
  954. package/dist/query/index.d.ts +2 -2
  955. package/dist/query/index.js +1 -1
  956. package/dist/query-Ctz-qKRx.js +303 -0
  957. package/dist/range-DwpWe8e7.js +7 -0
  958. package/dist/range-p5V4rBhZ.d.ts +8 -0
  959. package/dist/rank-keys-DcPMt_Jk.js +60 -0
  960. package/dist/rank-result-DS8IoLup.js +18 -0
  961. package/dist/rank-result-Dngpt2n5.d.ts +14 -0
  962. package/dist/rate-limit--QSiFA6D.js +325 -0
  963. package/dist/rate-limit-BtbddDnE.js +49 -0
  964. package/dist/rate-limit-C88MEAOm.d.ts +41 -0
  965. package/dist/ratelimit-headers-Bsxx0Tj2.js +62 -0
  966. package/dist/react/index.d.ts +9 -9
  967. package/dist/react/index.js +4 -5
  968. package/dist/react/native/index.d.ts +1 -1
  969. package/dist/react/native/index.js +2 -2
  970. package/dist/react/server.d.ts +10 -10
  971. package/dist/react/server.js +4 -4
  972. package/dist/react/session.d.ts +2 -2
  973. package/dist/react-CKXUkwPx.js +410 -0
  974. package/dist/react-controller-Xn-IU44p.js +40 -0
  975. package/dist/react-env-Cc7Vf6eb.js +13 -0
  976. package/dist/react-router/index.d.ts +6 -6
  977. package/dist/react-router/index.js +10 -12
  978. package/dist/read-set-GEb-i0On.js +314 -0
  979. package/dist/realtime/index.d.ts +8 -4
  980. package/dist/realtime/index.js +5 -333
  981. package/dist/realtime-status-D2dw1hOE.js +12 -0
  982. package/dist/realtime-status-DcsO00Gw.d.ts +8 -0
  983. package/dist/refusal-br4Ma9Cf.js +61 -0
  984. package/dist/refusal-oD3ISM9h.d.ts +18 -0
  985. package/dist/replicas-BvIL4_jL.js +94 -0
  986. package/dist/resolve-CAR9oaKW.js +869 -0
  987. package/dist/resolve-w9EpHzuM.d.ts +266 -0
  988. package/dist/resource-B4ka8dDH.d.ts +106 -0
  989. package/dist/resource-C8r5xGqY.js +463 -0
  990. package/dist/resource-DO4gbVi5.js +91 -0
  991. package/dist/resource-execute-D0yQ-8WR.d.ts +12 -0
  992. package/dist/resource-schemas-BJ518zFH.js +79 -0
  993. package/dist/resource-types-D2vEQVXI.d.ts +141 -0
  994. package/dist/resources-BklF-rjz.d.ts +7 -0
  995. package/dist/resources-BlZdLsWQ.js +64 -0
  996. package/dist/respond-C7I8kLK_.d.ts +93 -0
  997. package/dist/respond-DdhZ9Wbn.js +95 -0
  998. package/dist/result-BlgnMB0H.js +128 -0
  999. package/dist/result-Cj3yWhjH.d.ts +298 -0
  1000. package/dist/rrule-zBh3CA1r.js +290 -0
  1001. package/dist/rules-B0-3Iosu.js +261 -0
  1002. package/dist/run-watch-CQRdpy-f.js +53 -0
  1003. package/dist/sales-lines-BAk8In-Z.js +41 -0
  1004. package/dist/sales-lines-C6gafAwg.d.ts +28 -0
  1005. package/dist/sales-shared-DAAGwQwN.d.ts +8 -0
  1006. package/dist/sales-shared-SblIgCgI.js +22 -0
  1007. package/dist/scope-DgWjuXUw.js +90 -0
  1008. package/dist/search-B6h03cAx.js +106 -0
  1009. package/dist/search-BtoWY6n_.js +9 -0
  1010. package/dist/server/index.d.ts +211 -43
  1011. package/dist/server/index.js +296 -19
  1012. package/dist/server-types-OohhIQb2.d.ts +737 -0
  1013. package/dist/session-DiWHtYrO.d.ts +95 -0
  1014. package/dist/settings-BXFn9zpS.js +90 -0
  1015. package/dist/shared-BmMcMoW9.js +89 -0
  1016. package/dist/shared-DbO3Dfms.js +14 -0
  1017. package/dist/shared-as0EG51f.js +60 -0
  1018. package/dist/sign-in-D0xN6E_l.js +360 -0
  1019. package/dist/signatures-B41ApWXA.js +145 -0
  1020. package/dist/signatures-BMdJ7neI.d.ts +43 -0
  1021. package/dist/signers-CXt_wA9S.d.ts +385 -0
  1022. package/dist/signing-keys-Bq9mMCTh.d.ts +90 -0
  1023. package/dist/solid/index.d.ts +9 -18
  1024. package/dist/solid/index.js +4 -9
  1025. package/dist/solid-controller-DLsmrczT.js +33 -0
  1026. package/dist/solid-controller-DqlvYFZa.d.ts +11 -0
  1027. package/dist/solid-start/index.d.ts +8 -12
  1028. package/dist/solid-start/index.js +10 -9
  1029. package/dist/spec/index.d.ts +154 -0
  1030. package/dist/spec/index.js +386 -0
  1031. package/dist/spec-pins-Dqpml2dZ.d.ts +84 -0
  1032. package/dist/spec-pins-S4PymRxp.js +60 -0
  1033. package/dist/sql/index.d.ts +327 -140
  1034. package/dist/sql/index.js +71245 -23282
  1035. package/dist/sql-DJrXG-3Z.js +422 -0
  1036. package/dist/sso-BDva_-4y.js +217 -0
  1037. package/dist/sso-BN0LnMqE.d.ts +131 -0
  1038. package/dist/ssr/index.d.ts +5 -6
  1039. package/dist/ssr/index.js +4 -3
  1040. package/dist/standard-B5fe2gnW.js +25 -0
  1041. package/dist/standard-C3_AAF3g.d.ts +7 -0
  1042. package/dist/stats-D6vkb89f.js +1128 -0
  1043. package/dist/storage/index.d.ts +4 -6
  1044. package/dist/storage/index.js +23 -20
  1045. package/dist/storage-api-Cx-1iWBd.d.ts +582 -0
  1046. package/dist/store-B5qYKsTh.d.ts +68 -0
  1047. package/dist/streams/index.d.ts +5 -5
  1048. package/dist/streams/index.js +6 -5
  1049. package/dist/streams/redis/index.d.ts +1 -1
  1050. package/dist/streams/redis/index.js +6 -12
  1051. package/dist/stripe/index.d.ts +16 -0
  1052. package/dist/stripe/index.js +14 -0
  1053. package/dist/stripe-NVcNOhHy.d.ts +140 -0
  1054. package/dist/stripe-XZrSmDTf.js +32 -0
  1055. package/dist/subject-readers-DiePmaYP.js +46 -0
  1056. package/dist/subject-readers-fxP5wu0s.d.ts +21 -0
  1057. package/dist/subjects-z8VWA_lF.d.ts +69 -0
  1058. package/dist/subscribers-Cq--DL1E.js +34 -0
  1059. package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
  1060. package/dist/supabase-mcp-DomZ-amK.js +28 -0
  1061. package/dist/support-BsKkvA92.js +522 -0
  1062. package/dist/support-view-BbcZR7Io.d.ts +17 -0
  1063. package/dist/svelte/index.d.ts +8 -17
  1064. package/dist/svelte/index.js +3 -3
  1065. package/dist/svelte-controller-CDAujo-_.js +50 -0
  1066. package/dist/svelte-controller-DxxHEHxD.d.ts +10 -0
  1067. package/dist/sveltekit/index.d.ts +11 -13
  1068. package/dist/sveltekit/index.js +12 -14
  1069. package/dist/table-schema-pQlER3jj.js +283 -0
  1070. package/dist/tags-Dw8vKkcI.d.ts +30 -0
  1071. package/dist/tags-PaG0Ns_9.js +84 -0
  1072. package/dist/tanstack-db/index.d.ts +2 -2
  1073. package/dist/tanstack-db/index.js +1 -1
  1074. package/dist/tanstack-db/supabase/index.d.ts +51 -0
  1075. package/dist/tanstack-db/supabase/index.js +268 -0
  1076. package/dist/tanstack-start/index.d.ts +7 -7
  1077. package/dist/tanstack-start/index.js +9 -13
  1078. package/dist/tax-DDZUB_oc.d.ts +273 -0
  1079. package/dist/tax-D_kSCdWU.js +140 -0
  1080. package/dist/tee-Bsisfd7t.js +101 -0
  1081. package/dist/template-DdgYjIZ5.js +123 -0
  1082. package/dist/temporal-CB5Fpo5d.js +79 -0
  1083. package/dist/temporal-required-DqRzr7i0.js +20 -0
  1084. package/dist/tenant-B-fiItlJ.js +27 -0
  1085. package/dist/tenant-DdmVhsff.d.ts +17 -0
  1086. package/dist/tenant-naming-Bsj3Uvap.js +27 -0
  1087. package/dist/testing/index.d.ts +459 -125
  1088. package/dist/testing/index.js +2368 -720
  1089. package/dist/timing-BMCWgpdZ.js +92 -0
  1090. package/dist/topic-ByDz9edV.js +542 -0
  1091. package/dist/topic-cMS7UtM1.d.ts +359 -0
  1092. package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
  1093. package/dist/types-6oiy6rIa.d.ts +205 -0
  1094. package/dist/types-BRTSpOIh.js +5 -0
  1095. package/dist/types-CdP0z5tS.d.ts +564 -0
  1096. package/dist/types-D0W4fnsc.d.ts +162 -0
  1097. package/dist/types-R6syp1el.js +29 -0
  1098. package/dist/types-YfwpIE-d.d.ts +357 -0
  1099. package/dist/types-pNY_UpDs.d.ts +240 -0
  1100. package/dist/types-vaoP9S9_.d.ts +635 -0
  1101. package/dist/undo-CEGIRkPA.js +44 -0
  1102. package/dist/undo-DGo0skyO.d.ts +43 -0
  1103. package/dist/usage-CdlfuS3i.js +250 -0
  1104. package/dist/usage-DM2rzczj.d.ts +202 -0
  1105. package/dist/vault-tOkPLnMB.d.ts +50 -0
  1106. package/dist/vercel-connect/index.d.ts +1 -1
  1107. package/dist/vercel-connect/index.js +6 -12
  1108. package/dist/verify-D63A2ALE.d.ts +142 -0
  1109. package/dist/verify-EQcC3Khp.js +126 -0
  1110. package/dist/version-D87ZteKy.js +4 -0
  1111. package/dist/view-DZ63nqwt.js +105 -0
  1112. package/dist/view-Dv0A949a.d.ts +90 -0
  1113. package/dist/vue/index.d.ts +9 -18
  1114. package/dist/vue/index.js +4 -17
  1115. package/dist/vue-controller-C9tFzqAc.js +32 -0
  1116. package/dist/vue-controller-HPfMTDa2.d.ts +11 -0
  1117. package/dist/watch-DDuWYv0Y.d.ts +84 -0
  1118. package/dist/watch-DT_B3CnJ.js +139 -0
  1119. package/dist/watch-topic-EFpOIIDE.d.ts +28 -0
  1120. package/dist/watch-topic-miuymrli.js +57 -0
  1121. package/dist/wire-DEY0ajW9.js +45 -0
  1122. package/dist/workflow-builder-OrglbXUh.js +681 -0
  1123. package/dist/workflow-sdk/builder/index.d.ts +46 -15
  1124. package/dist/workflow-sdk/builder/index.js +69 -21
  1125. package/dist/workflow-sdk/index.d.ts +75 -2
  1126. package/dist/workflow-sdk/index.js +83 -3
  1127. package/dist/workflow-sdk/world/index.d.ts +51 -20
  1128. package/dist/workflow-sdk/world/index.js +189 -128
  1129. package/dist/workflow-sdk-BZ6qsRlY.js +243 -0
  1130. package/dist/workflow-sdk-q8cLwW1K.d.ts +161 -0
  1131. package/dist/workflow-sdk-world-DPMdBfzn.js +2103 -0
  1132. package/dist/workflows-C-OvZpeg.js +282 -0
  1133. package/dist/workflows-DFQeXDAI.d.ts +243 -0
  1134. package/dist/yjs/index.d.ts +67 -0
  1135. package/dist/yjs/index.js +212 -0
  1136. package/package.json +837 -44
  1137. package/schemas/cli-commands-v1.json +220 -0
  1138. package/schemas/cli-result-v1.json +138 -0
  1139. package/schemas/config-v1.json +4317 -653
  1140. package/schemas/doctor-report-v1.json +27 -1
  1141. package/schemas/snapshot-v2.json +271 -0
  1142. package/schemas/spec-manifest-v1.json +95 -0
  1143. package/skills/better-supabase/SKILL.md +19 -8
  1144. package/skills/better-supabase/references/plugins.md +2 -2
  1145. package/skills/better-supabase/references/troubleshooting.md +20 -20
  1146. package/skills/better-supabase/references/ui-recipes.md +18652 -0
  1147. package/skills/better-supabase-api/SKILL.md +14 -14
  1148. package/skills/better-supabase-api/references/adapters.md +12 -2
  1149. package/skills/better-supabase-api/references/ai.md +4 -4
  1150. package/skills/better-supabase-api/references/expo.md +7 -4
  1151. package/skills/better-supabase-api/references/powersync.md +2 -1
  1152. package/skills/better-supabase-api/references/streams-credentials.md +8 -5
  1153. package/skills/better-supabase-auth/SKILL.md +18 -11
  1154. package/skills/better-supabase-auth/references/authorization-providers.md +5 -5
  1155. package/skills/better-supabase-testing/SKILL.md +2 -2
  1156. package/testing/act-cases.json +370 -0
  1157. package/dist/access-sql-B0dF-SoF.js +0 -181
  1158. package/dist/actor-CQTlc1Hh.d.ts +0 -43
  1159. package/dist/adapter-iKgjHVPx.js +0 -1190
  1160. package/dist/agents-CVHGd7It.d.ts +0 -94
  1161. package/dist/ai-cache-CBWs1W0k.js +0 -80
  1162. package/dist/ai-cache-DaDu_G5L.d.ts +0 -64
  1163. package/dist/ai-chat-7amvXjmQ.d.ts +0 -590
  1164. package/dist/ai-chat-B24UI962.js +0 -743
  1165. package/dist/ai-files-CSPNswUY.js +0 -319
  1166. package/dist/ai-tasks-Cd1HMFvB.d.ts +0 -131
  1167. package/dist/announcements-CiyOs-xP.js +0 -107
  1168. package/dist/announcements-ZRGnScWI.d.ts +0 -72
  1169. package/dist/api-keys-CIjghYjV.d.ts +0 -156
  1170. package/dist/assistant-DwdpDH1q.d.ts +0 -147
  1171. package/dist/attributes-5dYul0u0.js +0 -13
  1172. package/dist/authorization-BFCqamMs.d.ts +0 -172
  1173. package/dist/base64-D2gsioCY.js +0 -42
  1174. package/dist/before-route-CnR0C0Jr.js +0 -30
  1175. package/dist/bind-Bu_ZNa3W.d.ts +0 -62
  1176. package/dist/bind-l4kAvYSv.js +0 -97
  1177. package/dist/block-events-CrT8r7Fe.js +0 -76
  1178. package/dist/block-fields-GFkxl4dP.js +0 -49
  1179. package/dist/block-fields-SJ6fEf3o.d.ts +0 -31
  1180. package/dist/block-helpers-CKtbFcRv.d.ts +0 -37
  1181. package/dist/block-helpers-DWHxHsEQ.js +0 -190
  1182. package/dist/block-hooks-BmjMyXTa.js +0 -114
  1183. package/dist/block-hooks-plbZ0AbJ.d.ts +0 -107
  1184. package/dist/block-transport-BLr-ZgLc.js +0 -59
  1185. package/dist/block-transport-DvaoPuZ9.d.ts +0 -48
  1186. package/dist/bucket-Cl46E3jS.d.ts +0 -347
  1187. package/dist/build-BXIzE6Xv.js +0 -689
  1188. package/dist/channel-_2Mx1Oyu.d.ts +0 -70
  1189. package/dist/channels-CkgQ_X60.js +0 -114
  1190. package/dist/claims-DDBQT6BK.js +0 -61
  1191. package/dist/cli/bin.d.ts +0 -1
  1192. package/dist/cli/codemod-Bl_tQpHn.js +0 -491
  1193. package/dist/cli/command-CK14fP91.js +0 -502
  1194. package/dist/cli/config-B9HkL8nF.js +0 -2
  1195. package/dist/cli/config-DU7EJImt.js +0 -49
  1196. package/dist/cli/config-NiPxAmUF.js +0 -1077
  1197. package/dist/cli/db-DOBPt660.js +0 -52
  1198. package/dist/cli/diff-SjkO5rNr.js +0 -752
  1199. package/dist/cli/dist-DBPdlPYK.js +0 -1112
  1200. package/dist/cli/dist-DRAVaE6w.js +0 -842
  1201. package/dist/cli/dist-DreZ24Sz.js +0 -129
  1202. package/dist/cli/doctor-DJk0aeBi.js +0 -3591
  1203. package/dist/cli/env-CJLbUVPB.js +0 -108
  1204. package/dist/cli/env-qXgyMV6r.js +0 -511
  1205. package/dist/cli/errors-4v4DTtda.js +0 -56
  1206. package/dist/cli/fastest-levenshtein-CFN-lNDv.js +0 -120
  1207. package/dist/cli/gen-CCMc39Dx.js +0 -3100
  1208. package/dist/cli/gen-DRmzPI75.js +0 -2
  1209. package/dist/cli/init-BHuEQrQK.js +0 -765
  1210. package/dist/cli/introspect-DzR2nyQb.js +0 -81
  1211. package/dist/cli/io-DI1mTdSA.js +0 -33
  1212. package/dist/cli/jsonc-BUniUpOk.js +0 -2
  1213. package/dist/cli/keys-BGCnnb-s.js +0 -85
  1214. package/dist/cli/openapi-BlRJ18s3.js +0 -66
  1215. package/dist/cli/project-DZRaBaY7.js +0 -75
  1216. package/dist/cli/prompts-BNcNfAve.js +0 -1142
  1217. package/dist/cli/prompts-BTYQGunc.js +0 -2
  1218. package/dist/cli/read-sets-CETOSFx4.js +0 -223
  1219. package/dist/cli/rolldown-runtime-BPOCksWG.js +0 -24
  1220. package/dist/cli/run-BqDPh9UH.js +0 -361
  1221. package/dist/cli/seed-DQzqT7LP.js +0 -100
  1222. package/dist/cli/skills-QQs4q68J.js +0 -138
  1223. package/dist/cli/sql-B8csQPyn.js +0 -495
  1224. package/dist/cli/sql-layout-D6cphHT3.js +0 -69
  1225. package/dist/cli/style-C0NFdJRL.js +0 -29
  1226. package/dist/cli/supabase-toml-B-bIukQF.js +0 -1095
  1227. package/dist/cli/typegen-version-DeFbtzYI.js +0 -8
  1228. package/dist/cli/version-59gcepIG.js +0 -4
  1229. package/dist/client-CI0Z2zWX.js +0 -277
  1230. package/dist/clone-BfgmLU90.js +0 -21
  1231. package/dist/cloud-event-BnmD5fb9.js +0 -46
  1232. package/dist/cloud-event-C1JCc1bH.d.ts +0 -50
  1233. package/dist/compiler-DY_wkj4R.d.ts +0 -14
  1234. package/dist/compose-BIBNgAnq.js +0 -53
  1235. package/dist/composite--yqry7uW.d.ts +0 -146
  1236. package/dist/composite-DXVUibdi.js +0 -130
  1237. package/dist/config-D44Y7PAv.d.ts +0 -984
  1238. package/dist/config-Dn7F5k9A.js +0 -202
  1239. package/dist/connector-Dv8kK0MO.d.ts +0 -107
  1240. package/dist/connectors-CrpknU0P.d.ts +0 -120
  1241. package/dist/context-BCrWe7ow.d.ts +0 -237
  1242. package/dist/cron-DVPUg5k3.js +0 -145
  1243. package/dist/csv-DCK-PT1n.js +0 -25
  1244. package/dist/define-B-TVjC25.js +0 -1915
  1245. package/dist/define-CJJkkr1-.d.ts +0 -980
  1246. package/dist/embeddings-4ZvFzjsU.js +0 -127
  1247. package/dist/embeddings-C9KGQnXt.d.ts +0 -68
  1248. package/dist/ended-XjeGQ5XW.d.ts +0 -63
  1249. package/dist/entitlements-BKSVGtrG.d.ts +0 -51
  1250. package/dist/entitlements-DRl6ZJUm.js +0 -24
  1251. package/dist/envelope-DqnYGRw7.js +0 -47
  1252. package/dist/errors-B11Duf73.js +0 -266
  1253. package/dist/errors-DLjJHPLK.js +0 -44
  1254. package/dist/escape-like-ImTK0ps_.d.ts +0 -15
  1255. package/dist/eve-gT2Fpjut.d.ts +0 -151
  1256. package/dist/events-DWDhx77e.d.ts +0 -549
  1257. package/dist/executor-BVBFM86G.d.ts +0 -36
  1258. package/dist/executor-Bq28caBo.js +0 -718
  1259. package/dist/executor-C-R4pucm.js +0 -83
  1260. package/dist/executor-CaWigTyR.d.ts +0 -148
  1261. package/dist/executor-DbvExCFC.d.ts +0 -30
  1262. package/dist/executor-De1Of3m3.js +0 -523
  1263. package/dist/executor-DvsBbNBS.d.ts +0 -261
  1264. package/dist/field-errors-BFOa7WhB.d.ts +0 -99
  1265. package/dist/field-errors-VF1yb8yI.js +0 -13
  1266. package/dist/framework-BmzgK32X.d.ts +0 -25
  1267. package/dist/framework-a7aRCIqv.js +0 -51
  1268. package/dist/gateway-C1ssRHnf.d.ts +0 -130
  1269. package/dist/graph-BGyLLFLX.js +0 -265
  1270. package/dist/guards-BnzDvFrz.js +0 -10
  1271. package/dist/history-BZih6SFP.js +0 -64
  1272. package/dist/hooks-1BTCJsiw.js +0 -309
  1273. package/dist/impersonation-DcqaTBHx.js +0 -148
  1274. package/dist/inbox-i7E1ppo6.d.ts +0 -384
  1275. package/dist/index-ACiNPN4Z.d.ts +0 -74
  1276. package/dist/index-Bepi-Hgg.d.ts +0 -206
  1277. package/dist/index-BkWT_uBO.d.ts +0 -51
  1278. package/dist/index-Bxih3l0u.d.ts +0 -81
  1279. package/dist/index-CLg87OBW.d.ts +0 -76
  1280. package/dist/index-CaxrMD1A.d.ts +0 -1
  1281. package/dist/index-CdZKQF98.d.ts +0 -138
  1282. package/dist/index-CewnYSpv.d.ts +0 -267
  1283. package/dist/index-ClmjK_o-.d.ts +0 -55
  1284. package/dist/index-D48jVS-N.d.ts +0 -246
  1285. package/dist/index-DQh4VCc9.d.ts +0 -98
  1286. package/dist/index-DunNRdnT.d.ts +0 -300
  1287. package/dist/json-schema-CvER4kgT.js +0 -502
  1288. package/dist/keys-4MnkWTTh.js +0 -35
  1289. package/dist/kit-CkNzZUqv.d.ts +0 -60
  1290. package/dist/kit-Fm-Fv7q5.js +0 -78
  1291. package/dist/knowledge-BXBbT0Tr.d.ts +0 -176
  1292. package/dist/knowledge-CDmiMLew.js +0 -255
  1293. package/dist/list-query-BRt-zDF7.d.ts +0 -164
  1294. package/dist/list-query-gl808ac1.js +0 -459
  1295. package/dist/live-CTAZQkwl.js +0 -257
  1296. package/dist/message-CaKlqdsX.js +0 -219
  1297. package/dist/message-CfDoR0Y6.d.ts +0 -94
  1298. package/dist/messages-B9-5887d.js +0 -715
  1299. package/dist/messages-DYP0sUTe.d.ts +0 -59
  1300. package/dist/mfa-Daak8ukG.d.ts +0 -54
  1301. package/dist/modules-DpPwzC7E.d.ts +0 -192
  1302. package/dist/modules-dxrVK3ID.js +0 -228
  1303. package/dist/onboarding-BZGHYJks.d.ts +0 -62
  1304. package/dist/outbox-Cq7pPYvl.d.ts +0 -161
  1305. package/dist/path-Cv__-OTj.d.ts +0 -17
  1306. package/dist/plugin-FGY8UhYm.d.ts +0 -151
  1307. package/dist/pool-CAu2nLrL.d.ts +0 -89
  1308. package/dist/postgrest-BLVdEnfe.d.ts +0 -53
  1309. package/dist/problem-BreOl8b8.js +0 -115
  1310. package/dist/problem-DD8LZFjc.d.ts +0 -67
  1311. package/dist/provider-D-UEMvSD.d.ts +0 -113
  1312. package/dist/provider-Di3sRutW.js +0 -57
  1313. package/dist/query-BQ-NaZon.js +0 -303
  1314. package/dist/queue-CLJurhdy.d.ts +0 -427
  1315. package/dist/react-F80mF4-t.js +0 -409
  1316. package/dist/react-topic-seAWjL3_.js +0 -38
  1317. package/dist/read-set-DuKWC9Mj.js +0 -314
  1318. package/dist/refusal-CeJWxmkH.js +0 -61
  1319. package/dist/refusal-DhSU2Vvr.d.ts +0 -15
  1320. package/dist/replicas-CwrYp5Zj.js +0 -94
  1321. package/dist/resolve-ChTYeTEl.d.ts +0 -169
  1322. package/dist/resolve-tJZY3FEa.js +0 -697
  1323. package/dist/resource-BsvzCMlX.js +0 -212
  1324. package/dist/resource-IPS5xi9q.d.ts +0 -74
  1325. package/dist/respond-BUgsXNgk.js +0 -91
  1326. package/dist/respond-DprrgyXX.d.ts +0 -93
  1327. package/dist/result-D7y2fT87.d.ts +0 -282
  1328. package/dist/result-DzUbqgdW.js +0 -128
  1329. package/dist/scope-CDHcS7dE.js +0 -90
  1330. package/dist/search-CUWCRYKL.js +0 -9
  1331. package/dist/server-Bh0EVSwU.d.ts +0 -558
  1332. package/dist/session-ChiXDZdZ.d.ts +0 -72
  1333. package/dist/shared-CBxosKK3.js +0 -75
  1334. package/dist/shared-CxWmcyqB.js +0 -73
  1335. package/dist/sign-in-Cb1mwv6X.js +0 -86
  1336. package/dist/signers-4y62_VIi.d.ts +0 -166
  1337. package/dist/spec-pins--j6mTok4.js +0 -27
  1338. package/dist/spec-pins-C89s6DyW.d.ts +0 -27
  1339. package/dist/standard-BK0cqJ7y.js +0 -25
  1340. package/dist/standard-CYsm7xpT.d.ts +0 -7
  1341. package/dist/stats-D_AD9GGu.js +0 -1123
  1342. package/dist/store-CGjgWu5n.d.ts +0 -68
  1343. package/dist/stripe-BMj5LtsT.js +0 -38
  1344. package/dist/stripe-D04h-QBT.d.ts +0 -136
  1345. package/dist/support-ig_K4PvS.js +0 -314
  1346. package/dist/support-view-CVOJJLpc.d.ts +0 -17
  1347. package/dist/tags-Cx-LnIQP.d.ts +0 -30
  1348. package/dist/tee-CoEppCER.js +0 -101
  1349. package/dist/template--jDkl3UP.js +0 -114
  1350. package/dist/template-CwO38Do8.d.ts +0 -6
  1351. package/dist/temporal-BJGitm-h.js +0 -79
  1352. package/dist/temporal-required-BVvW7SYJ.js +0 -20
  1353. package/dist/tenant-BxNFk9bx.d.ts +0 -17
  1354. package/dist/tenant-I1TEZ_BX.js +0 -27
  1355. package/dist/timing-CyTQPubY.js +0 -92
  1356. package/dist/types-6BdhkmZe.d.ts +0 -340
  1357. package/dist/types-6cYK9pbJ.js +0 -29
  1358. package/dist/types-6rocye-y.d.ts +0 -156
  1359. package/dist/types-AYOvcyep.d.ts +0 -359
  1360. package/dist/types-C05bxW-W.d.ts +0 -220
  1361. package/dist/types-DGs5L0VN.d.ts +0 -192
  1362. package/dist/usage-CrvrL2vw.d.ts +0 -177
  1363. package/dist/vault-wlbBhqm7.d.ts +0 -50
  1364. package/dist/verify-DL41hbvY.js +0 -232
  1365. package/dist/verify-DPuWngD4.d.ts +0 -172
  1366. package/dist/version-C6OfRAIn.js +0 -4
  1367. package/dist/view-BeFcRV6G.js +0 -99
  1368. package/dist/view-CF7ihnkg.d.ts +0 -87
  1369. package/dist/watch-DI34G86j.d.ts +0 -60
  1370. package/dist/watch-Xuxrvxq-.js +0 -122
  1371. package/dist/wire-DtZQ4sdE.js +0 -45
  1372. package/dist/workflow-builder-DJ1oHn8g.js +0 -398
  1373. package/dist/workflow-sdk-B3yLD6Br.d.ts +0 -98
  1374. package/dist/workflow-sdk-C2WJ_G2O.js +0 -173
  1375. package/dist/workflow-sdk-world-D-prir6O.js +0 -1397
  1376. package/dist/workflows-B0j9WKPu.d.ts +0 -185
  1377. package/dist/workflows-wu1WWBn7.js +0 -216
@@ -1,1915 +0,0 @@
1
- import { n as isPlainObject, t as cloneValue } from "./clone-BfgmLU90.js";
2
- import { t as DbException } from "./db-exception-CnWcYPxL.js";
3
- import { n as dbError } from "./errors-B11Duf73.js";
4
- import { n as invalidRequest, t as builderFor } from "./build-BXIzE6Xv.js";
5
- import { t as lookupOf } from "./lookup-BaP5bI27.js";
6
- import { i as or, n as column, r as not, t as and } from "./types-6cYK9pbJ.js";
7
- import { c as optionalTemporal, l as provideTemporal, s as nowInstant, u as providedTemporal } from "./temporal-BJGitm-h.js";
8
- import { i as encodeValue, n as decodeScalar, r as decodeValue } from "./wire-DtZQ4sdE.js";
9
- import { a as ok, c as withErrorMapper, r as err, s as toDbError, t as AsyncResult } from "./result-DzUbqgdW.js";
10
- import { t as invalidationTargets } from "./tables-Cb-3_VWc.js";
11
- import { t as consoleLogger } from "./logger-glM28NVN.js";
12
- import { i as orderPlugins } from "./plugin-tfXW1-qO.js";
13
- import { t as simplify } from "./simplify-DDO0j0LI.js";
14
- import { a as postgrestExecutor, c as invalidTuning, l as tuningOf, n as StatsRecorder, o as NO_TUNING, r as recordStats, s as deadline } from "./stats-D_AD9GGu.js";
15
- import { d as isQuerySpec, f as specTables, n as checkParams, o as isReadSet, r as containsPlaceholder, t as bindParams, u as createSpecs } from "./read-set-DuKWC9Mj.js";
16
- import { a as toBase64Url, t as base64ToText } from "./base64-D2gsioCY.js";
17
- import { t as isList } from "./guards-BnzDvFrz.js";
18
- import { t as vectorLiteral } from "./search-CUWCRYKL.js";
19
- import { n as validate } from "./standard-BK0cqJ7y.js";
20
- //#region src/core/batch.ts
21
- /**
22
- * A signal that aborts once every reader's signal has, so one reader giving
23
- * up never cancels the operations of the others. `undefined` when a reader
24
- * has no signal.
25
- */
26
- function allAborted(signals) {
27
- const present = signals.filter((signal) => signal !== void 0);
28
- if (present.length < signals.length) return void 0;
29
- if (present.length === 1) return present[0];
30
- const controller = new AbortController();
31
- const check = () => {
32
- if (present.every((signal) => signal.aborted)) controller.abort();
33
- };
34
- for (const signal of present) signal.addEventListener("abort", check, { once: true });
35
- check();
36
- return controller.signal;
37
- }
38
- /**
39
- * Holds operations until each of `readers` has either submitted one or
40
- * finished, then runs the held ones through `batch` together. A reader that
41
- * runs a second operation joins the next batch.
42
- */
43
- function batchingExecutor(base, readers) {
44
- let running = readers;
45
- const queue = [];
46
- const flush = () => {
47
- if (queue.length === 0 || queue.length < running) return;
48
- const items = queue.splice(0);
49
- const { signal: _first, ...shared } = items[0].context;
50
- const signal = allAborted(items.map((item) => item.context.signal));
51
- const context = signal ? {
52
- ...shared,
53
- signal
54
- } : shared;
55
- for (const item of items) item.context.signal?.addEventListener("abort", () => {
56
- item.resolve(err(dbError("aborted", "The request was aborted")));
57
- }, { once: true });
58
- base.batch(items.map((item) => item.op), context).then((results) => {
59
- items.forEach((item, index) => {
60
- item.resolve(results[index] ?? err(toDbError(/* @__PURE__ */ new Error(`Executor "${base.name}" returned too few results`))));
61
- });
62
- }, (cause) => {
63
- for (const item of items) item.resolve(err(toDbError(cause)));
64
- });
65
- };
66
- return {
67
- executor: {
68
- name: base.name,
69
- execute: (op, context) => new Promise((resolve) => {
70
- queue.push({
71
- op,
72
- context,
73
- resolve
74
- });
75
- flush();
76
- }),
77
- ...base.rpc ? { rpc: base.rpc.bind(base) } : {}
78
- },
79
- done: () => {
80
- running -= 1;
81
- flush();
82
- }
83
- };
84
- }
85
- //#endregion
86
- //#region src/core/cache.ts
87
- /** Primary key of a row as a string, or `undefined` when it isn't returned. */
88
- function rowKey(table, row) {
89
- if (table.primaryKey.length === 0) return void 0;
90
- const parts = table.primaryKey.map((column) => row[column]);
91
- if (parts.some((part) => part === void 0 || part === null)) return void 0;
92
- return parts.map(String).join(",");
93
- }
94
- function cacheTargetOf(meta, notice) {
95
- const table = meta.tables[notice.table];
96
- const rows = notice.rows.length > 0 ? notice.rows : notice.keys ?? [];
97
- const ids = table ? [...new Set(rows.flatMap((row) => rowKey(table, row) ?? []))] : [];
98
- const tenant = notice.tenant ?? notice.context.tenant;
99
- return {
100
- table: notice.table,
101
- tables: notice.kind === "delete" ? invalidationTargets(meta, notice.table) : [notice.table],
102
- ids,
103
- ...tenant === void 0 ? {} : { tenant }
104
- };
105
- }
106
- /** One target per table an RPC changes; RPCs report no row ids. */
107
- function rpcCacheTargets(meta, notice) {
108
- const tenant = notice.context.tenant;
109
- return notice.invalidates.map((table) => ({
110
- table,
111
- tables: invalidationTargets(meta, table),
112
- ids: [],
113
- ...tenant === void 0 ? {} : { tenant }
114
- }));
115
- }
116
- /** Records invalidations. For tests and for checking what a mutation touches. */
117
- function memoryCache() {
118
- const invalidated = [];
119
- return {
120
- name: "memory",
121
- invalidated,
122
- invalidate: (target) => {
123
- invalidated.push(target);
124
- },
125
- clear: () => {
126
- invalidated.length = 0;
127
- }
128
- };
129
- }
130
- //#endregion
131
- //#region src/core/events.ts
132
- function deepFreeze(value) {
133
- if (Array.isArray(value) || isPlainObject(value)) {
134
- for (const item of Object.values(value)) deepFreeze(item);
135
- Object.freeze(value);
136
- }
137
- return value;
138
- }
139
- /**
140
- * The `error` event for `error`: a frozen copy, so a handler can't change
141
- * the `DbError` the caller gets back (invariant 5).
142
- */
143
- function errorEvent(error, table) {
144
- const copy = deepFreeze(cloneValue(error));
145
- return table === void 0 ? { error: copy } : {
146
- table,
147
- error: copy
148
- };
149
- }
150
- /** More handlers than this for one event usually means a missing unsubscribe. */
151
- const HANDLER_WARNING = 50;
152
- function isDevelopment() {
153
- return typeof process !== "undefined" && process.env["NODE_ENV"] !== "production";
154
- }
155
- /**
156
- * Observers only: a handler that throws is reported to the logger and never
157
- * changes a result.
158
- */
159
- var EventHub = class {
160
- #handlers = /* @__PURE__ */ new Map();
161
- #warned = /* @__PURE__ */ new Set();
162
- #pending = /* @__PURE__ */ new Set();
163
- logger;
164
- constructor(logger = consoleLogger) {
165
- this.logger = logger;
166
- }
167
- on(name, handler) {
168
- let set = this.#handlers.get(name);
169
- if (!set) {
170
- set = /* @__PURE__ */ new Set();
171
- this.#handlers.set(name, set);
172
- }
173
- set.add(handler);
174
- if (set.size > HANDLER_WARNING && !this.#warned.has(name) && isDevelopment()) {
175
- this.#warned.add(name);
176
- this.logger.warn(`${set.size} "${name}" handlers are registered; call the function on() returns to remove one you no longer need`);
177
- }
178
- return () => {
179
- set.delete(handler);
180
- };
181
- }
182
- has(name) {
183
- return (this.#handlers.get(name)?.size ?? 0) > 0;
184
- }
185
- /**
186
- * Keeps async work a handler started (a sink send) until it settles, so
187
- * adapters can hand it to `after()` or `waitUntil`. Its outcome is ignored:
188
- * handlers report their own failures.
189
- */
190
- track(work) {
191
- const settled = Promise.resolve(work).then(() => void 0, () => void 0);
192
- this.#pending.add(settled);
193
- settled.then(() => this.#pending.delete(settled));
194
- }
195
- /** Whether tracked work is still running. */
196
- get pending() {
197
- return this.#pending.size > 0;
198
- }
199
- /** Resolves once the work tracked so far has settled. Never rejects. */
200
- async settled() {
201
- await Promise.all(this.#pending);
202
- }
203
- emit(name, event) {
204
- const set = this.#handlers.get(name);
205
- if (!set) return;
206
- for (const handler of set) try {
207
- handler(event);
208
- } catch (cause) {
209
- this.logger.error(`"${name}" handler threw`, { cause });
210
- }
211
- }
212
- };
213
- //#endregion
214
- //#region src/core/diagnostics.ts
215
- /**
216
- * Debug records for the `diagnostics` option, after the Supabase SDK
217
- * capability `client.observability.diagnostic_logging`
218
- * (`SPEC_PINS.supabaseSdkCapabilities`). Fields are names, kinds, counts and
219
- * timings only: never tokens, keys, row values, filters, query strings,
220
- * headers or database error messages, which can quote the data.
221
- */
222
- function logDiagnostics(events) {
223
- const logger = { debug(message, fields) {
224
- try {
225
- events.logger.debug(message, fields);
226
- } catch {}
227
- } };
228
- events.on("query", (event) => {
229
- logger.debug(`${event.operation} ${event.table} ${event.ok ? "ok" : "failed"} in ${String(Math.round(event.durationMs))}ms`, {
230
- table: event.table,
231
- operation: event.operation,
232
- ok: event.ok,
233
- durationMs: event.durationMs,
234
- rows: event.rows,
235
- truncated: event.truncated
236
- });
237
- });
238
- events.on("error", ({ table, error }) => {
239
- logger.debug(`${error.kind} error${table ? ` on ${table}` : ""}`, {
240
- ...table ? { table } : {},
241
- kind: error.kind,
242
- status: error.status,
243
- ...error.code ? { code: error.code } : {}
244
- });
245
- });
246
- events.on("refresh", (event) => {
247
- logger.debug(`session refresh ${event.ok ? "ok" : "failed"} in ${String(Math.round(event.durationMs))}ms`, {
248
- ok: event.ok,
249
- shared: event.shared,
250
- durationMs: event.durationMs
251
- });
252
- });
253
- events.on("auth", (event) => {
254
- logger.debug(`auth from ${event.source}: ${event.ok ? "user" : event.reason ?? "no user"}`, {
255
- source: event.source,
256
- ok: event.ok,
257
- ...event.reason ? { reason: event.reason } : {}
258
- });
259
- });
260
- }
261
- /** The event hub of a new definition, with the diagnostic handlers when `diagnostics` is on. */
262
- function definitionEvents(options) {
263
- const events = new EventHub(options.logger ?? consoleLogger);
264
- if (options.diagnostics === true) logDiagnostics(events);
265
- return events;
266
- }
267
- //#endregion
268
- //#region src/ir/codec.ts
269
- /** Whether decoding `selection` changes anything, so plain reads skip the walk. */
270
- function needsDecoding(selection) {
271
- let needs = decodes.get(selection);
272
- if (needs === void 0) {
273
- needs = computeNeedsDecoding(selection);
274
- decodes.set(selection, needs);
275
- }
276
- return needs;
277
- }
278
- const decodes = /* @__PURE__ */ new WeakMap();
279
- function computeNeedsDecoding(selection) {
280
- return selection.aggregate !== void 0 || selection.columns.some((column) => column.codec !== void 0) || selection.includes.some((include) => include.count !== void 0 || include.aggregate !== void 0 || needsDecoding(include.selection));
281
- }
282
- /** PostgREST returns `[{ count }]` for a `(count)` embed; SQL returns the number. */
283
- function countOf$1(value) {
284
- if (Array.isArray(value)) {
285
- const first = value[0];
286
- return Number(first?.count ?? 0);
287
- }
288
- return Number(value ?? 0);
289
- }
290
- function measureOf(measure, value) {
291
- if (value === void 0 || value === null) return null;
292
- return measure.codec ? decodeScalar(measure.codec, value) : value;
293
- }
294
- /** Adds `value` under `row[key][name]`, next to what is already there. */
295
- function fold(row, folded, key, name, value) {
296
- let target = folded.get(key);
297
- if (!target) {
298
- target = { ...row[key] };
299
- folded.set(key, target);
300
- row[key] = target;
301
- }
302
- target[name] = value;
303
- }
304
- const droppedKeys = /* @__PURE__ */ new WeakMap();
305
- /** Wire keys that decoding folds into `_count`, `_sum` and the rest. */
306
- function droppedOf(selection) {
307
- let dropped = droppedKeys.get(selection);
308
- if (!dropped) {
309
- dropped = /* @__PURE__ */ new Set([...selection.aggregate?.measures.map((measure) => measure.key) ?? [], ...selection.includes.filter((include) => include.count !== void 0 || include.aggregate !== void 0).map((include) => include.alias)]);
310
- droppedKeys.set(selection, dropped);
311
- }
312
- return dropped;
313
- }
314
- function decodeRow$1(selection, row) {
315
- const dropped = droppedOf(selection);
316
- const out = {};
317
- for (const key in row) if (!dropped.has(key) && Object.hasOwn(row, key)) out[key] = row[key];
318
- const folded = /* @__PURE__ */ new Map();
319
- for (const column of selection.columns) {
320
- if (!column.codec || !(column.alias in out)) continue;
321
- try {
322
- out[column.alias] = decodeValue(column.codec, out[column.alias]);
323
- } catch (cause) {
324
- if (!(cause instanceof DbException) || cause.error.kind !== "invalid_value") throw cause;
325
- throw new DbException(dbError("invalid_value", `${column.alias}: ${cause.error.message}`, { column: column.alias }));
326
- }
327
- }
328
- if (selection.aggregate) {
329
- if (selection.aggregate.count) out["_count"] = countOf$1(out["_count"]);
330
- for (const measure of selection.aggregate.measures) {
331
- const value = row[measure.key];
332
- fold(out, folded, `_${measure.fn}`, measure.alias, measureOf(measure, value));
333
- }
334
- }
335
- for (const include of selection.includes) {
336
- const value = row[include.alias];
337
- if (include.count !== void 0) {
338
- if (!(include.alias in row)) continue;
339
- fold(out, folded, "_count", include.count, countOf$1(value));
340
- continue;
341
- }
342
- if (include.aggregate !== void 0) {
343
- if (!(include.alias in row)) continue;
344
- const inner = Array.isArray(value) ? value[0] : value;
345
- const measures = {};
346
- for (const measure of include.selection.aggregate?.measures ?? []) measures[measure.alias] = measureOf(measure, inner?.[measure.key]);
347
- fold(out, folded, `_${include.aggregate.fn}`, include.aggregate.name, measures);
348
- continue;
349
- }
350
- if (Array.isArray(value)) out[include.alias] = value.map((item) => decodeRow$1(include.selection, item));
351
- else if (value && typeof value === "object") out[include.alias] = decodeRow$1(include.selection, value);
352
- }
353
- return out;
354
- }
355
- /** Applies column codecs to returned rows, including embedded relations. */
356
- function decodeRows(selection, rows, checked = false) {
357
- if (!selection || !checked && !needsDecoding(selection)) return rows;
358
- return rows.map((row) => decodeRow$1(selection, row));
359
- }
360
- //#endregion
361
- //#region src/core/cursor.ts
362
- function isBound(value) {
363
- return typeof value === "object" && value !== null && "s" in value && typeof value.s === "string" && "v" in value && Array.isArray(value.v);
364
- }
365
- function parse(cursor) {
366
- try {
367
- return JSON.parse(base64ToText(cursor));
368
- } catch {
369
- return;
370
- }
371
- }
372
- /** Opaque, URL-safe keyset cursor. */
373
- function encodeCursor(values) {
374
- return toBase64Url(JSON.stringify(values));
375
- }
376
- /** The values of a cursor from `encodeCursor` or from `paginate()`. */
377
- function decodeCursor(cursor) {
378
- const parsed = parse(cursor);
379
- if (isList(parsed)) return [...parsed];
380
- return isBound(parsed) ? parsed.v : void 0;
381
- }
382
- /** A short FNV-1a hash of `text`, enough to tell two sorts apart. */
383
- function sortKey(text) {
384
- let hash = 2166136261;
385
- for (let index = 0; index < text.length; index++) {
386
- hash ^= text.codePointAt(index) ?? 0;
387
- hash = Math.imul(hash, 16777619);
388
- }
389
- return (hash >>> 0).toString(36);
390
- }
391
- /** A `paginate()` cursor that only continues the sort `key` names. */
392
- function encodeBoundCursor(values, key) {
393
- return toBase64Url(JSON.stringify({
394
- s: key,
395
- v: values
396
- }));
397
- }
398
- /**
399
- * The values of a `paginate()` cursor made for the sort `key`. `sort` means
400
- * the cursor is valid but continues another sort or table.
401
- */
402
- function decodeBoundCursor(cursor, key) {
403
- const parsed = parse(cursor);
404
- if (!isBound(parsed)) return { invalid: "cursor" };
405
- return parsed.s === key ? { values: parsed.v } : { invalid: "sort" };
406
- }
407
- //#endregion
408
- //#region src/core/keyset.ts
409
- /**
410
- * The rows after the cursor `values` in `orderBy` order, as an OR of ANDs:
411
- * `a > x or (a = x and b > y)`. The SQL compiler sends that shape as the row
412
- * comparison `(a, b) > (x, y)`. Nulls sort where Postgres puts them: last
413
- * for `asc`, first for `desc`, unless the term says otherwise.
414
- */
415
- function keysetCondition(orderBy, values, nullable) {
416
- const isNull = (name) => column(name, "is", null);
417
- const branches = orderBy.flatMap((term, index) => {
418
- const value = values[index];
419
- const nullsFirst = (term.nulls ?? (term.direction === "desc" ? "first" : "last")) === "first";
420
- const after = column(term.column, term.direction === "asc" ? "gt" : "lt", value);
421
- const step = value === null ? nullsFirst ? not(isNull(term.column)) : void 0 : nullsFirst || !nullable(term.column) ? after : or(after, isNull(term.column));
422
- if (!step) return [];
423
- const equal = orderBy.slice(0, index).map((prev, prevIndex) => values[prevIndex] === null ? isNull(prev.column) : column(prev.column, "eq", values[prevIndex]));
424
- return [and(...equal, step) ?? step];
425
- });
426
- if (branches.length === 0) return column(orderBy[0]?.column ?? "", "in", []);
427
- const after = or(...branches);
428
- const [first] = orderBy;
429
- if (orderBy.length < 2 || !first || values[0] === null || nullable(first.column)) return after;
430
- const bound = column(first.column, first.direction === "asc" ? "gte" : "lte", values[0]);
431
- return and(bound, after) ?? after;
432
- }
433
- //#endregion
434
- //#region src/core/row-keys.ts
435
- /** App-cased primary keys of `rows`, or of a `where` that pins the primary key. */
436
- function keysOf(op, rows) {
437
- const { primaryKey } = op.table;
438
- if (primaryKey.length === 0) return void 0;
439
- const fromRows = rows.flatMap((row) => primaryKey.every((name) => row[name] !== void 0 && row[name] !== null) ? [Object.fromEntries(primaryKey.map((name) => [name, row[name]]))] : []);
440
- if (fromRows.length > 0) return fromRows;
441
- if (op.kind === "insert") return void 0;
442
- return keysFromWhere(op.table, op.where);
443
- }
444
- function keysFromWhere(table, where) {
445
- if (!where) return void 0;
446
- const { byDb } = lookupOf(table);
447
- const pinned = /* @__PURE__ */ new Map();
448
- const items = [];
449
- const flatten = (condition) => {
450
- if (condition.kind === "and") condition.items.forEach(flatten);
451
- else items.push(condition);
452
- };
453
- flatten(where);
454
- for (const item of items) {
455
- if (item.kind !== "column" || item.path) continue;
456
- const app = byDb.get(item.column)?.[0];
457
- if (app === void 0 || !table.primaryKey.includes(app)) continue;
458
- if (item.op === "eq") pinned.set(app, [item.value]);
459
- else if (item.op === "in" && Array.isArray(item.value)) pinned.set(app, item.value);
460
- }
461
- if (pinned.size !== table.primaryKey.length) return void 0;
462
- const [first, ...rest] = table.primaryKey;
463
- if (first === void 0) return void 0;
464
- if (rest.length === 0) return (pinned.get(first) ?? []).map((value) => ({ [first]: value }));
465
- if ([...pinned.values()].some((values) => values.length !== 1)) return void 0;
466
- return [Object.fromEntries(table.primaryKey.map((name) => [name, pinned.get(name)?.[0]]))];
467
- }
468
- /**
469
- * Rows in conflict-key order, so concurrent upserts lock the same rows in
470
- * the same order instead of deadlocking.
471
- */
472
- function byKey(rows, columns) {
473
- const compare = (left, right) => {
474
- if (left === right) return 0;
475
- if (left === null || left === void 0) return 1;
476
- if (right === null || right === void 0) return -1;
477
- if (typeof left === "number" && typeof right === "number") return left - right;
478
- if (typeof left === "bigint" && typeof right === "bigint") return left < right ? -1 : 1;
479
- const a = String(left);
480
- const b = String(right);
481
- return a < b ? -1 : a > b ? 1 : 0;
482
- };
483
- const keyed = rows.map((row) => ({
484
- row,
485
- key: columns.map((column) => {
486
- const value = row[column];
487
- return typeof value === "object" && value !== null ? String(value) : value;
488
- })
489
- }));
490
- keyed.sort((left, right) => {
491
- for (let index = 0; index < columns.length; index++) {
492
- const order = compare(left.key[index], right.key[index]);
493
- if (order !== 0) return order;
494
- }
495
- return 0;
496
- });
497
- return keyed.map((entry) => entry.row);
498
- }
499
- //#endregion
500
- //#region src/core/write-args.ts
501
- const COUNT_MODES = /* @__PURE__ */ new Set([
502
- "exact",
503
- "planned",
504
- "estimated"
505
- ]);
506
- function isCountMode(value) {
507
- return COUNT_MODES.has(value);
508
- }
509
- /** `maxAffected` from a call, or a message when it isn't a non-negative integer. */
510
- function maxAffectedOf(args) {
511
- const value = args["maxAffected"];
512
- if (value === void 0) return {};
513
- return typeof value === "number" && Number.isInteger(value) && value >= 0 ? { maxAffected: value } : { invalid: `"maxAffected" must be a non-negative integer, got ${String(value)}` };
514
- }
515
- /** The `count` mode a mutation asks for, when it names a valid one. */
516
- function countOf(args) {
517
- const count = args?.["count"];
518
- return isCountMode(count) ? { count } : {};
519
- }
520
- //#endregion
521
- //#region src/core/repository.ts
522
- const KNOWN_KEYS = /* @__PURE__ */ new Set([
523
- "select",
524
- "include",
525
- "where",
526
- "orderBy",
527
- "limit",
528
- "offset",
529
- "signal",
530
- "returning",
531
- "expect",
532
- "onConflict",
533
- "ignoreDuplicates",
534
- "page",
535
- "size",
536
- "count",
537
- "after",
538
- "mode",
539
- "data",
540
- "groupBy",
541
- "_count",
542
- "_sum",
543
- "_avg",
544
- "_min",
545
- "_max",
546
- "timeout",
547
- "retry",
548
- "maxAffected",
549
- "defaultToNull"
550
- ]);
551
- const NO_OPTIONS = Object.freeze({});
552
- function optionsOf(args) {
553
- if (!args) return NO_OPTIONS;
554
- let options;
555
- for (const key in args) if (!KNOWN_KEYS.has(key) && Object.hasOwn(args, key)) (options ??= {})[key] = args[key];
556
- return options ?? NO_OPTIONS;
557
- }
558
- const hooksByPlugins = /* @__PURE__ */ new WeakMap();
559
- function hooksOf(plugins) {
560
- let hooks = hooksByPlugins.get(plugins);
561
- if (!hooks) {
562
- hooks = {
563
- transformQuery: plugins.filter((plugin) => plugin.transformQuery),
564
- beforeMutation: plugins.filter((plugin) => plugin.beforeMutation),
565
- afterMutation: plugins.filter((plugin) => plugin.afterMutation)
566
- };
567
- hooksByPlugins.set(plugins, hooks);
568
- }
569
- return hooks;
570
- }
571
- function isThenable(value) {
572
- return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
573
- }
574
- function signalOf(args) {
575
- const signal = args?.["signal"];
576
- return signal instanceof AbortSignal ? signal : void 0;
577
- }
578
- function cloneRows(rows) {
579
- return rows.map((row) => cloneValue(row));
580
- }
581
- function mutationKind(op) {
582
- if (op.kind === "insert") return op.onConflict ? "upsert" : "insert";
583
- return op.kind;
584
- }
585
- /** Runs operations through plugins, the executor and the event hub. */
586
- var OperationRunner = class {
587
- runtime;
588
- #hooks;
589
- constructor(runtime) {
590
- this.runtime = runtime;
591
- this.#hooks = hooksOf(runtime.plugins);
592
- }
593
- hookArgs(table, options, signal) {
594
- return {
595
- table,
596
- schema: this.runtime.meta,
597
- context: this.runtime.context,
598
- options,
599
- now: this.runtime.now,
600
- ...signal ? { signal } : {}
601
- };
602
- }
603
- async run(op, options, signal, tuning = NO_TUNING) {
604
- const { runtime } = this;
605
- const hooks = this.#hooks;
606
- if ("invalid" in tuning) return this.fail(op.table, dbError("invalid_request", tuning.invalid));
607
- const { timeout, retry } = {
608
- ...runtime.tuning,
609
- ...tuning
610
- };
611
- const invalid = invalidTuning({
612
- timeout,
613
- retry
614
- });
615
- if (invalid) return this.fail(op.table, dbError("invalid_request", invalid));
616
- let current = op;
617
- if (hooks.transformQuery.length > 0 || hooks.beforeMutation.length > 0) {
618
- const hook = this.hookArgs(op.table, options, signal);
619
- let active = "";
620
- try {
621
- for (const plugin of hooks.transformQuery) {
622
- active = `plugin "${plugin.name}" transformQuery`;
623
- current = plugin.transformQuery(current, hook);
624
- }
625
- if (current.kind !== "select") {
626
- let mutation = current;
627
- for (const plugin of hooks.beforeMutation) {
628
- active = `plugin "${plugin.name}" beforeMutation`;
629
- const next = plugin.beforeMutation(mutation, hook);
630
- mutation = isThenable(next) ? await next : next;
631
- }
632
- current = mutation;
633
- }
634
- } catch (cause) {
635
- if (cause instanceof DbException) return this.fail(op.table, cause.error);
636
- return this.fail(op.table, {
637
- ...toDbError(cause),
638
- details: `${active} threw`
639
- });
640
- }
641
- }
642
- if (current.kind === "update" && Object.keys(current.set).length === 0) return this.fail(op.table, dbError("invalid_request", `The update on "${op.table.key}" sets no columns`));
643
- const timed = runtime.events.has("query");
644
- const started = timed ? performance.now() : 0;
645
- const executed = await this.#execute(current, signal, timeout, retry);
646
- const selection = current.kind === "select" ? current.selection : current.returning;
647
- let result = executed;
648
- if (executed.ok && selection && needsDecoding(selection)) try {
649
- result = ok({
650
- ...executed.data,
651
- rows: decodeRows(selection, executed.data.rows, true)
652
- });
653
- } catch (cause) {
654
- if (cause instanceof DbException) return this.fail(op.table, cause.error);
655
- throw cause;
656
- }
657
- const rows = result.ok ? result.data.rows.length : 0;
658
- const truncated = current.kind === "select" && current.limit === void 0 && current.single === void 0 && !current.head && rows >= runtime.maxRows;
659
- if (truncated && !runtime.truncatedTables.has(op.table.key)) {
660
- runtime.truncatedTables.add(op.table.key);
661
- runtime.events.logger.warn(`a read on ${op.table.key} returned ${rows} rows, the maxRows cap; add a limit or use paginate()`, {
662
- table: op.table.key,
663
- maxRows: runtime.maxRows
664
- });
665
- }
666
- if (timed) runtime.events.emit("query", {
667
- table: op.table.key,
668
- operation: current.kind,
669
- ok: result.ok,
670
- durationMs: performance.now() - started,
671
- rows,
672
- truncated
673
- });
674
- if (!result.ok) return this.fail(op.table, result.error);
675
- if (current.kind !== "select") await this.afterMutation(current, result.data);
676
- return result;
677
- }
678
- /**
679
- * Runs `op` without plugins or decoding, with the connection's timeout and
680
- * retry, and fails on `table`: for reads the library makes itself, such
681
- * as the scores of `db.$search({ score: true })`.
682
- */
683
- async runInternal(op, table, signal) {
684
- const { timeout, retry } = this.runtime.tuning ?? NO_TUNING;
685
- const invalid = invalidTuning({
686
- timeout,
687
- retry
688
- });
689
- if (invalid) return this.fail(table, dbError("invalid_request", invalid));
690
- const executed = await this.#execute(op, signal, timeout, retry);
691
- return executed.ok ? executed : this.fail(table, {
692
- ...executed.error,
693
- table: table.key
694
- });
695
- }
696
- async #execute(op, signal, timeout, retry) {
697
- const limit = deadline(signal, timeout);
698
- const context = {
699
- errorMappers: this.runtime.errorMappers,
700
- ...limit.signal ? { signal: limit.signal } : {},
701
- ...retry === void 0 ? {} : { retry }
702
- };
703
- let executed;
704
- try {
705
- executed = await this.runtime.executor.execute(op, context);
706
- } finally {
707
- limit.clear();
708
- }
709
- if (!executed.ok && limit.timedOut()) return err(dbError("timeout", `The request timed out after ${timeout} ms`));
710
- return executed;
711
- }
712
- async afterMutation(op, data) {
713
- const { runtime } = this;
714
- const plugins = this.#hooks.afterMutation;
715
- const listening = runtime.events.has("mutation");
716
- if (plugins.length === 0 && !listening) return;
717
- const kind = mutationKind(op);
718
- const rows = cloneRows(data.rows);
719
- const keys = keysOf(op, rows);
720
- const { tenant } = runtime.context;
721
- const event = {
722
- table: op.table,
723
- kind,
724
- intent: op.intent ?? kind,
725
- rows,
726
- ...keys ? { keys } : {},
727
- ...tenant === void 0 ? {} : { tenant },
728
- context: runtime.context
729
- };
730
- for (const plugin of plugins) try {
731
- const pending = plugin.afterMutation(event);
732
- if (isThenable(pending)) await pending;
733
- } catch (cause) {
734
- runtime.events.logger.error(`plugin "${plugin.name}" afterMutation threw`, { cause });
735
- }
736
- if (listening) runtime.events.emit("mutation", {
737
- table: op.table.key,
738
- kind: event.kind,
739
- ...event.intent ? { intent: event.intent } : {},
740
- rows: event.rows,
741
- ...event.keys ? { keys: event.keys } : {},
742
- ...event.tenant === void 0 ? {} : { tenant: event.tenant },
743
- context: event.context
744
- });
745
- }
746
- fail(table, error) {
747
- const withTable = error.table ? error : {
748
- ...error,
749
- table: table.key
750
- };
751
- if (this.runtime.events.has("error")) this.runtime.events.emit("error", errorEvent(withTable, table.key));
752
- return err(withTable);
753
- }
754
- };
755
- const sensitiveByTable = /* @__PURE__ */ new WeakMap();
756
- const primaryOrders = /* @__PURE__ */ new WeakMap();
757
- const existsSelections = /* @__PURE__ */ new WeakMap();
758
- /** Database names of the table's `config.sensitive` columns. */
759
- function sensitiveColumnsOf(table) {
760
- let sensitive = sensitiveByTable.get(table);
761
- if (!sensitive) {
762
- sensitive = new Set(lookupOf(table).entries.filter(([, column]) => column.sensitive).map(([, column]) => column.db));
763
- sensitiveByTable.set(table, sensitive);
764
- }
765
- return sensitive;
766
- }
767
- /** Creates the runtime repository object for one table. */
768
- function createRepository(runner, table) {
769
- const { builder } = runner.runtime;
770
- const sensitiveDb = sensitiveColumnsOf(table);
771
- const selection = (args) => builder.selection(table, args?.["select"], args?.["include"]);
772
- const rowCount = (args, name) => {
773
- const value = args?.[name];
774
- if (value === void 0) return void 0;
775
- if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) invalidRequest(`"${name}" must be a non-negative integer, not ${String(value)}`, table.key);
776
- return value;
777
- };
778
- const selectOp = (args, patch = {}) => ({
779
- kind: "select",
780
- table,
781
- selection: selection(args),
782
- where: builder.where(table, args?.["where"]),
783
- orderBy: builder.orderBy(table, args?.["orderBy"]),
784
- limit: rowCount(args, "limit"),
785
- offset: rowCount(args, "offset"),
786
- count: void 0,
787
- head: false,
788
- single: void 0,
789
- ...patch
790
- });
791
- /** Writes return every column but the sensitive ones unless they are asked for. */
792
- const returning = (args) => {
793
- if (args?.["returning"] === false) return void 0;
794
- const all = selection(args);
795
- if (args?.["select"] !== void 0 || args?.["sensitive"] === true) return all;
796
- const columns = all.columns.filter((entry) => !sensitiveDb.has(entry.column));
797
- return columns.length === all.columns.length ? all : {
798
- ...all,
799
- columns
800
- };
801
- };
802
- const run = (op, args) => runner.run(op, optionsOf(args), signalOf(args), tuningOf(args));
803
- /** `primaryKey` holds app names; order terms take database names. */
804
- const defaultOrder = () => {
805
- let order = primaryOrders.get(table);
806
- if (!order) {
807
- order = table.primaryKey.map((name) => ({
808
- column: builder.column(table, name),
809
- direction: "asc",
810
- implicit: true
811
- }));
812
- primaryOrders.set(table, order);
813
- }
814
- return order;
815
- };
816
- const notFound = () => runner.fail(table, dbError("not_found", `No ${table.key} row matched`));
817
- /** Arguments the builder rejects fail like any other error: with the table and an `error` event. */
818
- const guarded = (work) => AsyncResult.from(async () => {
819
- try {
820
- return await work();
821
- } catch (cause) {
822
- return runner.fail(table, toDbError(cause));
823
- }
824
- });
825
- const base = {
826
- $tableName: table.key,
827
- $meta: table,
828
- findMany(args) {
829
- return guarded(async () => {
830
- const op = selectOp(args);
831
- const ordered = op.orderBy.length > 0 || table.primaryKey.length === 0 ? op : {
832
- ...op,
833
- orderBy: defaultOrder()
834
- };
835
- const result = await run(ordered, args);
836
- return result.ok ? ok(result.data.rows) : result;
837
- });
838
- },
839
- findFirst(args) {
840
- return guarded(async () => {
841
- const result = await run(selectOp(args, { limit: 1 }), args);
842
- return result.ok ? ok(result.data.rows[0] ?? null) : result;
843
- });
844
- },
845
- findOnly(args) {
846
- return guarded(async () => {
847
- const result = await run(selectOp(args, {
848
- limit: 2,
849
- unpaged: true
850
- }), args);
851
- if (!result.ok) return result;
852
- if (result.data.rows.length > 1) return runner.fail(table, dbError("multiple_rows", `More than one ${table.key} row matched; findOnly expects at most one`));
853
- return ok(result.data.rows[0] ?? null);
854
- });
855
- },
856
- findUnique(args) {
857
- return guarded(async () => {
858
- const op = selectOp(args, {
859
- where: builder.uniqueKey(table, args["where"]),
860
- limit: 1
861
- });
862
- const result = await run(op, args);
863
- return result.ok ? ok(result.data.rows[0] ?? null) : result;
864
- });
865
- },
866
- findById(id, args) {
867
- return guarded(async () => {
868
- const op = selectOp(args, {
869
- where: builder.primaryKey(table, id),
870
- limit: 1
871
- });
872
- const result = await run(op, args);
873
- if (!result.ok) return result;
874
- const row = result.data.rows[0];
875
- return row ? ok(row) : notFound();
876
- });
877
- },
878
- count(args) {
879
- return guarded(async () => {
880
- const mode = args?.["mode"];
881
- const op = selectOp({ where: args?.["where"] }, {
882
- selection: {
883
- columns: [],
884
- includes: []
885
- },
886
- count: mode === "planned" || mode === "estimated" ? mode : "exact",
887
- head: true
888
- });
889
- const result = await run(op, args);
890
- return result.ok ? ok(result.data.count ?? 0) : result;
891
- });
892
- },
893
- aggregate(args) {
894
- return guarded(async () => {
895
- const aggregation = builder.aggregation(table, args);
896
- const orderBy = builder.aggregateOrderBy(table, args["orderBy"], aggregation);
897
- const op = selectOp({
898
- where: args["where"],
899
- limit: args["limit"],
900
- offset: args["offset"]
901
- }, {
902
- selection: aggregation,
903
- orderBy
904
- });
905
- const result = await run(op, args);
906
- if (!result.ok) return result;
907
- if (args["groupBy"] !== void 0) return ok(result.data.rows);
908
- return ok(result.data.rows[0] ?? decodeRows(aggregation, [{}])[0] ?? {});
909
- });
910
- },
911
- exists(args) {
912
- return guarded(async () => {
913
- const op = selectOp({ where: args?.["where"] }, {
914
- selection: existsSelection(),
915
- limit: 1
916
- });
917
- const result = await run(op, args);
918
- return result.ok ? ok(result.data.rows.length > 0) : result;
919
- });
920
- },
921
- paginate(args) {
922
- return guarded(async () => "after" in args ? cursorPage(args) : offsetPage(args));
923
- },
924
- create(data, args) {
925
- return guarded(async () => {
926
- const op = insertOp([data], args, void 0);
927
- const result = await run(op, args);
928
- if (!result.ok) return result;
929
- return ok(args?.["returning"] === false ? null : result.data.rows[0] ?? null);
930
- });
931
- },
932
- createMany(rows, args) {
933
- return guarded(async () => {
934
- if (rows.length === 0) return ok(args?.["returning"] === false ? { count: 0 } : []);
935
- const result = await run(insertOp(rows, args, void 0), args);
936
- if (!result.ok) return result;
937
- return ok(args?.["returning"] === false ? { count: result.data.count ?? rows.length } : result.data.rows);
938
- });
939
- },
940
- update(id, patch, args) {
941
- return guarded(async () => {
942
- const key = and(builder.primaryKey(table, id), builder.where(table, args?.["where"]));
943
- const expect = args?.["expect"] ? builder.where(table, args["expect"]) : void 0;
944
- const op = {
945
- kind: "update",
946
- table,
947
- set: builder.row(table, patch, "update"),
948
- where: and(key, expect),
949
- returning: returning(args)
950
- };
951
- const result = await run(op, args);
952
- if (!result.ok) return result;
953
- if ((op.returning ? result.data.rows.length : result.data.count ?? 0) === 0) {
954
- if (!expect) return notFound();
955
- const exists = await run(selectOp(void 0, {
956
- where: key,
957
- selection: {
958
- columns: [],
959
- includes: []
960
- },
961
- count: "exact",
962
- head: true
963
- }), args);
964
- if (exists.ok && (exists.data.count ?? 0) > 0) return runner.fail(table, dbError("stale", `The ${table.key} row changed since it was read`));
965
- return notFound();
966
- }
967
- return ok(op.returning ? result.data.rows[0] ?? null : null);
968
- });
969
- },
970
- updateMany(args) {
971
- return guarded(async () => {
972
- const where = builder.where(table, args["where"]);
973
- if (simplify(where) === true && args["allowAll"] !== true) return runner.fail(table, dbError("invalid_request", "updateMany needs a \"where\" that filters rows; pass allowAll: true to update every row"));
974
- const rows = args["returning"] === true;
975
- const bound = maxAffectedOf(args);
976
- if ("invalid" in bound) return runner.fail(table, dbError("invalid_request", bound.invalid));
977
- const op = {
978
- kind: "update",
979
- table,
980
- set: builder.row(table, args["data"], "update"),
981
- where,
982
- returning: rows ? returning(args) : void 0,
983
- ...bound,
984
- ...countOf(args)
985
- };
986
- const result = await run(op, args);
987
- if (!result.ok) return result;
988
- return ok(rows ? result.data.rows : { count: result.data.count ?? 0 });
989
- });
990
- },
991
- upsert(data, args) {
992
- return guarded(async () => {
993
- const op = insertOp([data], args, conflictColumns(args?.["onConflict"]));
994
- const result = await run(op, args);
995
- if (!result.ok) return result;
996
- return ok(args?.["returning"] === false ? null : result.data.rows[0] ?? null);
997
- });
998
- },
999
- upsertMany(rows, args) {
1000
- return guarded(async () => {
1001
- if (rows.length === 0) return ok(args?.["returning"] === false ? { count: 0 } : []);
1002
- const op = insertOp(rows, args, conflictColumns(args?.["onConflict"]));
1003
- const result = await run(op, args);
1004
- if (!result.ok) return result;
1005
- return ok(args?.["returning"] === false ? { count: result.data.count ?? rows.length } : result.data.rows);
1006
- });
1007
- },
1008
- delete(id, args) {
1009
- return guarded(async () => {
1010
- const op = {
1011
- kind: "delete",
1012
- table,
1013
- where: builder.primaryKey(table, id),
1014
- returning: builder.selection(table, table.primaryKey, void 0)
1015
- };
1016
- const result = await run(op, args);
1017
- if (!result.ok) return result;
1018
- return (result.data.count ?? result.data.rows.length) === 0 ? notFound() : ok(void 0);
1019
- });
1020
- },
1021
- deleteMany(args) {
1022
- return guarded(async () => {
1023
- const where = builder.where(table, args["where"]);
1024
- if (!where || simplify(where) === true) return runner.fail(table, dbError("invalid_request", "deleteMany needs a \"where\" that filters rows"));
1025
- const rows = args["returning"] === true;
1026
- const bound = maxAffectedOf(args);
1027
- if ("invalid" in bound) return runner.fail(table, dbError("invalid_request", bound.invalid));
1028
- const op = {
1029
- kind: "delete",
1030
- table,
1031
- where,
1032
- returning: rows ? returning(args) : void 0,
1033
- ...bound,
1034
- ...countOf(args)
1035
- };
1036
- const result = await runner.run(op, rows ? {
1037
- ...optionsOf(args),
1038
- returning: true
1039
- } : optionsOf(args), signalOf(args), tuningOf(args));
1040
- if (!result.ok) return result;
1041
- return ok(rows ? result.data.rows : { count: result.data.count ?? 0 });
1042
- });
1043
- }
1044
- };
1045
- function insertOp(rows, args, conflict) {
1046
- const built = rows.map((row) => builder.row(table, row));
1047
- return {
1048
- kind: "insert",
1049
- table,
1050
- rows: conflict && built.length > 1 ? byKey(built, conflict) : built,
1051
- returning: returning(args),
1052
- onConflict: conflict ? {
1053
- columns: conflict,
1054
- action: args?.["ignoreDuplicates"] === true ? "ignore" : "update"
1055
- } : void 0,
1056
- defaultToNull: args?.["defaultToNull"] === true,
1057
- ...countOf(args)
1058
- };
1059
- }
1060
- /** One column is enough to see a row: the primary key, or the first non-sensitive column. */
1061
- function existsSelection() {
1062
- let found = existsSelections.get(table);
1063
- if (!found) {
1064
- const names = Object.keys(table.columns);
1065
- const alias = table.primaryKey[0] ?? names.find((name) => !table.columns[name]?.sensitive) ?? names[0];
1066
- found = {
1067
- columns: alias === void 0 ? [] : [{
1068
- alias,
1069
- column: builder.column(table, alias)
1070
- }],
1071
- includes: []
1072
- };
1073
- existsSelections.set(table, found);
1074
- }
1075
- return found;
1076
- }
1077
- function conflictColumns(target) {
1078
- if (target === void 0 || target === "primaryKey") return table.primaryKey.map((name) => builder.column(table, name));
1079
- if (typeof target === "string") {
1080
- const columns = table.uniqueKeys[target];
1081
- if (!columns) invalidRequest(`Unknown unique key "${target}" on "${table.key}"`, table.key);
1082
- return columns.map((name) => builder.column(table, name));
1083
- }
1084
- if (Array.isArray(target)) return target.map((name) => builder.column(table, String(name)));
1085
- return invalidRequest(`Invalid onConflict on "${table.key}"`, table.key);
1086
- }
1087
- function pageWindow(args) {
1088
- if (args["offset"] !== void 0 || args["limit"] !== void 0) {
1089
- if (args["page"] !== void 0 || args["size"] !== void 0) return { invalid: "Pass \"offset\" and \"limit\" or \"page\" and \"size\"" };
1090
- const limit = Number(args["limit"]);
1091
- if (!Number.isInteger(limit) || limit < 1) return { invalid: "\"limit\" must be a positive integer" };
1092
- const offset = Number(args["offset"]);
1093
- if (!Number.isInteger(offset) || offset < 0) return { invalid: "\"offset\" must be a non-negative integer" };
1094
- return {
1095
- size: limit,
1096
- offset
1097
- };
1098
- }
1099
- const size = Number(args["size"]);
1100
- if (!Number.isInteger(size) || size < 1) return { invalid: "\"size\" must be a positive integer" };
1101
- const number = args["page"] === void 0 ? 1 : Number(args["page"]);
1102
- if (!Number.isInteger(number) || number < 1) return { invalid: "\"page\" must be a positive integer" };
1103
- return {
1104
- size,
1105
- offset: (number - 1) * size
1106
- };
1107
- }
1108
- async function offsetPage(args) {
1109
- const window = pageWindow(args);
1110
- if ("invalid" in window) return runner.fail(table, dbError("invalid_request", window.invalid));
1111
- const { size, offset } = window;
1112
- const number = Math.floor(offset / size) + 1;
1113
- const count = args["count"];
1114
- const orderBy = builder.orderBy(table, args["orderBy"]);
1115
- const op = selectOp(args, {
1116
- orderBy: orderBy.length > 0 || table.primaryKey.length === 0 ? orderBy : defaultOrder(),
1117
- limit: size + 1,
1118
- lookAhead: true,
1119
- offset,
1120
- count: count === "exact" || count === "planned" || count === "estimated" ? count : void 0
1121
- });
1122
- const result = await run(op, args);
1123
- if (!result.ok) return result;
1124
- const rows = result.data.rows;
1125
- const total = result.data.count;
1126
- return ok({
1127
- items: rows.slice(0, size),
1128
- page: {
1129
- number,
1130
- size,
1131
- total,
1132
- pages: total === null ? null : Math.max(1, Math.ceil(total / size)),
1133
- hasMore: rows.length > size
1134
- }
1135
- });
1136
- }
1137
- async function cursorPage(args) {
1138
- const size = Number(args["size"]);
1139
- if (!Number.isInteger(size) || size < 1) return runner.fail(table, dbError("invalid_request", "\"size\" must be a positive integer"));
1140
- const requested = builder.orderBy(table, args["orderBy"]);
1141
- const related = requested.find((term) => term.relation);
1142
- if (related) return runner.fail(table, dbError("invalid_request", `Cursor pages can't sort by the relation "${related.relation?.name}"; use an offset page`));
1143
- const orderBy = withTieBreaker(requested);
1144
- const { selection: withSort, added } = ensureColumns(selection(args), orderBy);
1145
- const sort = sortKey(`${table.key}|${orderBy.map((term) => `${term.column}.${term.direction}.${term.nulls ?? ""}`).join(",")}`);
1146
- let after;
1147
- if (typeof args["after"] === "string") {
1148
- const decoded = decodeBoundCursor(args["after"], sort);
1149
- if ("invalid" in decoded && decoded.invalid === "sort") return runner.fail(table, dbError("invalid_request", "The cursor continues another orderBy; pass after: null to start the new order"));
1150
- const values = "values" in decoded ? decoded.values : void 0;
1151
- if (!values || values.length !== orderBy.length) return runner.fail(table, dbError("invalid_request", "Invalid cursor"));
1152
- const { byDb } = lookupOf(table);
1153
- after = keysetCondition(orderBy, values, (name) => byDb.get(name)?.[1].nullable ?? true);
1154
- }
1155
- const op = selectOp(args, {
1156
- selection: withSort,
1157
- where: and(builder.where(table, args["where"]), after),
1158
- orderBy,
1159
- limit: size + 1,
1160
- lookAhead: true,
1161
- offset: void 0
1162
- });
1163
- const result = await run(op, args);
1164
- if (!result.ok) return result;
1165
- const rows = result.data.rows.slice(0, size);
1166
- const hasMore = result.data.rows.length > size;
1167
- const last = rows.at(-1);
1168
- const aliases = new Map(withSort.columns.map((entry) => [entry.column, entry.alias]));
1169
- const nextCursor = hasMore && last ? encodeBoundCursor(orderBy.map((term) => encodeValue(last[aliases.get(term.column) ?? term.column])), sort) : null;
1170
- return ok({
1171
- items: added.length > 0 ? rows.map((row) => strip(row, added)) : rows,
1172
- nextCursor,
1173
- hasMore
1174
- });
1175
- }
1176
- function withTieBreaker(orderBy) {
1177
- const terms = [...orderBy];
1178
- for (const name of table.primaryKey) {
1179
- const column = builder.column(table, name);
1180
- if (!terms.some((term) => term.column === column)) terms.push({
1181
- column,
1182
- direction: terms[0]?.direction ?? "asc"
1183
- });
1184
- }
1185
- return terms;
1186
- }
1187
- function ensureColumns(base, orderBy) {
1188
- const columns = [...base.columns];
1189
- const selected = new Set(columns.map((entry) => entry.column));
1190
- const { byDb } = lookupOf(table);
1191
- const added = [];
1192
- for (const term of orderBy) {
1193
- if (selected.has(term.column)) continue;
1194
- const alias = byDb.get(term.column)?.[0];
1195
- columns.push(alias === void 0 ? {
1196
- alias: term.column,
1197
- column: term.column
1198
- } : builder.selectColumn(table, alias));
1199
- selected.add(term.column);
1200
- added.push(alias ?? term.column);
1201
- }
1202
- return {
1203
- selection: {
1204
- columns,
1205
- includes: base.includes
1206
- },
1207
- added
1208
- };
1209
- }
1210
- return base;
1211
- }
1212
- function strip(row, keys) {
1213
- const copy = {};
1214
- for (const key in row) if (!keys.includes(key) && Object.hasOwn(row, key)) copy[key] = row[key];
1215
- return copy;
1216
- }
1217
- //#endregion
1218
- //#region src/core/rpc-result.ts
1219
- const columnsByFunction = /* @__PURE__ */ new WeakMap();
1220
- function columnsOf(meta, fn) {
1221
- const cached = columnsByFunction.get(fn);
1222
- if (cached !== void 0) return cached;
1223
- let columns = null;
1224
- const { result } = fn;
1225
- if (result && "table" in result) {
1226
- const table = meta.tables[result.table];
1227
- if (table) {
1228
- columns = /* @__PURE__ */ new Map();
1229
- for (const [db, [app, column]] of lookupOf(table).byDb) if (app !== db || column.codec) columns.set(db, [app, column.codec]);
1230
- }
1231
- } else if (result) columns = new Map(result.columns.map((column) => [column.db, [column.name ?? column.db, column.codec]]));
1232
- columnsByFunction.set(fn, columns);
1233
- return columns;
1234
- }
1235
- function decodeRow(columns, row) {
1236
- if (!isPlainObject(row)) return row;
1237
- const out = {};
1238
- for (const key in row) {
1239
- if (!Object.hasOwn(row, key)) continue;
1240
- const column = columns.get(key);
1241
- if (!column) {
1242
- out[key] = row[key];
1243
- continue;
1244
- }
1245
- const [app, codec] = column;
1246
- out[app] = codec ? decodeValue(codec, row[key]) : row[key];
1247
- }
1248
- return out;
1249
- }
1250
- const overloadMeta = /* @__PURE__ */ new WeakMap();
1251
- /**
1252
- * The signature `$rpc` calls: PostgREST picks an overload by the argument
1253
- * names, so a call matches the overload that has every name it passes and
1254
- * every argument without a default. Undefined when the function is in
1255
- * another schema or when no overload, or more than one, matches.
1256
- */
1257
- function rpcFunction(meta, name, schema, args) {
1258
- const fn = meta.functions[name];
1259
- if (!fn || fn.schema !== schema) return void 0;
1260
- if (!fn.overloads) return fn;
1261
- const keys = Object.keys(args).filter((key) => args[key] !== void 0);
1262
- const matches = fn.overloads.filter((overload) => keys.every((key) => overload.args.some((arg) => arg.name === key)) && overload.args.every((arg) => arg.optional === true || keys.includes(arg.name)));
1263
- const [match] = matches;
1264
- if (!match || matches.length > 1) return void 0;
1265
- let resolved = overloadMeta.get(match);
1266
- if (!resolved) {
1267
- resolved = {
1268
- ...match,
1269
- name: fn.name,
1270
- schema: fn.schema
1271
- };
1272
- overloadMeta.set(match, resolved);
1273
- }
1274
- return resolved;
1275
- }
1276
- /**
1277
- * The `$rpc` result in app form: rows of a table or a `returns table (...)`
1278
- * record get the configured casing and codecs, like repository reads.
1279
- * Scalars, json and calls without a known signature come back unchanged.
1280
- */
1281
- function decodeRpcResult(meta, fn, data) {
1282
- if (!fn) return data;
1283
- const columns = columnsOf(meta, fn);
1284
- if (!columns || columns.size === 0) return data;
1285
- return Array.isArray(data) ? data.map((row) => decodeRow(columns, row)) : decodeRow(columns, data);
1286
- }
1287
- //#endregion
1288
- //#region src/core/define.ts
1289
- function isExecutor(value) {
1290
- return typeof value === "object" && value !== null && typeof value.execute === "function" && typeof value.name === "string";
1291
- }
1292
- /** No plugins, one shared array so the caches keyed on a plugin list hit. */
1293
- const NO_PLUGINS = Object.freeze([]);
1294
- /** The kept lists per installed list and `keep` names, so each is one stable array. */
1295
- const keptLists = /* @__PURE__ */ new WeakMap();
1296
- /** The installed plugins named in `keep`; a name that isn't installed throws, so a typo can't drop tracing silently. */
1297
- function keptPlugins(plugins, keep) {
1298
- if (keep.length === 0) return NO_PLUGINS;
1299
- let byKeep = keptLists.get(plugins);
1300
- if (!byKeep) {
1301
- byKeep = /* @__PURE__ */ new Map();
1302
- keptLists.set(plugins, byKeep);
1303
- }
1304
- const key = keep.join("\0");
1305
- const cached = byKeep.get(key);
1306
- if (cached) return cached;
1307
- for (const name of keep) if (!plugins.some((plugin) => plugin.name === name)) throw new TypeError(`better-supabase: $withoutPlugins({ keep }) names "${name}", which is not installed. Installed: ${plugins.map((plugin) => plugin.name).join(", ") || "none"}`);
1308
- const kept = plugins.filter((plugin) => keep.includes(plugin.name));
1309
- byKeep.set(key, kept);
1310
- return kept;
1311
- }
1312
- /**
1313
- * The isomorphic definition of your data layer: schema plus plugins. Holds no
1314
- * secrets and no connection; `connect()` binds it to a client per request.
1315
- */
1316
- var BetterSupabase = class BetterSupabase {
1317
- schema;
1318
- plugins;
1319
- events;
1320
- options;
1321
- constructor(schema, plugins = [], options = {}, events = definitionEvents(options)) {
1322
- const names = /* @__PURE__ */ new Set();
1323
- for (const plugin of plugins) {
1324
- if (plugin.apiVersion !== 1) throw new TypeError(`better-supabase: plugin "${plugin.name}" targets plugin API v${String(plugin.apiVersion)}; this version supports v1`);
1325
- if (names.has(plugin.name)) throw new TypeError(`better-supabase: plugin "${plugin.name}" is already installed`);
1326
- names.add(plugin.name);
1327
- }
1328
- this.schema = schema;
1329
- this.plugins = orderPlugins(plugins);
1330
- this.options = options;
1331
- this.events = events;
1332
- const { temporal } = options;
1333
- if (temporal !== void 0) {
1334
- const previous = providedTemporal();
1335
- if (previous !== void 0 && previous !== temporal) events.logger.warn("defineSupabase got a different `temporal` namespace than the one already provided; decoded rows, jobs and webhooks in this process now use the newer one. Pass the same namespace to every definition.");
1336
- provideTemporal(temporal);
1337
- }
1338
- }
1339
- get meta() {
1340
- return this.schema.meta;
1341
- }
1342
- /** The `now` option, else this definition's own `Temporal` clock. */
1343
- #now() {
1344
- const { now, temporal } = this.options;
1345
- if (now) return now;
1346
- return temporal ? () => temporal.Now.instant() : nowInstant;
1347
- }
1348
- /** The `Temporal` this definition uses: the `temporal` option, else the global. */
1349
- get temporal() {
1350
- return this.options.temporal ?? optionalTemporal();
1351
- }
1352
- /** The schema set by `claims()`; its output types `session.claims`. */
1353
- get claimsSchema() {
1354
- return this.options.claims;
1355
- }
1356
- /** The schema set by `userMetadata()`; its output types `session.profile`. */
1357
- get userMetadataSchema() {
1358
- return this.options.userMetadata;
1359
- }
1360
- /**
1361
- * Returns a new instance whose servers validate verified JWT claims (custom
1362
- * access token hook output) with `schema`, and whose sessions are typed by it.
1363
- * A token that fails it resolves to `{ kind: 'invalid', reason: 'claims' }`.
1364
- *
1365
- * ```ts
1366
- * const betterSupabase = defineSupabase(schema).claims(z.object({ tenant_id: z.uuid() }));
1367
- * ```
1368
- */
1369
- claims(schema) {
1370
- return new BetterSupabase(this.schema, this.plugins, {
1371
- ...this.options,
1372
- claims: schema
1373
- }, this.events);
1374
- }
1375
- /**
1376
- * Returns a new instance whose sessions parse `user_metadata` with
1377
- * `schema` into a typed `session.profile`. Users can change their metadata
1378
- * with `auth.updateUser()`, so a failure only leaves `profile` undefined
1379
- * (with one warning), and no authorization code reads it. It is for
1380
- * display only: roles, memberships, the tenant and entitlements come from
1381
- * the verified claims, never from `profile`.
1382
- *
1383
- * ```ts
1384
- * const betterSupabase = defineSupabase(schema).userMetadata(z.object({ display_name: z.string() }));
1385
- * ```
1386
- */
1387
- userMetadata(schema) {
1388
- return new BetterSupabase(this.schema, this.plugins, {
1389
- ...this.options,
1390
- userMetadata: schema
1391
- }, this.events);
1392
- }
1393
- /**
1394
- * Returns a new instance whose `.orThrow()` throws `mapper(error)` instead
1395
- * of a `DbException`, and whose results `toBetterResult` maps the same way.
1396
- * Results themselves keep their `DbError`.
1397
- *
1398
- * ```ts
1399
- * const betterSupabase = defineSupabase(schema).mapError((error) => new AppError(error));
1400
- * ```
1401
- */
1402
- mapError(mapper) {
1403
- return new BetterSupabase(this.schema, this.plugins, {
1404
- ...this.options,
1405
- throwAs: mapper
1406
- }, this.events);
1407
- }
1408
- #specs;
1409
- #truncatedTables = /* @__PURE__ */ new Set();
1410
- /** A hub without listeners, for decoding read-set results. */
1411
- #decodeEvents;
1412
- /** One getter per table, shared by every db this instance connects. */
1413
- #tables;
1414
- #errorMappers = /* @__PURE__ */ new WeakMap();
1415
- /**
1416
- * Builds serializable `QuerySpec`s with the same arguments and result types
1417
- * as the repository: `betterSupabase.spec.customers.findMany({ select: ['id'] })`.
1418
- */
1419
- get spec() {
1420
- this.#specs ??= createSpecs(this.meta);
1421
- return this.#specs;
1422
- }
1423
- /** App keys of every table a spec reads; mutations of any of them make it stale. */
1424
- tablesOf(spec) {
1425
- return specTables(this.meta, spec);
1426
- }
1427
- /** Returns a new instance with the plugin appended. */
1428
- use(plugin) {
1429
- return new BetterSupabase(this.schema, [...this.plugins, plugin], this.options, this.events);
1430
- }
1431
- /**
1432
- * Declares the tables an RPC writes, so cache adapters and live queries
1433
- * invalidate them after it succeeds.
1434
- *
1435
- * ```ts
1436
- * betterSupabase.defineRpc('archive_customer', { invalidates: ['customers', 'notes'] });
1437
- * ```
1438
- */
1439
- defineRpc(name, options) {
1440
- for (const table of options.invalidates) if (!this.meta.tables[table]) throw new TypeError(`better-supabase: defineRpc("${name}") invalidates unknown table "${table}"`);
1441
- return new BetterSupabase(this.schema, this.plugins, {
1442
- ...this.options,
1443
- rpc: {
1444
- ...this.options.rpc,
1445
- [name]: options
1446
- }
1447
- }, this.events);
1448
- }
1449
- /** Observes queries, mutations, errors, auth and refreshes. */
1450
- on(name, handler) {
1451
- return this.events.on(name, handler);
1452
- }
1453
- /**
1454
- * Invalidates `adapter` after every mutation in this runtime. Returns a
1455
- * function that detaches it. Adapter failures are logged, never thrown.
1456
- */
1457
- cache(adapter) {
1458
- const report = (cause, table) => {
1459
- this.events.logger.error(`cache adapter "${adapter.name}" failed`, {
1460
- cause,
1461
- table
1462
- });
1463
- };
1464
- const invalidate = (target) => {
1465
- try {
1466
- const pending = adapter.invalidate(target);
1467
- if (pending) pending.catch((cause) => {
1468
- report(cause, target.table);
1469
- });
1470
- } catch (cause) {
1471
- report(cause, target.table);
1472
- }
1473
- };
1474
- const offMutation = this.on("mutation", (notice) => {
1475
- invalidate(cacheTargetOf(this.meta, notice));
1476
- });
1477
- const offRpc = this.on("rpc", (notice) => {
1478
- for (const target of rpcCacheTargets(this.meta, notice)) invalidate(target);
1479
- });
1480
- return () => {
1481
- offMutation();
1482
- offRpc();
1483
- };
1484
- }
1485
- connect(source, context = {}, options = {}) {
1486
- const client = isExecutor(source) ? void 0 : source;
1487
- const base = options.executor ?? (isExecutor(source) ? source : postgrestExecutor(source, this.executorOptions()));
1488
- const recorder = new StatsRecorder(options.stats);
1489
- const tuning = {
1490
- ...options.timeout === void 0 ? {} : { timeout: options.timeout },
1491
- ...options.retry === void 0 ? {} : { retry: options.retry }
1492
- };
1493
- return this.#db(client, base, context, this.plugins, recorder, tuning);
1494
- }
1495
- /**
1496
- * The `postgrestExecutor` options this definition implies
1497
- * (`urlLengthLimit`, `postgrestVersion`), for adapters that build their
1498
- * own executor and should chunk reads the same way.
1499
- */
1500
- executorOptions() {
1501
- const { urlLengthLimit, postgrestVersion } = this.options;
1502
- return {
1503
- ...urlLengthLimit === void 0 ? {} : { urlLengthLimit },
1504
- ...postgrestVersion === void 0 ? {} : { postgrestVersion }
1505
- };
1506
- }
1507
- /** The caller's context with every plugin's `context` hook applied. */
1508
- #derive(given, plugins) {
1509
- let context = given;
1510
- for (const plugin of plugins) {
1511
- if (!plugin.context) continue;
1512
- try {
1513
- context = plugin.context(context, { schema: this.meta });
1514
- } catch (cause) {
1515
- this.events.logger.error(`plugin "${plugin.name}" context threw`, { cause });
1516
- }
1517
- }
1518
- return context;
1519
- }
1520
- #db(client, base, given, plugins, recorder, tuning = {}, events = this.events) {
1521
- const context = this.#derive(given, plugins);
1522
- let executor = base;
1523
- for (const plugin of plugins) if (plugin.wrapExecutor) executor = plugin.wrapExecutor(executor);
1524
- executor = recordStats(executor, recorder);
1525
- const errorMappers = this.#errorMappersFor(plugins);
1526
- const runner = new OperationRunner({
1527
- meta: this.meta,
1528
- builder: builderFor(this.meta),
1529
- executor,
1530
- plugins,
1531
- context,
1532
- events,
1533
- errorMappers,
1534
- now: this.#now(),
1535
- maxRows: this.options.maxRows ?? 1e3,
1536
- truncatedTables: this.#truncatedTables,
1537
- tuning
1538
- });
1539
- /**
1540
- * `db.$search({ score: true })`: the ranked ids and scores from
1541
- * `search_<table>_scores`, then those rows through the table (RLS and
1542
- * `where` apply), best first, each with `$score`.
1543
- */
1544
- const scoredSearch = async (table, fnArgs, args, hint) => {
1545
- const [key, ...rest] = table.primaryKey;
1546
- if (key === void 0 || rest.length > 0) return err(dbError("invalid_request", "db.$search({ score: true }) needs a table with a one-column primary key", { table: table.key }));
1547
- const { builder } = runner.runtime;
1548
- const scoresTable = {
1549
- key: `${table.key}$scores`,
1550
- name: `search_${table.name}_scores`,
1551
- schema: table.schema,
1552
- kind: "view",
1553
- columns: {
1554
- id: {
1555
- db: "id",
1556
- type: "jsonb",
1557
- nullable: false,
1558
- hasDefault: false
1559
- },
1560
- score: {
1561
- db: "score",
1562
- type: "float8",
1563
- nullable: false,
1564
- hasDefault: false
1565
- }
1566
- },
1567
- primaryKey: [],
1568
- uniqueKeys: {},
1569
- relations: {},
1570
- flags: {}
1571
- };
1572
- const scored = await runner.runInternal({
1573
- kind: "select",
1574
- table: scoresTable,
1575
- selection: builder.selection(scoresTable, ["id", "score"], void 0),
1576
- where: void 0,
1577
- orderBy: [],
1578
- limit: void 0,
1579
- offset: void 0,
1580
- count: void 0,
1581
- head: false,
1582
- single: void 0,
1583
- source: {
1584
- schema: table.schema,
1585
- name: scoresTable.name,
1586
- args: fnArgs
1587
- }
1588
- }, table, args.signal);
1589
- if (!scored.ok) return err(hint(scored.error));
1590
- const ranked = scored.data.rows.flatMap((row) => row["score"] === void 0 || row["score"] === null ? [] : [{
1591
- id: row["id"],
1592
- score: Number(row["score"])
1593
- }]);
1594
- if (ranked.length === 0) return ok([]);
1595
- const byId = new Map(ranked.map((entry) => [String(entry.id), entry]));
1596
- const op = {
1597
- kind: "select",
1598
- table,
1599
- selection: builder.selection(table, args.select, args.include),
1600
- where: builder.where(table, { AND: [...args.where === void 0 ? [] : [args.where], { [key]: { in: ranked.map((entry) => entry.id) } }] }),
1601
- orderBy: [],
1602
- limit: ranked.length,
1603
- offset: void 0,
1604
- count: void 0,
1605
- head: false,
1606
- single: void 0
1607
- };
1608
- const result = await runner.run(op, {}, args.signal);
1609
- if (!result.ok) return result;
1610
- return ok(result.data.rows.flatMap((row) => {
1611
- const entry = byId.get(String(row[key]));
1612
- return entry ? [{
1613
- ...row,
1614
- $score: entry.score
1615
- }] : [];
1616
- }).toSorted((a, b) => b.$score - a.$score));
1617
- };
1618
- const db = Object.create(this.#tablePrototype());
1619
- dbStates.set(db, {
1620
- runner,
1621
- plugins,
1622
- repositories: /* @__PURE__ */ new Map()
1623
- });
1624
- Object.assign(db, {
1625
- $client: client,
1626
- $executor: executor,
1627
- $context: context,
1628
- $rpc: (name, ...rest) => rpc(this.schema.meta, executor, errorMappers, tuning, name, rest).map((data) => {
1629
- const registered = this.options.rpc?.[name];
1630
- if (registered) this.events.emit("rpc", {
1631
- name,
1632
- invalidates: registered.invalidates,
1633
- context
1634
- });
1635
- return data;
1636
- }).mapError((error) => {
1637
- if (events.has("error")) events.emit("error", errorEvent(error));
1638
- return error;
1639
- }),
1640
- $with: (extra) => this.#db(client, base, {
1641
- ...given,
1642
- ...extra
1643
- }, plugins, recorder, tuning),
1644
- $withoutPlugins: (options) => this.#db(client, base, given, keptPlugins(plugins, options?.keep ?? []), recorder, tuning),
1645
- $stats: () => recorder.snapshot(),
1646
- $table: (name) => {
1647
- if (!Object.hasOwn(this.meta.tables, name)) throw new TypeError(`better-supabase: unknown table "${name}". Known: ${Object.keys(this.meta.tables).join(", ")}`);
1648
- return db[name];
1649
- },
1650
- $run: (spec, options) => runSpec(db, spec, options?.signal),
1651
- $many: (target, ...rest) => {
1652
- if (isReadSet(target)) {
1653
- const [values, options] = rest;
1654
- return readSet(target, values, options?.signal);
1655
- }
1656
- const [options] = rest;
1657
- if (!Array.isArray(target)) return AsyncResult.err(dbError("invalid_request", "db.$many() expects an array of specs or a read set"));
1658
- return many(target, options?.signal, true);
1659
- },
1660
- $search: (name, args) => AsyncResult.from(async () => {
1661
- const table = Object.hasOwn(this.meta.tables, name) ? this.meta.tables[name] : void 0;
1662
- if (!table) return err(dbError("invalid_request", `db.$search(): unknown table "${name}"`));
1663
- if (!base.functionSources) return err(dbError("invalid_request", `db.$search() reads from a function; the ${base.name} executor doesn't support that`, { table: table.key }));
1664
- const query = (args.vector === void 0 || args.vector === null) && args.text !== void 0 ? null : vectorLiteral(args.vector ?? []);
1665
- const k = args.k ?? 10;
1666
- if (query === void 0 || !Number.isInteger(k) || k < 1) return err(dbError("invalid_input", "db.$search() needs a vector of finite numbers (or text alone on a hybrid entry) and a positive integer k", { table: table.key }));
1667
- const { builder } = runner.runtime;
1668
- const fnArgs = {
1669
- query,
1670
- k,
1671
- ...args.filter === void 0 ? {} : { filter: args.filter },
1672
- ...args.text === void 0 ? {} : { text_query: args.text }
1673
- };
1674
- const hint = (error) => error.code === "PGRST202" || error.code === "42883" ? {
1675
- ...error,
1676
- hint: `Add "${table.schema}.${table.name}" to vectorSearch in better-supabase.config.ts (with prefilter or hybrid for filter and text) and run \`better-supabase sql sync\`.`
1677
- } : error;
1678
- if (args.score) return scoredSearch(table, fnArgs, args, hint);
1679
- const op = {
1680
- kind: "select",
1681
- table,
1682
- selection: builder.selection(table, args.select, args.include),
1683
- where: builder.where(table, args.where),
1684
- orderBy: [],
1685
- limit: k,
1686
- offset: void 0,
1687
- count: void 0,
1688
- head: false,
1689
- single: void 0,
1690
- source: {
1691
- schema: table.schema,
1692
- name: `search_${table.name}`,
1693
- args: fnArgs
1694
- }
1695
- };
1696
- const result = await runner.run(op, {}, args.signal);
1697
- if (result.ok) return ok(result.data.rows);
1698
- return err(hint(result.error));
1699
- })
1700
- });
1701
- const many = (specs, signal, usePlugins) => AsyncResult.from(async () => {
1702
- const invalid = specs.findIndex((spec) => !isQuerySpec(spec));
1703
- if (invalid !== -1) return err(dbError("invalid_request", `db.$many() entry ${invalid} is not a QuerySpec from betterSupabase.spec`));
1704
- const active = usePlugins ? plugins : [];
1705
- const batch = base.batch?.bind(base);
1706
- const batching = batch && specs.length > 1 ? batchingExecutor({
1707
- ...base,
1708
- batch
1709
- }, specs.length) : void 0;
1710
- const target = batching ? this.#db(client, batching.executor, given, active, recorder, tuning) : usePlugins ? db : this.#db(client, base, given, NO_PLUGINS, recorder, tuning);
1711
- const results = await Promise.all(specs.map(async (spec) => {
1712
- try {
1713
- return await runSpec(target, spec, signal);
1714
- } finally {
1715
- batching?.done();
1716
- }
1717
- }));
1718
- const data = [];
1719
- for (const result of results) {
1720
- if (!result.ok) return result;
1721
- data.push(result.data);
1722
- }
1723
- return ok(data);
1724
- });
1725
- const readSet = (set, values, signal) => AsyncResult.from(async () => {
1726
- const problems = checkParams(set, values);
1727
- if (problems.length > 0) return err(dbError("invalid_request", `db.$many(${set.name}): ${problems.join(", ")}`));
1728
- const keys = Object.keys(set.specs);
1729
- const { specs: bound, noCaller } = bindParams(set, values, context);
1730
- if (base.batch || !executor.rpc) {
1731
- if (noCaller) return err(noCaller);
1732
- const result = await many(keys.map((key) => bound[key]), signal, false);
1733
- if (!result.ok) return result;
1734
- return ok(Object.fromEntries(keys.map((key, i) => [key, result.data[i]])));
1735
- }
1736
- const called = await executor.rpc(set.functionName, { p: values ?? {} }, {
1737
- schema: "public",
1738
- get: true,
1739
- errorMappers,
1740
- ...signal ? { signal } : {}
1741
- });
1742
- if (!called.ok) return called;
1743
- return this.#decodeReadSet(client, context, set, bound, called.data);
1744
- });
1745
- const throwAs = this.options.throwAs;
1746
- if (throwAs) for (const name of [
1747
- "$rpc",
1748
- "$run",
1749
- "$many",
1750
- "$search"
1751
- ]) db[name] = mapThrows(db[name], throwAs);
1752
- return db;
1753
- }
1754
- /**
1755
- * Decodes what a read-set function returned (`{ [key]: { rows, count } }`)
1756
- * by running each spec against those rows, so casing, codecs and
1757
- * aggregates come out exactly as from `db.$run`.
1758
- */
1759
- async #decodeReadSet(client, context, set, specs, data) {
1760
- const payload = data ?? {};
1761
- let rows = [];
1762
- let count = null;
1763
- const decoder = this.#db(client, {
1764
- name: "read-set",
1765
- execute: (op) => {
1766
- if (op.kind === "select" && op.single) {
1767
- if (rows.length > 1) return Promise.resolve(err(dbError("multiple_rows", `Expected one ${op.table.key} row`)));
1768
- if (rows.length === 0 && op.single === "one") return Promise.resolve(err(dbError("not_found", `No ${op.table.key} row matched`)));
1769
- }
1770
- return Promise.resolve(ok({
1771
- rows,
1772
- count
1773
- }));
1774
- }
1775
- }, context, NO_PLUGINS, new StatsRecorder(), {}, this.#decodeEvents ??= new EventHub(this.events.logger));
1776
- const out = {};
1777
- for (const [key, spec] of Object.entries(specs)) {
1778
- const entry = payload[key];
1779
- if (!entry) return err(dbError("unexpected", `${set.functionName}() returned no "${key}". Run \`better-supabase gen\` and migrate.`));
1780
- rows = entry.rows ?? [];
1781
- count = entry.count ?? null;
1782
- const result = await runSpec(decoder, spec, void 0);
1783
- if (!result.ok) return result;
1784
- out[key] = result.data;
1785
- }
1786
- return ok(out);
1787
- }
1788
- #errorMappersFor(plugins) {
1789
- let mappers = this.#errorMappers.get(plugins);
1790
- if (!mappers) {
1791
- mappers = [...this.options.errors ?? [], ...plugins.flatMap((plugin) => plugin.mapError ? [plugin.mapError] : [])];
1792
- this.#errorMappers.set(plugins, mappers);
1793
- }
1794
- return mappers;
1795
- }
1796
- #tablePrototype() {
1797
- if (this.#tables) return this.#tables;
1798
- const tables = {};
1799
- const throwAs = this.options.throwAs;
1800
- const build = (state, key) => {
1801
- let repository = state.repositories.get(key);
1802
- if (repository) return repository;
1803
- const table = this.meta.tables[key];
1804
- repository = this.#repository(state.runner, key, table, state.plugins);
1805
- if (throwAs) {
1806
- for (const [name, method] of Object.entries(repository)) if (typeof method === "function" && name !== "extend") repository[name] = mapThrows(method, throwAs);
1807
- }
1808
- state.repositories.set(key, repository);
1809
- return repository;
1810
- };
1811
- for (const key of Object.keys(this.meta.tables)) Object.defineProperty(tables, key, {
1812
- enumerable: true,
1813
- get() {
1814
- const state = dbStates.get(this);
1815
- return state ? build(state, key) : void 0;
1816
- }
1817
- });
1818
- this.#tables = tables;
1819
- return tables;
1820
- }
1821
- #repository(runner, key, table, plugins) {
1822
- const repository = createRepository(runner, table);
1823
- for (const plugin of plugins) {
1824
- const methods = plugin.repository?.({
1825
- table,
1826
- base: repository
1827
- });
1828
- if (!methods) continue;
1829
- for (const [name, method] of Object.entries(methods)) {
1830
- if (name in repository) throw new TypeError(`better-supabase: plugin "${plugin.name}" redefines "${key}.${name}"`);
1831
- repository[name] = method;
1832
- }
1833
- }
1834
- repository["extend"] = (build) => ({
1835
- ...repository,
1836
- ...build(repository)
1837
- });
1838
- return repository;
1839
- }
1840
- };
1841
- const dbStates = /* @__PURE__ */ new WeakMap();
1842
- function mapThrows(method, throwAs) {
1843
- return function(...args) {
1844
- const value = method.apply(this, args);
1845
- return value instanceof AsyncResult ? withErrorMapper(value, throwAs) : value;
1846
- };
1847
- }
1848
- function runSpec(db, spec, signal) {
1849
- if (!isQuerySpec(spec)) return AsyncResult.err(dbError("invalid_request", "db.$run() expects a QuerySpec from betterSupabase.spec"));
1850
- const method = db[spec.table]?.[spec.method];
1851
- if (!method) return AsyncResult.err(dbError("invalid_request", `Unknown table "${spec.table}" in QuerySpec`));
1852
- if (containsPlaceholder(spec.args)) return AsyncResult.err(dbError("invalid_request", "This spec comes from a read set and still holds placeholders; run it with db.$many(readSet, params)"));
1853
- const args = [...spec.args];
1854
- if (signal) {
1855
- const index = spec.method === "findById" ? 1 : 0;
1856
- args[index] = {
1857
- ...args[index],
1858
- signal
1859
- };
1860
- }
1861
- return method(...args);
1862
- }
1863
- function rpc(meta, executor, errorMappers, defaults, name, rest) {
1864
- const [args, options] = rest;
1865
- return AsyncResult.from(async () => {
1866
- if (!executor.rpc) return err(dbError("invalid_request", `Executor "${executor.name}" does not support rpc()`));
1867
- const tuning = {
1868
- ...defaults,
1869
- ...options?.timeout === void 0 ? {} : { timeout: options.timeout },
1870
- ...options?.retry === void 0 ? {} : { retry: options.retry }
1871
- };
1872
- const invalid = invalidTuning(tuning);
1873
- if (invalid) return err(dbError("invalid_request", invalid));
1874
- const limit = deadline(options?.signal, tuning.timeout);
1875
- const schema = options?.schema ?? "public";
1876
- const fn = rpcFunction(meta, name, schema, args ?? {});
1877
- const context = {
1878
- schema,
1879
- errorMappers,
1880
- ...limit.signal ? { signal: limit.signal } : {},
1881
- ...tuning.retry === void 0 ? {} : { retry: tuning.retry },
1882
- ...fn ? { function: fn } : {}
1883
- };
1884
- let result;
1885
- try {
1886
- result = await executor.rpc(name, args ?? {}, context);
1887
- } finally {
1888
- limit.clear();
1889
- }
1890
- if (!result.ok && limit.timedOut()) return err(dbError("timeout", `The request timed out after ${tuning.timeout} ms`));
1891
- if (!result.ok) return result;
1892
- let data = result.data;
1893
- if (options?.raw !== true) try {
1894
- data = decodeRpcResult(meta, fn, data);
1895
- } catch (cause) {
1896
- if (cause instanceof DbException) return err(cause.error);
1897
- throw cause;
1898
- }
1899
- if (!options?.returns) return ok(data);
1900
- const checked = await validate(options.returns, data, `${name}() result`);
1901
- return checked.ok ? ok(checked.data) : checked;
1902
- });
1903
- }
1904
- /**
1905
- * Creates the data-layer definition from the generated `schema`.
1906
- *
1907
- * ```ts
1908
- * export const betterSupabase = defineSupabase(schema).use(timestamps()).use(softDelete());
1909
- * ```
1910
- */
1911
- function defineSupabase(schema, options) {
1912
- return new BetterSupabase(schema, [], options);
1913
- }
1914
- //#endregion
1915
- export { decodeRows as a, memoryCache as c, encodeCursor as i, rowKey as l, defineSupabase as n, EventHub as o, decodeCursor as r, cacheTargetOf as s, BetterSupabase as t, rpcCacheTargets as u };