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,13 +1,66 @@
1
- import { c as mapDbError, n as dbError } from "../../errors-B11Duf73.js";
2
- import { t as temporal } from "../../temporal-required-BVvW7SYJ.js";
3
- import { a as ok, r as err, s as toDbError, t as AsyncResult } from "../../result-DzUbqgdW.js";
4
- import { i as toBase64 } from "../../base64-D2gsioCY.js";
5
- import { a as problemResponse } from "../../problem-BreOl8b8.js";
6
- import { t as fromPgError } from "../../executor-De1Of3m3.js";
7
- import { i as emitBlockEvent } from "../../block-events-CrT8r7Fe.js";
8
- import { n as rpcTransport, r as sqlTransport, t as rawError } from "../../block-transport-BLr-ZgLc.js";
9
- import { c as errorText, d as isRecord, h as optionalText, k as toInstant, n as applyTemporal, v as readBodyCapped } from "../../block-helpers-DWHxHsEQ.js";
10
- import { a as signStripeWebhook, c as timingSafeEqual, d as verifyWebhook, i as isDatabaseWebhook, l as verifySharedSecret, n as databaseChange, o as signWebhook, r as hookError, s as stripeInboxVerify, t as authHook, u as verifyStripeWebhook } from "../../verify-DL41hbvY.js";
1
+ import { t as DbException } from "../../db-exception-CnWcYPxL.js";
2
+ import { n as dbError } from "../../errors-8i6tSICm.js";
3
+ import { t as temporal } from "../../temporal-required-DqRzr7i0.js";
4
+ import { a as ok, r as err, s as toDbError, t as AsyncResult } from "../../result-BlgnMB0H.js";
5
+ import { n as isRecord } from "../../guards-6F2bCtQR.js";
6
+ import { i as toBase64, r as fromBase64 } from "../../base64-BmeCBgGo.js";
7
+ import { a as methodNotAllowed, o as problemResponse } from "../../problem-pIiL3WbE.js";
8
+ import { a as stripTypePrefix } from "../../cloud-event-CTh9Sr5w.js";
9
+ import { n as credentialRefInTenant, r as foreignCredentialRef } from "../../provider-DKh2xFZb.js";
10
+ import { n as event, t as defineEvents } from "../../event-map-Dy2vKHai.js";
11
+ import { r as blockEmitter } from "../../block-events-DD9Q_NUz.js";
12
+ import { n as hmacHex, r as timingSafeEqual } from "../../hmac-DCud0myt.js";
13
+ import { i as signWebhook, o as verifySharedSecret, s as verifyWebhook, t as PUBLIC_KEY_PREFIX } from "../../signatures-B41ApWXA.js";
14
+ import { t as cronRoute } from "../../cron-route-CoL-By8Z.js";
15
+ import { i as sqlTransport, r as rpcTransport, t as dbTransport } from "../../block-transport-G4t1umrR.js";
16
+ import { C as optionalText, D as recordOf, E as readBodyCapped, L as toBlockError, M as seconds, R as toInstant, c as chunksOf, f as errorText, i as batchResultsOf, k as recordsOf, n as applyTemporal, o as blockCall, r as asDbError, s as budget } from "../../block-helpers-CfG_MvDR.js";
17
+ import { t as subjectReaders } from "../../subject-readers-DiePmaYP.js";
18
+ import { r as withBlockHooks } from "../../block-hooks-BsXncUlZ.js";
19
+ import { n as hitRateLimit, o as receiveWebhook } from "../../rate-limit--QSiFA6D.js";
20
+ import { n as defineBlock } from "../../define-block-B6Gjs57G.js";
21
+ import { t as MAX_BATCH } from "../../batch-limit-DKVQDz4o.js";
22
+ import { a as signStripeWebhook, i as isDatabaseWebhook, n as databaseChange, o as stripeInboxVerify, r as hookError, s as verifyStripeWebhook, t as authHook } from "../../verify-EQcC3Khp.js";
23
+ import { toHttp } from "../../events/index.js";
24
+ import { n as webhooksOutSqlOptions, t as webhooksInSqlOptions } from "../../options-D7f2VKzj.js";
25
+ //#region src/blocks/webhooks/destinations.ts
26
+ /**
27
+ * Stores deliveries in the webhook inbox under `source` (the delivery's
28
+ * source when unset), with the endpoint's tenant and the id
29
+ * `<endpoint id>:<message id>`. The default destination of
30
+ * `createIncomingWebhooks`.
31
+ */
32
+ function inboxDestination(sql, options = {}) {
33
+ return {
34
+ apiVersion: 1,
35
+ name: "inbox",
36
+ deliver: (delivery) => receiveWebhook(sql, {
37
+ source: options.source ?? delivery.source,
38
+ id: `${delivery.endpoint.id}:${delivery.messageId}`,
39
+ type: delivery.type,
40
+ payload: delivery.payload,
41
+ headers: delivery.headers,
42
+ tenant: delivery.endpoint.tenant
43
+ })
44
+ };
45
+ }
46
+ /**
47
+ * Enqueues each delivery once on a jobs queue (`jobs.enqueueOnce`) with the
48
+ * dedupe key `<endpoint id>:<message id>` and the endpoint's tenant as the
49
+ * job's tenant. A repeat is a duplicate while the job waits, runs or stays
50
+ * archived; `jobs.purge` ends that window.
51
+ */
52
+ function jobsDestination(jobs, options) {
53
+ return {
54
+ apiVersion: 1,
55
+ name: "jobs",
56
+ deliver: (delivery) => jobs.enqueueOnce(options.queue, options.payload?.(delivery) ?? delivery, {
57
+ dedupeKey: `${delivery.endpoint.id}:${delivery.messageId}`,
58
+ context: { tenant: delivery.endpoint.tenant },
59
+ ...options.maxAttempts === void 0 ? {} : { maxAttempts: options.maxAttempts }
60
+ }).orThrow()
61
+ };
62
+ }
63
+ //#endregion
11
64
  //#region src/blocks/webhooks/incoming.ts
12
65
  /** The header that carries an endpoint's id on stored deliveries. */
13
66
  const INCOMING_ENDPOINT_HEADER = "x-bs-endpoint-id";
@@ -23,48 +76,25 @@ function verifyOf(value) {
23
76
  if (mode === void 0) throw new TypeError(`Unknown verification mode ${String(value)}`);
24
77
  return mode;
25
78
  }
26
- const encoder$1 = /* @__PURE__ */ new TextEncoder();
27
- async function hmacHex(secret, body) {
28
- const key = await crypto.subtle.importKey("raw", encoder$1.encode(secret), {
29
- name: "HMAC",
30
- hash: "SHA-256"
31
- }, false, ["sign"]);
32
- const mac = new Uint8Array(await crypto.subtle.sign("HMAC", key, encoder$1.encode(body)));
33
- return Array.from(mac, (byte) => byte.toString(16).padStart(2, "0")).join("");
34
- }
35
- function asDbError(cause) {
36
- const raw = fromPgError(cause);
37
- return raw ? mapDbError(raw) : toDbError(cause);
38
- }
39
- const attempt = (fn) => AsyncResult.from(async () => {
40
- try {
41
- return ok(await fn());
42
- } catch (cause) {
43
- return err(asDbError(cause));
44
- }
45
- });
46
79
  /**
47
80
  * Tenant-owned trigger URLs over the `webhooks-in` SQL module: create
48
81
  * endpoints, then route `/hooks/<token>` to `receive`. Deliveries land in
49
- * the webhook inbox (`createWebhookInbox`), where a worker processes them.
82
+ * the webhook inbox (`createWebhookInbox`), where a worker processes them,
83
+ * or in `options.destination`.
50
84
  */
51
- function createIncomingWebhooks(sql, options = {}) {
85
+ function createIncomingWebhooks(options) {
52
86
  applyTemporal(options);
87
+ const { sql } = options;
53
88
  const schema = options.schema ?? "better_supabase";
54
89
  if (!IDENT.test(schema)) throw new TypeError(`createIncomingWebhooks: "${schema}" is not a schema name`);
55
90
  const source = options.source ?? "webhook-in";
91
+ const destination = options.destination ?? inboxDestination(sql);
56
92
  const fn = (name) => `"${schema}"."${name}"`;
57
- const value = async (text, params) => {
58
- const [row] = await sql.queryRaw(text, params);
59
- return row.value;
60
- };
61
- return {
93
+ const call = blockCall(options.transport ?? sqlTransport(sql), schema, options.mappers);
94
+ return withBlockHooks({
62
95
  async receive(request, token) {
63
96
  const instance = new URL(request.url).pathname;
64
- if (request.method !== "POST") return new Response(null, {
65
- status: 405,
66
- headers: { allow: "POST" }
67
- });
97
+ if (request.method !== "POST") return methodNotAllowed(["POST"]);
68
98
  const problem = (error, endpoint) => (endpoint === void 0 ? Promise.resolve() : sql.queryRaw(`select ${fn("record_incoming_webhook")}($1, $2)`, [endpoint, error.status]).then(() => void 0)).then(() => problemResponse(error, {
69
99
  instance,
70
100
  format: options.problem
@@ -78,13 +108,8 @@ function createIncomingWebhooks(sql, options = {}) {
78
108
  status: 413
79
109
  }, endpoint.id);
80
110
  if (options.rateLimit) {
81
- const [hit] = await sql.queryRaw("select * from better_supabase.hit_rate_limit($1, $2, $3, $4::interval)", [
82
- `${source}:endpoint`,
83
- endpoint.id,
84
- options.rateLimit.max,
85
- typeof options.rateLimit.period === "number" ? `${String(options.rateLimit.period)} seconds` : options.rateLimit.period
86
- ]);
87
- if (hit && !hit.allowed) return await problem(dbError("rate_limited", "Too many deliveries", { retryAfter: Math.max(1, hit.retry_after) }), endpoint.id);
111
+ const hit = await hitRateLimit(sql, `${source}:endpoint`, endpoint.id, options.rateLimit.max, typeof options.rateLimit.period === "number" ? `${String(options.rateLimit.period)} seconds` : options.rateLimit.period);
112
+ if (!hit.allowed) return await problem(dbError("rate_limited", "Too many deliveries", { retryAfter: Math.max(1, hit.retryAfter) }), endpoint.id);
88
113
  }
89
114
  let messageId = request.headers.get("webhook-id") ?? request.headers.get("svix-id") ?? crypto.randomUUID();
90
115
  if (endpoint.verify === "standard-webhooks") {
@@ -128,19 +153,23 @@ function createIncomingWebhooks(sql, options = {}) {
128
153
  return header === null ? [] : [[name.toLowerCase(), header]];
129
154
  });
130
155
  const headers = Object.fromEntries([...kept, [INCOMING_ENDPOINT_HEADER, endpoint.id]]);
131
- const [stored] = await sql.queryRaw("select * from better_supabase.receive_webhook($1, $2, $3, $4, $5, $6)", [
156
+ const stored = await destination.deliver({
157
+ endpoint: {
158
+ id: endpoint.id,
159
+ tenant: endpoint.tenant,
160
+ metadata: isRecord(endpoint.metadata) ? endpoint.metadata : {}
161
+ },
132
162
  source,
133
- `${endpoint.id}:${messageId}`,
134
- typeof payload === "object" && payload !== null && "type" in payload && typeof payload.type === "string" ? payload.type : null,
135
- JSON.stringify(payload),
136
- JSON.stringify(headers),
137
- endpoint.tenant
138
- ]);
139
- const status = stored?.duplicate ? 200 : 202;
163
+ messageId,
164
+ type: typeof payload === "object" && payload !== null && "type" in payload && typeof payload.type === "string" ? payload.type : null,
165
+ payload,
166
+ headers
167
+ });
168
+ const status = stored.duplicate ? 200 : 202;
140
169
  await sql.queryRaw(`select ${fn("record_incoming_webhook")}($1, $2)`, [endpoint.id, status]);
141
170
  return Response.json({
142
- id: Number(stored?.id),
143
- duplicate: stored?.duplicate ?? false
171
+ id: stored.id,
172
+ duplicate: stored.duplicate
144
173
  }, { status });
145
174
  } catch (cause) {
146
175
  return problemResponse(asDbError(cause), {
@@ -149,74 +178,84 @@ function createIncomingWebhooks(sql, options = {}) {
149
178
  });
150
179
  }
151
180
  },
152
- create: (input) => attempt(async () => {
153
- const created = await value(`select ${fn("create_incoming_webhook")}($1, $2, $3, $4, $5, $6, $7) as value`, [
154
- input.tenant,
155
- input.name,
156
- input.verify ?? "none",
157
- JSON.stringify(input.metadata ?? {}),
158
- input.signatureHeader ?? null,
159
- input.subject?.type ?? null,
160
- input.subject?.id ?? null
161
- ]);
162
- const { subjectType, subjectId, ...rest } = created;
181
+ create: (input) => call("create_incoming_webhook", {
182
+ tenant: input.tenant,
183
+ name: input.name,
184
+ verify: input.verify ?? "none",
185
+ metadata: input.metadata ?? {},
186
+ signature_header: input.signatureHeader ?? null,
187
+ subject_type: input.subject?.type ?? null,
188
+ subject_id: input.subject?.id ?? null
189
+ }, (value) => {
190
+ const created = recordOf(value, "create_incoming_webhook");
191
+ const subjectType = optionalText(created["subjectType"]);
192
+ const subjectId = optionalText(created["subjectId"]);
163
193
  return {
164
- ...rest,
165
- tenant: String(created.tenant),
194
+ id: String(created["id"]),
195
+ tenant: String(created["tenant"]),
196
+ name: String(created["name"]),
197
+ verify: verifyOf(created["verify"]),
198
+ token: String(created["token"]),
199
+ secret: optionalText(created["secret"]) ?? null,
200
+ signatureHeader: optionalText(created["signatureHeader"]) ?? null,
166
201
  subject: subjectType && subjectId ? {
167
202
  type: subjectType,
168
203
  id: subjectId
169
204
  } : null
170
205
  };
171
206
  }),
172
- list: (tenant, subject) => attempt(async () => {
173
- return (await value(`select ${fn("list_incoming_webhooks")}($1, $2, $3) as value`, [
174
- tenant,
175
- subject?.type ?? null,
176
- subject?.id ?? null
177
- ])).map((row) => ({
178
- id: String(row["id"]),
179
- tenant: String(row["tenant"]),
180
- name: String(row["name"]),
181
- verify: row["verify"],
182
- signatureHeader: optionalText(row["signature_header"]) ?? null,
183
- enabled: row["enabled"] === true,
184
- maxBodyBytes: Number(row["max_body_bytes"]),
185
- receiveCount: Number(row["receive_count"]),
186
- lastReceivedAt: optionalText(row["last_received_at"]) ?? null,
187
- lastStatus: row["last_status"] === null ? null : Number(row["last_status"]),
188
- metadata: isRecord(row["metadata"]) ? row["metadata"] : {},
189
- subject: typeof row["subject_type"] === "string" && typeof row["subject_id"] === "string" ? {
190
- type: row["subject_type"],
191
- id: row["subject_id"]
192
- } : null,
193
- createdBy: optionalText(row["created_by"]) ?? null,
194
- createdAt: String(row["created_at"])
195
- }));
196
- }),
197
- rotate: (id, rotateOptions = {}) => attempt(async () => {
198
- const rotated = await value(`select ${fn("rotate_incoming_webhook")}($1, $2) as value`, [id, rotateOptions.rotateSecret ?? false]);
207
+ list: (tenant, subject) => call("list_incoming_webhooks", {
208
+ tenant,
209
+ subject_type: subject?.type ?? null,
210
+ subject_id: subject?.id ?? null
211
+ }, (value) => recordsOf(value, "list_incoming_webhooks").map((row) => ({
212
+ id: String(row["id"]),
213
+ tenant: String(row["tenant"]),
214
+ name: String(row["name"]),
215
+ verify: row["verify"],
216
+ signatureHeader: optionalText(row["signature_header"]) ?? null,
217
+ enabled: row["enabled"] === true,
218
+ maxBodyBytes: Number(row["max_body_bytes"]),
219
+ receiveCount: Number(row["receive_count"]),
220
+ lastReceivedAt: optionalText(row["last_received_at"]) ?? null,
221
+ lastStatus: row["last_status"] === null ? null : Number(row["last_status"]),
222
+ metadata: isRecord(row["metadata"]) ? row["metadata"] : {},
223
+ subject: typeof row["subject_type"] === "string" && typeof row["subject_id"] === "string" ? {
224
+ type: row["subject_type"],
225
+ id: row["subject_id"]
226
+ } : null,
227
+ createdBy: optionalText(row["created_by"]) ?? null,
228
+ createdAt: String(row["created_at"])
229
+ }))),
230
+ rotate: (id, rotateOptions = {}) => call("rotate_incoming_webhook", {
231
+ endpoint: id,
232
+ rotate_secret: rotateOptions.rotateSecret ?? false
233
+ }, (value) => {
234
+ const rotated = recordOf(value, "rotate_incoming_webhook");
199
235
  return {
200
- token: rotated.token,
201
- secret: rotated.secret
236
+ token: String(rotated["token"]),
237
+ secret: optionalText(rotated["secret"]) ?? null
202
238
  };
203
239
  }),
204
- rotateSecret: (id, rotateOptions = {}) => attempt(async () => {
205
- const rotated = await value(`select ${fn("rotate_incoming_webhook_secret")}($1, $2::interval) as value`, [id, rotateOptions.grace === void 0 ? null : String(rotateOptions.grace)]);
240
+ rotateSecret: (id, rotateOptions = {}) => call("rotate_incoming_webhook_secret", {
241
+ endpoint: id,
242
+ grace: rotateOptions.grace === void 0 ? null : String(rotateOptions.grace)
243
+ }, (value) => {
244
+ const rotated = recordOf(value, "rotate_incoming_webhook_secret");
206
245
  const expires = optionalText(rotated["previousSecretExpiresAt"]);
207
246
  return {
208
247
  secret: String(rotated["secret"]),
209
248
  previousSecretExpiresAt: expires === void 0 ? null : toInstant(expires)
210
249
  };
211
250
  }),
212
- update: (id, input) => attempt(async () => {
213
- const updated = await value(`select ${fn("update_incoming_webhook")}($1, $2, $3, $4, $5) as value`, [
214
- id,
215
- input.name ?? null,
216
- input.metadata === void 0 ? null : JSON.stringify(input.metadata),
217
- input.verify ?? null,
218
- input.signatureHeader ?? null
219
- ]);
251
+ update: (id, input) => call("update_incoming_webhook", {
252
+ endpoint: id,
253
+ name: input.name ?? null,
254
+ metadata: input.metadata ?? null,
255
+ verify: input.verify ?? null,
256
+ signature_header: input.signatureHeader ?? null
257
+ }, (value) => {
258
+ const updated = recordOf(value, "update_incoming_webhook");
220
259
  return {
221
260
  id: String(updated["id"]),
222
261
  tenant: String(updated["tenant"]),
@@ -227,10 +266,252 @@ function createIncomingWebhooks(sql, options = {}) {
227
266
  metadata: isRecord(updated["metadata"]) ? updated["metadata"] : {}
228
267
  };
229
268
  }),
230
- setEnabled: (id, enabled) => attempt(() => value(`select ${fn("set_incoming_webhook_enabled")}($1, $2) as value`, [id, enabled])),
231
- remove: (id) => attempt(() => value(`select ${fn("delete_incoming_webhook")}($1) as value`, [id]))
269
+ setEnabled: (id, enabled) => call("set_incoming_webhook_enabled", {
270
+ endpoint: id,
271
+ enabled
272
+ }, (value) => value === true),
273
+ remove: (id) => call("delete_incoming_webhook", { endpoint: id }, (value) => value === true)
274
+ }, options.hooks, {
275
+ block: "incoming-webhooks",
276
+ ...options.logger ? { logger: options.logger } : {}
277
+ });
278
+ }
279
+ //#endregion
280
+ //#region src/blocks/webhooks/encoders.ts
281
+ /** The default format: CloudEvents over HTTP, structured or batched per endpoint. */
282
+ function cloudEvents() {
283
+ return {
284
+ apiVersion: 1,
285
+ name: "cloudevents",
286
+ signed: true,
287
+ encode(events, target) {
288
+ const [message] = target.batch ? toHttp(events, "batch") : toHttp(events[0]);
289
+ return message;
290
+ }
232
291
  };
233
292
  }
293
+ /**
294
+ * The 0.8 body, `{ type, timestamp, data }`, with `data` from `transform`;
295
+ * a batch is a JSON array of them. Signed with Standard Webhooks like
296
+ * `cloudevents`.
297
+ */
298
+ function standardEnvelope() {
299
+ return {
300
+ apiVersion: 1,
301
+ name: "standard",
302
+ signed: true,
303
+ encode(events, target) {
304
+ const envelopes = events.map((event) => ({
305
+ type: event.type,
306
+ timestamp: event.time,
307
+ data: event.data
308
+ }));
309
+ return {
310
+ body: JSON.stringify(target.batch ? envelopes : envelopes[0]),
311
+ headers: { "content-type": "application/json" }
312
+ };
313
+ }
314
+ };
315
+ }
316
+ /** A JSON value as an OTLP `AnyValue`; 64-bit integers are strings in OTLP/JSON. */
317
+ function anyValue(value) {
318
+ if (value === null || value === void 0) return {};
319
+ if (typeof value === "string") return { stringValue: value };
320
+ if (typeof value === "boolean") return { boolValue: value };
321
+ if (typeof value === "bigint") return { intValue: value.toString() };
322
+ if (typeof value === "number") return Number.isSafeInteger(value) ? { intValue: String(value) } : { doubleValue: value };
323
+ if (Array.isArray(value)) return { arrayValue: { values: value.map(anyValue) } };
324
+ if (isRecord(value)) return { kvlistValue: { values: attributes(value) } };
325
+ return { stringValue: String(value) };
326
+ }
327
+ function attributes(record) {
328
+ return Object.entries(record).flatMap(([key, value]) => value === void 0 ? [] : [{
329
+ key,
330
+ value: anyValue(value)
331
+ }]);
332
+ }
333
+ const nanos = (time) => (time === void 0 ? temporal().Now.instant() : temporal().Instant.from(time)).epochNanoseconds.toString();
334
+ const SEVERITY_TEXT = [
335
+ "TRACE",
336
+ "DEBUG",
337
+ "INFO",
338
+ "WARN",
339
+ "ERROR",
340
+ "FATAL"
341
+ ];
342
+ /** OTLP/HTTP retries 429, 502, 503 and 504 only. */
343
+ const OTLP_RETRYABLE = /* @__PURE__ */ new Set([
344
+ 429,
345
+ 502,
346
+ 503,
347
+ 504
348
+ ]);
349
+ /**
350
+ * OTLP/HTTP logs in the JSON encoding: one `ExportLogsServiceRequest` per
351
+ * request, a log record per event with the CloudEvents attributes. Point
352
+ * the endpoint at a collector's `/v1/logs`.
353
+ */
354
+ function otlpLogs(options = {}) {
355
+ const resource = attributes({
356
+ "service.name": options.serviceName ?? "better-supabase",
357
+ ...options.resource
358
+ });
359
+ return {
360
+ apiVersion: 1,
361
+ name: "otlp-logs",
362
+ signed: false,
363
+ encode(events) {
364
+ const observed = nanos(void 0);
365
+ const logRecords = events.map((event) => {
366
+ const severity = options.severity?.(event) ?? 9;
367
+ return {
368
+ timeUnixNano: nanos(event.time),
369
+ observedTimeUnixNano: observed,
370
+ severityNumber: severity,
371
+ severityText: SEVERITY_TEXT[Math.min(Math.max(Math.ceil(severity / 4), 1), 6) - 1],
372
+ eventName: event.type,
373
+ body: anyValue(event.data),
374
+ attributes: attributes({
375
+ "cloudevents.event_id": event.id,
376
+ "cloudevents.event_source": event.source,
377
+ "cloudevents.event_spec_version": event.specversion,
378
+ "cloudevents.event_type": event.type,
379
+ "cloudevents.event_subject": event.subject
380
+ })
381
+ };
382
+ });
383
+ return {
384
+ body: JSON.stringify({ resourceLogs: [{
385
+ resource: { attributes: resource },
386
+ scopeLogs: [{
387
+ scope: { name: "better-supabase/webhooks" },
388
+ logRecords
389
+ }]
390
+ }] }),
391
+ headers: { "content-type": "application/json" }
392
+ };
393
+ },
394
+ classify(response) {
395
+ if (response.status < 200 || response.status >= 300) return OTLP_RETRYABLE.has(response.status) ? {
396
+ outcome: "retry",
397
+ error: `HTTP ${String(response.status)}`
398
+ } : {
399
+ outcome: "dead",
400
+ error: `HTTP ${String(response.status)}`
401
+ };
402
+ const partial = jsonOf(response.body)?.["partialSuccess"];
403
+ if (!isRecord(partial)) return;
404
+ const rejected = Number(partial["rejectedLogRecords"] ?? 0);
405
+ if (!(rejected > 0)) return;
406
+ const message = partial["errorMessage"];
407
+ return {
408
+ outcome: "succeeded",
409
+ error: `The collector rejected ${String(rejected)} log records${typeof message === "string" && message !== "" ? `: ${message}` : ""}`
410
+ };
411
+ }
412
+ };
413
+ }
414
+ function jsonOf(body) {
415
+ try {
416
+ const value = JSON.parse(body);
417
+ return isRecord(value) ? value : void 0;
418
+ } catch {
419
+ return;
420
+ }
421
+ }
422
+ /** HEC codes worth a retry: internal error and server busy. */
423
+ const HEC_RETRYABLE = /* @__PURE__ */ new Set([8, 9]);
424
+ /**
425
+ * The Splunk HTTP Event Collector's event format: one JSON object per
426
+ * event, the CloudEvent as `event`. Point the endpoint at
427
+ * `/services/collector/event` and set `credential_ref` to the HEC token.
428
+ */
429
+ function splunkHec(options = {}) {
430
+ return {
431
+ apiVersion: 1,
432
+ name: "splunk-hec",
433
+ signed: false,
434
+ encode(events) {
435
+ return {
436
+ body: events.map((event) => JSON.stringify({
437
+ time: (event.time === void 0 ? temporal().Now.instant() : temporal().Instant.from(event.time)).epochMilliseconds / 1e3,
438
+ ...options.host === void 0 ? {} : { host: options.host },
439
+ source: options.source ?? event.source,
440
+ sourcetype: options.sourcetype ?? "_json",
441
+ ...options.index === void 0 ? {} : { index: options.index },
442
+ event
443
+ })).join("\n"),
444
+ headers: { "content-type": "application/json" }
445
+ };
446
+ },
447
+ authorize: (token) => ({ authorization: `Splunk ${token.token}` }),
448
+ classify(response) {
449
+ const reply = jsonOf(response.body);
450
+ const code = reply?.["code"];
451
+ if (typeof code !== "number") return;
452
+ if (code === 0) return response.status >= 200 && response.status < 300 ? { outcome: "succeeded" } : void 0;
453
+ const text = reply?.["text"];
454
+ return {
455
+ outcome: HEC_RETRYABLE.has(code) ? "retry" : "dead",
456
+ error: `HEC ${String(code)}${typeof text === "string" ? `: ${text}` : ""}`
457
+ };
458
+ }
459
+ };
460
+ }
461
+ /** RFC 8935 error codes a transmitter can't fix by sending the SET again. */
462
+ const SET_RETRYABLE = /* @__PURE__ */ new Set(["invalid_key"]);
463
+ /**
464
+ * RFC 8935 push delivery of Security Event Tokens: the body is the compact
465
+ * SET from the delivery's `data.set`, one per request. The shared-signals
466
+ * block creates these endpoints (`format: 'set'`) and dispatches to them.
467
+ */
468
+ function securityEvents() {
469
+ return {
470
+ apiVersion: 1,
471
+ name: "set",
472
+ signed: false,
473
+ encode(events) {
474
+ const data = events[0]?.data;
475
+ const set = isRecord(data) ? data["set"] : void 0;
476
+ if (typeof set !== "string" || set.split(".").length !== 3) throw new TypeError("A set delivery carries a compact SET in data.set");
477
+ return {
478
+ body: set,
479
+ headers: {
480
+ "content-type": "application/secevent+jwt",
481
+ accept: "application/json"
482
+ }
483
+ };
484
+ },
485
+ classify(response) {
486
+ if (response.status === 202 || response.status === 200) return { outcome: "succeeded" };
487
+ if (response.status !== 400) return;
488
+ const reply = jsonOf(response.body);
489
+ const code = typeof reply?.["err"] === "string" ? reply["err"] : "";
490
+ const description = typeof reply?.["description"] === "string" ? `: ${reply["description"]}` : "";
491
+ return {
492
+ outcome: SET_RETRYABLE.has(code) ? "retry" : "dead",
493
+ error: `SET rejected (${code || "HTTP 400"})${description}`
494
+ };
495
+ }
496
+ };
497
+ }
498
+ /** An endpoint `format`: what the `format` column's check allows. */
499
+ const WEBHOOK_FORMAT = /^[a-z][a-z0-9-]{0,39}$/;
500
+ /** The built-in encoders by format, with `encoders` replacing any by name. */
501
+ function encoderRegistry(encoders = []) {
502
+ const registry = new Map([
503
+ cloudEvents(),
504
+ standardEnvelope(),
505
+ otlpLogs(),
506
+ splunkHec(),
507
+ securityEvents()
508
+ ].map((encoder) => [encoder.name, encoder]));
509
+ for (const encoder of encoders) {
510
+ if (!WEBHOOK_FORMAT.test(encoder.name)) throw new TypeError(`createWebhooks: encoder name "${encoder.name}" must match ${String(WEBHOOK_FORMAT)}`);
511
+ registry.set(encoder.name, encoder);
512
+ }
513
+ return registry;
514
+ }
234
515
  //#endregion
235
516
  //#region src/blocks/webhooks/url-policy.ts
236
517
  const PRIVATE_V4 = [
@@ -251,12 +532,12 @@ const PRIVATE_V4 = [
251
532
  ];
252
533
  function v4(address) {
253
534
  const parts = address.split(".");
254
- if (parts.length !== 4) return void 0;
535
+ if (parts.length !== 4) return;
255
536
  let value = 0;
256
537
  for (const part of parts) {
257
- if (!/^\d{1,3}$/.test(part)) return void 0;
538
+ if (!/^\d{1,3}$/.test(part)) return;
258
539
  const octet = Number(part);
259
- if (octet > 255) return void 0;
540
+ if (octet > 255) return;
260
541
  value = value * 256 + octet;
261
542
  }
262
543
  return value;
@@ -269,19 +550,19 @@ function v6(address) {
269
550
  if (text.includes(".")) {
270
551
  const colon = text.lastIndexOf(":");
271
552
  const embedded = v4(text.slice(colon + 1));
272
- if (embedded === void 0) return void 0;
553
+ if (embedded === void 0) return;
273
554
  const high = Math.floor(embedded / 65536).toString(16);
274
555
  const low = (embedded % 65536).toString(16);
275
556
  text = `${text.slice(0, colon + 1)}${high}:${low}`;
276
557
  }
277
558
  const halves = text.split("::");
278
- if (halves.length > 2) return void 0;
559
+ if (halves.length > 2) return;
279
560
  const groups = (part) => part === "" ? [] : part.split(":");
280
561
  const head = groups(halves[0]);
281
562
  const rest = halves.length === 2 ? groups(halves[1]) : [];
282
- if (![...head, ...rest].every((group) => /^[0-9a-f]{1,4}$/.test(group))) return void 0;
563
+ if (![...head, ...rest].every((group) => /^[0-9a-f]{1,4}$/.test(group))) return;
283
564
  const known = head.length + rest.length;
284
- if (halves.length === 1 ? known !== 8 : known > 7) return void 0;
565
+ if (halves.length === 1 ? known !== 8 : known > 7) return;
285
566
  return [
286
567
  ...head,
287
568
  ...Array.from({ length: 8 - known }, () => "0"),
@@ -324,7 +605,7 @@ const LOCAL_HOST = /(^|\.)(localhost|local|internal|home\.arpa)$/;
324
605
  /** `node:dns` without importing it, so this entry stays runtime-neutral. */
325
606
  function builtinResolver() {
326
607
  const dns = globalThis.process?.getBuiltinModule?.("node:dns");
327
- if (typeof dns !== "object" || dns === null || !("promises" in dns)) return void 0;
608
+ if (typeof dns !== "object" || dns === null || !("promises" in dns)) return;
328
609
  const { promises } = dns;
329
610
  return async (hostname) => (await promises.lookup(hostname, {
330
611
  all: true,
@@ -456,11 +737,11 @@ const REDIRECTS = /* @__PURE__ */ new Set([
456
737
  ]);
457
738
  /** `Retry-After` as seconds from now: delta-seconds or an HTTP date. */
458
739
  function parseRetryAfter(value, now = Date.now()) {
459
- if (value === null) return void 0;
740
+ if (value === null) return;
460
741
  const text = value.trim();
461
742
  if (/^\d+$/.test(text)) return Number(text);
462
743
  const at = Date.parse(text);
463
- if (Number.isNaN(at)) return void 0;
744
+ if (Number.isNaN(at)) return;
464
745
  return Math.max(0, Math.ceil((at - now) / 1e3));
465
746
  }
466
747
  /** Reads at most `limit` bytes of the body, then cancels the stream. */
@@ -588,6 +869,44 @@ function standardWebhooks(options = {}) {
588
869
  }
589
870
  };
590
871
  }
872
+ /**
873
+ * Signs with the Standard Webhooks asymmetric scheme: one `v1a,` Ed25519
874
+ * signature over `id.timestamp.body` in `webhook-signature`. Receivers
875
+ * verify it with the `whpk_` key `webhookPublicKey` returns, through
876
+ * `verifyWebhook`. Endpoints opt in with `signing = 'v1a'`.
877
+ */
878
+ function standardWebhooksAsymmetric(options) {
879
+ const names = {
880
+ id: options.headers?.id ?? "webhook-id",
881
+ timestamp: options.headers?.timestamp ?? "webhook-timestamp",
882
+ signature: options.headers?.signature ?? "webhook-signature"
883
+ };
884
+ return {
885
+ apiVersion: 1,
886
+ name: "standard-webhooks-v1a",
887
+ async sign({ id, body, timestamp, secrets }) {
888
+ const seconds = String(Math.floor(timestamp.epochMilliseconds / 1e3));
889
+ const result = await options.signer.sign(encoder.encode(`${id}.${seconds}.${body}`));
890
+ if (!result.ok) throw new Error(result.error.message);
891
+ if (result.data.alg !== "EdDSA" && result.data.alg !== "Ed25519") throw new TypeError(`v1a signatures need an Ed25519 key, not ${result.data.alg}`);
892
+ const symmetric = options.hmac ? await Promise.all(secrets.map(async (secret) => (await signWebhook(secret, {
893
+ id,
894
+ body,
895
+ timestamp
896
+ }))["webhook-signature"])) : [];
897
+ return {
898
+ [names.id]: id,
899
+ [names.timestamp]: seconds,
900
+ [names.signature]: [`v1a,${toBase64(result.data.signature)}`, ...symmetric].join(" ")
901
+ };
902
+ }
903
+ };
904
+ }
905
+ /** The `whpk_` public key of an Ed25519 JWK, for receivers of `v1a` signatures. */
906
+ function webhookPublicKey(jwk) {
907
+ if (jwk.kty !== "OKP" || jwk.crv !== "Ed25519" || jwk.x === void 0) throw new TypeError("A v1a public key is an Ed25519 JWK");
908
+ return `${PUBLIC_KEY_PREFIX}${toBase64(fromBase64(jwk.x))}`;
909
+ }
591
910
  const encoder = /* @__PURE__ */ new TextEncoder();
592
911
  const hex = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
593
912
  /**
@@ -627,8 +946,24 @@ function hmacSigner(options) {
627
946
  }
628
947
  //#endregion
629
948
  //#region src/blocks/webhooks/outgoing.ts
949
+ /** `publish_webhook_event`'s named arguments for one event. */
950
+ function publishArgs(event) {
951
+ return {
952
+ event_type: event.type,
953
+ payload: event.data ?? {},
954
+ tenant: event.tenant ?? null,
955
+ event_id: event.id ?? null,
956
+ ...event.subject === void 0 ? {} : { subject: event.subject },
957
+ ...event.readPermission === void 0 ? {} : { read_permission: event.readPermission }
958
+ };
959
+ }
630
960
  const textOf = (value) => value === null || value === void 0 ? null : String(value);
631
- function toDelivery(row) {
961
+ const textsOf = (value) => Array.isArray(value) ? value.map(String) : null;
962
+ const credentialRefOf = (value) => isRecord(value) && typeof value["provider"] === "string" ? {
963
+ ...value,
964
+ provider: value["provider"]
965
+ } : null;
966
+ function toDelivery(row, defaultFormat) {
632
967
  return {
633
968
  id: String(row["id"]),
634
969
  endpointId: String(row["endpoint_id"]),
@@ -639,6 +974,14 @@ function toDelivery(row) {
639
974
  tenant: textOf(row["tenant"]),
640
975
  eventId: textOf(row["event_id"]),
641
976
  runId: textOf(row["run_id"]),
977
+ subject: textOf(row["subject"]),
978
+ owner: textOf(row["owner"]),
979
+ principal: textOf(row["principal"]),
980
+ permissions: textsOf(row["permissions"]),
981
+ batch: row["batch"] === true,
982
+ signing: row["signing"] === "v1a" ? "v1a" : "v1",
983
+ format: typeof row["format"] === "string" ? row["format"] : defaultFormat,
984
+ credentialRef: credentialRefOf(row["credential_ref"]),
642
985
  createdAt: typeof row["created_at"] === "string" ? temporal().Instant.from(row["created_at"]) : temporal().Now.instant()
643
986
  };
644
987
  }
@@ -650,9 +993,44 @@ const SCHEDULE = [
650
993
  18e3,
651
994
  36e3
652
995
  ];
653
- const defaultBackoff = (attempt) => Math.round(Math.random() * SCHEDULE[Math.min(Math.max(attempt, 1), SCHEDULE.length) - 1]);
996
+ /** Equal jitter: at least half the step, and never under a second. */
997
+ const defaultBackoff = (attempt) => {
998
+ const step = SCHEDULE[Math.min(Math.max(attempt, 1), SCHEDULE.length) - 1];
999
+ return Math.max(1, Math.round(step / 2 + Math.random() * step / 2));
1000
+ };
654
1001
  const MAX_RETRY_AFTER = 86400;
1002
+ /** Token errors a retry can't fix. */
1003
+ const PERMANENT_CREDENTIAL_ERRORS = /* @__PURE__ */ new Set([
1004
+ "invalid_input",
1005
+ "not_found",
1006
+ "forbidden",
1007
+ "unauthorized"
1008
+ ]);
655
1009
  const defaultRetryable = (status) => status === 408 || status === 429 || status >= 500;
1010
+ /** W3C Trace Context, version 00 and the forward-compatible later versions. */
1011
+ const TRACEPARENT = /^(?!ff)[0-9a-f]{2}-(?!0{32})[0-9a-f]{32}-(?!0{16})[0-9a-f]{16}-[0-9a-f]{2}$/;
1012
+ function absoluteUri(where, value) {
1013
+ if (!URL.canParse(value)) throw new TypeError(`${where} must be an absolute URI, not "${value}"`);
1014
+ return value;
1015
+ }
1016
+ /** The CloudEvents `source`: the `source` option, else `/webhooks` on `appUrl`. */
1017
+ function sourceOf(options) {
1018
+ if (options.source !== void 0) return absoluteUri("createWebhooks: source", options.source);
1019
+ if (options.appUrl !== void 0) return new URL("/webhooks", absoluteUri("createWebhooks: appUrl", options.appUrl)).href;
1020
+ return "urn:better-supabase:webhooks";
1021
+ }
1022
+ /** The `actorId` a block event or the outbox put in the payload, if any. */
1023
+ function actorOf(payload) {
1024
+ if (!isRecord(payload)) return null;
1025
+ const actor = payload["actorId"];
1026
+ return typeof actor === "string" ? actor : null;
1027
+ }
1028
+ /** A stable `webhook-id` for a batch: the same deliveries give the same id. */
1029
+ async function batchId(deliveries) {
1030
+ const ids = deliveries.map((delivery) => delivery.id).toSorted();
1031
+ const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(ids.join("\n")));
1032
+ return `batch_${Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("").slice(0, 32)}`;
1033
+ }
656
1034
  function createWebhooks(options) {
657
1035
  applyTemporal(options);
658
1036
  const { transport } = options;
@@ -660,36 +1038,30 @@ function createWebhooks(options) {
660
1038
  const mappers = options.mappers ?? [];
661
1039
  const store = options.secrets ?? sqlSecretStore(transport, { schema });
662
1040
  const signer = options.signer ?? standardWebhooks();
1041
+ const encoders = encoderRegistry(options.encoders);
1042
+ const defaultFormat = options.defaultFormat ?? "cloudevents";
1043
+ if (!WEBHOOK_FORMAT.test(defaultFormat)) throw new TypeError(`createWebhooks: defaultFormat "${defaultFormat}" must match ${String(WEBHOOK_FORMAT)}`);
663
1044
  const maxAttempts = options.retry?.maxAttempts ?? 8;
664
1045
  const backoff = options.retry?.backoff ?? defaultBackoff;
665
1046
  const retryable = options.retry?.retryable ?? defaultRetryable;
666
1047
  const bodyLimit = options.responseBodyLimit ?? 2e3;
1048
+ const source = sourceOf(options);
1049
+ const dataschema = typeof options.dataschema === "string" ? absoluteUri("createWebhooks: dataschema", options.dataschema) : options.dataschema;
1050
+ const subscribers = options.subscribers ?? options.authorization?.delivery?.subscribers ?? (options.authorization === void 0 ? void 0 : subjectReaders(transport, { schema }));
667
1051
  let http = options.http;
668
1052
  const httpTransport = () => http ??= fetchTransport({ allowUrl: options.allowUrl ?? publicUrl() });
669
- const call = (fn, args) => transport.call(schema, fn, args);
670
- function run(fn, then) {
671
- return AsyncResult.from(async () => {
672
- try {
673
- return ok(then(await fn()));
674
- } catch (cause) {
675
- const raw = rawError(cause);
676
- return err(raw ? mapDbError(raw, mappers) : toDbError(cause));
677
- }
678
- });
679
- }
1053
+ const db = blockCall(transport, schema, mappers);
1054
+ /** A call the worker needs to go on: it throws the mapped `DbError`. */
1055
+ const call = (fn, args) => db(fn, args, (value) => value).orThrow();
1056
+ const emitEvent = blockEmitter(options);
680
1057
  function emit(type, delivery, extra = {}) {
681
- if (!options.events) return;
682
- emitBlockEvent(options.events, type, {
1058
+ emitEvent(type, {
683
1059
  endpointId: delivery.endpointId,
684
1060
  deliveryId: delivery.id,
685
1061
  eventType: delivery.type,
686
1062
  attempt: delivery.attempt,
687
1063
  ...extra
688
- }, {
689
- subject: `webhooks/${delivery.endpointId}`,
690
- ...delivery.tenant ? { tenant: delivery.tenant } : {},
691
- ...options.context ? { context: options.context } : {}
692
- });
1064
+ }, `webhooks/${delivery.endpointId}`, delivery.tenant);
693
1065
  }
694
1066
  async function complete(delivery, status, detail) {
695
1067
  const retryAfter = Math.min(detail.response?.retryAfter ?? 0, MAX_RETRY_AFTER);
@@ -710,79 +1082,186 @@ function createWebhooks(options) {
710
1082
  });
711
1083
  }
712
1084
  const failure = (delivery) => delivery.attempt >= maxAttempts ? "dead" : "retrying";
713
- async function attempt(delivery) {
714
- if (options.shouldDeliver) {
715
- let send;
716
- try {
717
- send = await options.shouldDeliver(delivery);
718
- } catch (cause) {
719
- return {
720
- outcome: "canceled",
721
- error: errorText(cause)
722
- };
723
- }
724
- if (!send) return {
725
- outcome: "canceled",
726
- error: "Canceled by shouldDeliver"
727
- };
728
- }
1085
+ async function cloudEvent(delivery) {
1086
+ const schema = typeof dataschema === "function" ? dataschema(delivery) : dataschema;
1087
+ const traceparent = options.traceparent?.(delivery);
1088
+ return {
1089
+ specversion: "1.0",
1090
+ id: delivery.id,
1091
+ source,
1092
+ type: options.typePrefix ? `${options.typePrefix.replace(/\.$/, "")}.${delivery.type}` : delivery.type,
1093
+ ...delivery.subject ? { subject: delivery.subject } : {},
1094
+ time: delivery.createdAt.toString(),
1095
+ datacontenttype: "application/json",
1096
+ ...schema === void 0 ? {} : { dataschema: absoluteUri("createWebhooks: dataschema", schema) },
1097
+ data: options.transform ? await options.transform(delivery) : delivery.payload,
1098
+ ...traceparent !== void 0 && TRACEPARENT.test(traceparent) ? { traceparent } : {}
1099
+ };
1100
+ }
1101
+ /** The headers the endpoint's `credential_ref` token becomes. */
1102
+ async function authorization(delivery, encoder) {
1103
+ const ref = delivery.credentialRef;
1104
+ if (ref === null) return ok({});
1105
+ if (!credentialRefInTenant(ref, delivery.tenant ?? void 0)) return err({
1106
+ outcome: "dead",
1107
+ error: foreignCredentialRef(delivery.tenant ?? void 0).message
1108
+ });
1109
+ if (options.credentials === void 0) return err({
1110
+ outcome: "dead",
1111
+ error: "The endpoint has a credential_ref, but no credentials provider is set"
1112
+ });
1113
+ const token = await options.credentials.getToken(ref, { subject: { type: "app" } });
1114
+ if (!token.ok) return err({
1115
+ outcome: PERMANENT_CREDENTIAL_ERRORS.has(token.error.kind) ? "dead" : "failed",
1116
+ error: token.error.message
1117
+ });
1118
+ return ok(encoder.authorize?.(token.data) ?? token.data.headers);
1119
+ }
1120
+ /** The Standard Webhooks headers, from the endpoint's secrets or `asymmetricSigner`. */
1121
+ async function signatureHeaders(deliveries, body) {
1122
+ const first = deliveries[0];
1123
+ const sign = first.signing === "v1a" ? options.asymmetricSigner : signer;
1124
+ if (sign === void 0) return err({
1125
+ outcome: "dead",
1126
+ error: "The endpoint signs with v1a, but no asymmetricSigner is set"
1127
+ });
1128
+ const secrets = await store.secrets(first.endpointId);
1129
+ if (secrets.length === 0 && first.signing === "v1") return err({
1130
+ outcome: "dead",
1131
+ error: "The endpoint has no signing secret"
1132
+ });
1133
+ return ok(await sign.sign({
1134
+ id: first.batch ? await batchId(deliveries) : first.id,
1135
+ body,
1136
+ timestamp: temporal().Now.instant(),
1137
+ secrets
1138
+ }));
1139
+ }
1140
+ /** Sends one delivery, or one batch for an endpoint that takes batches. */
1141
+ async function attempt(deliveries) {
1142
+ const first = deliveries[0];
1143
+ const encoder = encoders.get(first.format);
1144
+ if (encoder === void 0) return {
1145
+ outcome: "dead",
1146
+ error: `No encoder for the endpoint format "${first.format}"`
1147
+ };
729
1148
  let body;
730
1149
  let headers;
731
1150
  try {
732
- const secrets = await store.secrets(delivery.endpointId);
733
- if (secrets.length === 0) return {
734
- outcome: "dead",
735
- error: "The endpoint has no signing secret"
736
- };
737
- body = JSON.stringify(options.transform ? await options.transform(delivery) : {
738
- type: delivery.type,
739
- timestamp: delivery.createdAt.toString(),
740
- data: delivery.payload
1151
+ const auth = await authorization(first, encoder);
1152
+ if (!auth.ok) return auth.error;
1153
+ const events = await Promise.all(deliveries.map(cloudEvent));
1154
+ const message = await encoder.encode(events, {
1155
+ url: first.url,
1156
+ batch: first.batch,
1157
+ tenant: first.tenant
741
1158
  });
1159
+ body = message.body;
1160
+ const signature = encoder.signed ? await signatureHeaders(deliveries, body) : ok({});
1161
+ if (!signature.ok) return signature.error;
742
1162
  headers = {
743
- "content-type": "application/json",
1163
+ ...message.headers,
744
1164
  "user-agent": "better-supabase-webhooks",
745
- ...options.headers?.(delivery),
746
- ...await signer.sign({
747
- id: delivery.id,
748
- body,
749
- timestamp: temporal().Now.instant(),
750
- secrets
751
- })
1165
+ ...options.headers?.(first),
1166
+ ...auth.data,
1167
+ ...signature.data
752
1168
  };
753
1169
  } catch (cause) {
754
1170
  return {
755
- outcome: failure(delivery),
1171
+ outcome: "failed",
756
1172
  error: errorText(cause)
757
1173
  };
758
1174
  }
759
1175
  const started = Date.now();
760
1176
  try {
761
1177
  const response = await httpTransport().send({
762
- url: delivery.url,
1178
+ url: first.url,
763
1179
  headers,
764
1180
  body
765
1181
  });
766
1182
  const durationMs = Date.now() - started;
1183
+ const verdict = encoder.classify?.(response);
1184
+ if (verdict !== void 0) return {
1185
+ outcome: verdict.outcome === "retry" ? "failed" : verdict.outcome,
1186
+ response,
1187
+ durationMs,
1188
+ ...verdict.error === void 0 ? {} : { error: verdict.error }
1189
+ };
767
1190
  if (response.status >= 200 && response.status < 300) return {
768
1191
  outcome: "succeeded",
769
1192
  response,
770
1193
  durationMs
771
1194
  };
772
1195
  return {
773
- outcome: retryable(response.status) ? failure(delivery) : "dead",
1196
+ outcome: retryable(response.status) ? "failed" : "dead",
774
1197
  response,
775
1198
  durationMs,
776
1199
  error: `HTTP ${String(response.status)}`
777
1200
  };
778
1201
  } catch (cause) {
779
1202
  return {
780
- outcome: cause instanceof WebhookPolicyError ? "dead" : failure(delivery),
1203
+ outcome: cause instanceof WebhookPolicyError ? "dead" : "failed",
781
1204
  durationMs: Date.now() - started,
782
1205
  error: errorText(cause)
783
1206
  };
784
1207
  }
785
1208
  }
1209
+ /** `false` (or a throw) from `shouldDeliver` cancels the delivery. */
1210
+ async function vetoed(delivery) {
1211
+ if (!options.shouldDeliver) return;
1212
+ try {
1213
+ if (await options.shouldDeliver(delivery)) return;
1214
+ } catch (cause) {
1215
+ return {
1216
+ outcome: "canceled",
1217
+ error: errorText(cause)
1218
+ };
1219
+ }
1220
+ return {
1221
+ outcome: "canceled",
1222
+ error: "Canceled by shouldDeliver"
1223
+ };
1224
+ }
1225
+ /**
1226
+ * Runs `subscribers` once per event and stored subject over its claimed
1227
+ * deliveries. A delivery it leaves out is canceled; a throw fails every
1228
+ * delivery of the event, which then retries.
1229
+ */
1230
+ async function screen(queue) {
1231
+ const refused = /* @__PURE__ */ new Map();
1232
+ if (!subscribers) return refused;
1233
+ const byEvent = Map.groupBy(queue, (delivery) => `${delivery.eventId ?? `delivery:${delivery.id}`}\u0000${delivery.subject ?? ""}`);
1234
+ await Promise.all([...byEvent.values()].map(async (deliveries) => {
1235
+ const first = deliveries[0];
1236
+ const event = {
1237
+ type: first.type,
1238
+ tenant: first.tenant,
1239
+ actorId: actorOf(first.payload),
1240
+ payload: first.payload,
1241
+ subject: first.subject
1242
+ };
1243
+ const candidates = deliveries.map((delivery) => ({
1244
+ principal: delivery.owner ?? delivery.principal ?? delivery.endpointId,
1245
+ kind: delivery.owner ? "user" : "service",
1246
+ delivery
1247
+ }));
1248
+ let kept;
1249
+ try {
1250
+ kept = new Set(await subscribers(event, candidates));
1251
+ } catch (cause) {
1252
+ for (const delivery of deliveries) refused.set(delivery, {
1253
+ outcome: "failed",
1254
+ error: `Subscriber policy failed: ${errorText(cause)}`
1255
+ });
1256
+ return;
1257
+ }
1258
+ for (const candidate of candidates) if (!kept.has(candidate)) refused.set(candidate.delivery, {
1259
+ outcome: "canceled",
1260
+ error: "Refused by the subscriber policy"
1261
+ });
1262
+ }));
1263
+ return refused;
1264
+ }
786
1265
  async function deliver(deliverOptions = {}) {
787
1266
  const counts = {
788
1267
  succeeded: 0,
@@ -791,21 +1270,21 @@ function createWebhooks(options) {
791
1270
  canceled: 0,
792
1271
  disabled: 0
793
1272
  };
794
- const deadline = deliverOptions.budgetMs === void 0 ? Number.POSITIVE_INFINITY : Date.now() + deliverOptions.budgetMs;
1273
+ const spent = budget(deliverOptions.budgetMs);
795
1274
  const batch = deliverOptions.batch ?? 25;
796
1275
  const concurrency = Math.max(1, deliverOptions.concurrency ?? 10);
797
- async function handle(delivery) {
798
- const result = await attempt(delivery);
799
- const state = await complete(delivery, result.outcome, result);
1276
+ async function finish(delivery, result) {
1277
+ const outcome = result.outcome === "failed" ? failure(delivery) : result.outcome;
1278
+ const state = await complete(delivery, outcome, result);
800
1279
  if (state === "stale") return;
801
- switch (result.outcome) {
1280
+ switch (outcome) {
802
1281
  case "succeeded":
803
1282
  counts.succeeded += 1;
804
1283
  emit("webhook.delivered", delivery, { status: result.response?.status ?? 200 });
805
1284
  break;
806
1285
  case "retrying":
807
1286
  case "dead":
808
- if (result.outcome === "retrying") counts.retrying += 1;
1287
+ if (outcome === "retrying") counts.retrying += 1;
809
1288
  else counts.dead += 1;
810
1289
  emit("webhook.failed", delivery, {
811
1290
  ...result.response ? { status: result.response.status } : {},
@@ -815,65 +1294,81 @@ function createWebhooks(options) {
815
1294
  case "canceled":
816
1295
  counts.canceled += 1;
817
1296
  break;
818
- default: {
819
- const unknown = result.outcome;
820
- throw new TypeError(`Unknown outcome ${String(unknown)}`);
821
- }
1297
+ default: throw new TypeError(`Unknown outcome ${String(outcome)}`);
822
1298
  }
823
1299
  if (state === "disabled") {
824
1300
  counts.disabled += 1;
825
1301
  emit("webhook.disabled", delivery);
826
1302
  }
827
1303
  }
828
- while (Date.now() < deadline) {
1304
+ async function handle(deliveries) {
1305
+ const send = [];
1306
+ for (const delivery of deliveries) {
1307
+ const veto = await vetoed(delivery);
1308
+ if (veto) await finish(delivery, veto);
1309
+ else send.push(delivery);
1310
+ }
1311
+ if (send.length === 0) return;
1312
+ const result = await attempt(send);
1313
+ for (const delivery of send) await finish(delivery, result);
1314
+ }
1315
+ while (!spent.expired()) {
829
1316
  const claimed = await call("claim_webhook_deliveries", {
830
1317
  max_items: batch,
831
1318
  lease: deliverOptions.lease ?? "2 minutes",
832
1319
  max_attempts: maxAttempts
833
1320
  });
834
- const queue = (Array.isArray(claimed) ? claimed : []).filter(isRecord).map(toDelivery);
835
- const size = queue.length;
836
- await Promise.all(Array.from({ length: Math.min(concurrency, size) }, async () => {
1321
+ const deliveries = (Array.isArray(claimed) ? claimed : []).filter(isRecord).map((row) => toDelivery(row, defaultFormat));
1322
+ const size = deliveries.length;
1323
+ const refused = await screen(deliveries);
1324
+ for (const [delivery, result] of refused) await finish(delivery, result);
1325
+ const allowed = deliveries.filter((delivery) => !refused.has(delivery));
1326
+ const batched = Map.groupBy(allowed.filter((delivery) => delivery.batch), (delivery) => delivery.endpointId);
1327
+ const queue = [...allowed.filter((delivery) => !delivery.batch).map((delivery) => [delivery]), ...batched.values()];
1328
+ await Promise.all(Array.from({ length: Math.min(concurrency, queue.length) }, async () => {
837
1329
  for (let next = queue.shift(); next; next = queue.shift()) await handle(next);
838
1330
  }));
839
1331
  if (size < batch) break;
840
1332
  }
841
1333
  return counts;
842
1334
  }
843
- return {
844
- publish: (event) => run(() => call("publish_webhook_event", {
845
- event_type: event.type,
846
- payload: event.data ?? {},
847
- tenant: event.tenant ?? null,
848
- event_id: event.id ?? null
849
- }), Number),
850
- dispatch: (input) => run(() => call("dispatch_webhook", {
1335
+ const purge = (purgeOptions = {}) => db("purge_webhook_deliveries", {
1336
+ older_than: purgeOptions.olderThan === void 0 ? void 0 : seconds(purgeOptions.olderThan),
1337
+ include_dead: purgeOptions.includeDead,
1338
+ batch: purgeOptions.batch
1339
+ }, (value) => Number(value ?? 0));
1340
+ const publishMany = (events) => events.length === 0 ? AsyncResult.ok([]) : db("publish_webhook_events", { events: events.map(publishArgs) }, (value) => batchResultsOf(value, events.length, "count", Number, mappers));
1341
+ return withBlockHooks({
1342
+ purge,
1343
+ purgeJob: (jobOptions) => async () => purge(jobOptions).orThrow(),
1344
+ publish: (event) => db("publish_webhook_event", publishArgs(event), Number),
1345
+ publishMany,
1346
+ dispatch: (input) => db("dispatch_webhook", {
851
1347
  endpoint: input.endpointId,
852
1348
  event_type: input.type,
853
1349
  payload: input.data ?? {},
854
1350
  run_id: input.runId ?? null,
855
1351
  event_id: input.eventId ?? null
856
- }), String),
857
- redeliver: (deliveryId) => run(() => call("redeliver_webhook", { delivery: deliveryId }), String),
1352
+ }, String),
1353
+ redeliver: (deliveryId) => db("redeliver_webhook", { delivery: deliveryId }, String),
858
1354
  rotateSecret(endpointId, rotateOptions) {
859
1355
  if (!store.rotate) return AsyncResult.err(dbError("unexpected", "The secret store can't rotate secrets"));
860
1356
  const rotate = store.rotate.bind(store);
861
- return run(() => rotate(endpointId, rotateOptions), String);
1357
+ return AsyncResult.from(async () => {
1358
+ try {
1359
+ return ok(await rotate(endpointId, rotateOptions));
1360
+ } catch (cause) {
1361
+ return err(toBlockError(cause, mappers));
1362
+ }
1363
+ });
862
1364
  },
863
1365
  deliver,
864
1366
  deliverRoute(routeOptions) {
865
- const secret = routeOptions.secret;
866
- if (!secret) throw new TypeError("deliverRoute needs a secret, such as process.env.CRON_SECRET");
867
- return async (request) => {
868
- const instance = new URL(request.url).pathname;
869
- if (request.method !== "GET" && request.method !== "POST") return new Response(null, {
870
- status: 405,
871
- headers: { allow: "GET, POST" }
872
- });
873
- if (!verifySharedSecret(request, secret)) return problemResponse(dbError("unauthorized", "The deliver route needs its bearer secret"), {
874
- instance,
875
- format: routeOptions.problem
876
- });
1367
+ return cronRoute({
1368
+ name: "deliver",
1369
+ secret: routeOptions.secret,
1370
+ problem: routeOptions.problem
1371
+ }, async (_request, instance) => {
877
1372
  try {
878
1373
  return Response.json(await deliver({
879
1374
  budgetMs: 5e4,
@@ -886,23 +1381,72 @@ function createWebhooks(options) {
886
1381
  format: routeOptions.problem
887
1382
  });
888
1383
  }
889
- };
1384
+ });
890
1385
  },
891
- sink: (sinkOptions = {}) => {
892
- const prefix = `${sinkOptions.typePrefix ?? "dev.better-supabase"}.`;
893
- return { async send(events) {
894
- for (const event of events) {
1386
+ sink: (sinkOptions = {}) => ({ async send(events) {
1387
+ let failure;
1388
+ for (const chunk of chunksOf(events, MAX_BATCH)) {
1389
+ const results = await publishMany(chunk.map((event) => {
895
1390
  const tenant = event["partitionkey"];
896
- await call("publish_webhook_event", {
897
- event_type: event.type.startsWith(prefix) ? event.type.slice(prefix.length) : event.type,
898
- payload: event.data ?? {},
899
- tenant: typeof tenant === "string" ? tenant : null,
900
- event_id: event.id
901
- });
1391
+ return {
1392
+ type: stripTypePrefix(event.type, sinkOptions.typePrefix),
1393
+ data: event.data ?? {},
1394
+ ...typeof tenant === "string" ? { tenant } : {},
1395
+ id: event.id,
1396
+ ...event.subject === void 0 ? {} : { subject: event.subject }
1397
+ };
1398
+ }));
1399
+ if (!results.ok) {
1400
+ failure ??= new DbException(results.error);
1401
+ continue;
902
1402
  }
903
- } };
904
- }
905
- };
1403
+ for (const result of results.data) if (!result.ok) failure ??= new DbException(result.error);
1404
+ }
1405
+ if (failure !== void 0) throw failure;
1406
+ } })
1407
+ }, options.hooks, {
1408
+ block: "webhooks",
1409
+ ...options.events ? { logger: options.events.logger } : {}
1410
+ });
906
1411
  }
907
1412
  //#endregion
908
- export { INCOMING_ENDPOINT_HEADER, UnsafeUrlError, UrlCheckError, WebhookPolicyError, authHook, createIncomingWebhooks, createSafeFetch, createWebhooks, databaseChange, fetchTransport, hmacSigner, hookError, isDatabaseWebhook, isPublicAddress, publicUrl, rpcTransport, signStripeWebhook, signWebhook, sqlSecretStore, sqlTransport, standardWebhooks, stripeInboxVerify, timingSafeEqual, verifySharedSecret, verifyStripeWebhook, verifyWebhook };
1413
+ //#region src/blocks/webhooks/events.ts
1414
+ /** The `webhooks` block's event types, for its manifest and `onBlockEvent`. */
1415
+ const webhooksEvents = defineEvents({
1416
+ "webhook.delivered": event(),
1417
+ "webhook.failed": event(),
1418
+ "webhook.disabled": event(),
1419
+ "webhook.secret_rotated": event()
1420
+ });
1421
+ /** The `incoming-webhooks` block's event types, for its manifest and `onBlockEvent`. */
1422
+ const incomingWebhooksEvents = defineEvents({
1423
+ "incoming_webhook.created": event(),
1424
+ "incoming_webhook.updated": event(),
1425
+ "incoming_webhook.enabled_set": event(),
1426
+ "incoming_webhook.token_rotated": event(),
1427
+ "incoming_webhook.secret_rotated": event(),
1428
+ "incoming_webhook.deleted": event()
1429
+ });
1430
+ //#endregion
1431
+ //#region src/blocks/webhooks/manifest.ts
1432
+ /** The `webhooks` block's manifest (ADR 0029). */
1433
+ const webhooksBlock = defineBlock({
1434
+ name: "webhooks",
1435
+ sql: ["webhooks-out"],
1436
+ options: { "webhooks-out": webhooksOutSqlOptions },
1437
+ events: webhooksEvents,
1438
+ create: createWebhooks,
1439
+ category: "developer",
1440
+ recipes: ["webhook-endpoints"]
1441
+ });
1442
+ /** The `incoming-webhooks` block's manifest (ADR 0029). */
1443
+ const incomingWebhooksBlock = defineBlock({
1444
+ name: "incoming-webhooks",
1445
+ sql: ["webhooks-in"],
1446
+ options: { "webhooks-in": webhooksInSqlOptions },
1447
+ events: incomingWebhooksEvents,
1448
+ create: createIncomingWebhooks,
1449
+ category: "developer"
1450
+ });
1451
+ //#endregion
1452
+ export { INCOMING_ENDPOINT_HEADER, UnsafeUrlError, UrlCheckError, WebhookPolicyError, authHook, cloudEvents, createIncomingWebhooks, createSafeFetch, createWebhooks, databaseChange, dbTransport, fetchTransport, hmacSigner, hookError, inboxDestination, incomingWebhooksBlock, incomingWebhooksEvents, isDatabaseWebhook, isPublicAddress, jobsDestination, otlpLogs, publicUrl, rpcTransport, securityEvents, signStripeWebhook, signWebhook, splunkHec, sqlSecretStore, sqlTransport, standardEnvelope, standardWebhooks, standardWebhooksAsymmetric, stripeInboxVerify, timingSafeEqual, verifySharedSecret, verifyStripeWebhook, verifyWebhook, webhookPublicKey, webhooksBlock, webhooksEvents };