better-supabase 0.5.0 → 0.6.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 (536) hide show
  1. package/README.md +299 -41
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/actor-CQTlc1Hh.d.ts +43 -0
  4. package/dist/adapter-Bc1o3zyy.js +1106 -0
  5. package/dist/agents-CVHGd7It.d.ts +94 -0
  6. package/dist/ai-cache-CBWs1W0k.js +80 -0
  7. package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
  8. package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
  9. package/dist/ai-chat-B24UI962.js +743 -0
  10. package/dist/ai-files-CSPNswUY.js +319 -0
  11. package/dist/ai-sdk/agents/index.d.ts +74 -0
  12. package/dist/ai-sdk/agents/index.js +159 -0
  13. package/dist/ai-sdk/batches/index.d.ts +74 -0
  14. package/dist/ai-sdk/batches/index.js +180 -0
  15. package/dist/ai-sdk/cache/index.d.ts +38 -0
  16. package/dist/ai-sdk/cache/index.js +127 -0
  17. package/dist/ai-sdk/chat/index.d.ts +2 -0
  18. package/dist/ai-sdk/chat/index.js +246 -0
  19. package/dist/ai-sdk/embeddings/index.d.ts +3 -0
  20. package/dist/ai-sdk/embeddings/index.js +2 -0
  21. package/dist/ai-sdk/files/index.d.ts +61 -0
  22. package/dist/ai-sdk/files/index.js +111 -0
  23. package/dist/ai-sdk/index.d.ts +145 -0
  24. package/dist/ai-sdk/index.js +174 -0
  25. package/dist/ai-sdk/mcp/index.d.ts +102 -0
  26. package/dist/ai-sdk/mcp/index.js +362 -0
  27. package/dist/ai-sdk/memory/index.d.ts +67 -0
  28. package/dist/ai-sdk/memory/index.js +175 -0
  29. package/dist/ai-sdk/react/index.d.ts +2 -0
  30. package/dist/ai-sdk/react/index.js +3 -0
  31. package/dist/ai-sdk/react/server.d.ts +6 -0
  32. package/dist/ai-sdk/react/server.js +7 -0
  33. package/dist/ai-sdk/workflow/index.d.ts +249 -0
  34. package/dist/ai-sdk/workflow/index.js +575 -0
  35. package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
  36. package/dist/ai-sdk/workflow/react/index.js +66 -0
  37. package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
  38. package/dist/ai-sdk/workflow/react/server.js +12 -0
  39. package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
  40. package/dist/announcements-CiyOs-xP.js +107 -0
  41. package/dist/announcements-ZRGnScWI.d.ts +72 -0
  42. package/dist/api-keys-rCGtKaZA.d.ts +156 -0
  43. package/dist/assistant-DwdpDH1q.d.ts +147 -0
  44. package/dist/astro/index.d.ts +86 -0
  45. package/dist/astro/index.js +93 -0
  46. package/dist/attributes-5dYul0u0.js +13 -0
  47. package/dist/auth-link-BjFPqwLz.d.ts +97 -0
  48. package/dist/auth-link-DrDX9KOT.js +114 -0
  49. package/dist/authorization-BFCqamMs.d.ts +172 -0
  50. package/dist/before-route-CnR0C0Jr.js +30 -0
  51. package/dist/bind-Bu_ZNa3W.d.ts +62 -0
  52. package/dist/bind-l4kAvYSv.js +97 -0
  53. package/dist/block-events-CrT8r7Fe.js +76 -0
  54. package/dist/block-fields-GFkxl4dP.js +49 -0
  55. package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
  56. package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
  57. package/dist/block-helpers-DWHxHsEQ.js +190 -0
  58. package/dist/block-hooks-BmjMyXTa.js +114 -0
  59. package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
  60. package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
  61. package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
  62. package/dist/blocks/agents/index.d.ts +3 -0
  63. package/dist/blocks/agents/index.js +123 -0
  64. package/dist/blocks/ai-cache/index.d.ts +3 -0
  65. package/dist/blocks/ai-cache/index.js +3 -0
  66. package/dist/blocks/ai-chat/index.d.ts +31 -0
  67. package/dist/blocks/ai-chat/index.js +5 -0
  68. package/dist/blocks/ai-chat/react/index.d.ts +77 -0
  69. package/dist/blocks/ai-chat/react/index.js +387 -0
  70. package/dist/blocks/ai-chat/react/server.d.ts +16 -0
  71. package/dist/blocks/ai-chat/react/server.js +14 -0
  72. package/dist/blocks/ai-files/index.d.ts +14 -0
  73. package/dist/blocks/ai-files/index.js +3 -0
  74. package/dist/blocks/ai-providers/index.d.ts +7 -0
  75. package/dist/blocks/ai-providers/index.js +211 -0
  76. package/dist/blocks/ai-tasks/index.d.ts +3 -0
  77. package/dist/blocks/ai-tasks/index.js +203 -0
  78. package/dist/blocks/announcements/index.d.ts +3 -0
  79. package/dist/blocks/announcements/index.js +3 -0
  80. package/dist/blocks/announcements/react/index.d.ts +31 -0
  81. package/dist/blocks/announcements/react/index.js +86 -0
  82. package/dist/blocks/announcements/react/server.d.ts +6 -0
  83. package/dist/blocks/announcements/react/server.js +7 -0
  84. package/dist/blocks/api-keys/index.d.ts +35 -0
  85. package/dist/blocks/api-keys/index.js +334 -0
  86. package/dist/blocks/attachments/index.d.ts +210 -0
  87. package/dist/blocks/attachments/index.js +222 -0
  88. package/dist/blocks/audit/index.d.ts +366 -0
  89. package/dist/blocks/audit/index.js +714 -0
  90. package/dist/blocks/billing/index.d.ts +265 -0
  91. package/dist/blocks/billing/index.js +400 -0
  92. package/dist/blocks/comments/index.d.ts +200 -0
  93. package/dist/blocks/comments/index.js +207 -0
  94. package/dist/blocks/connectors/index.d.ts +3 -0
  95. package/dist/blocks/connectors/index.js +164 -0
  96. package/dist/blocks/data-lifecycle/index.d.ts +251 -0
  97. package/dist/blocks/data-lifecycle/index.js +353 -0
  98. package/dist/blocks/entitlements/index.d.ts +14 -0
  99. package/dist/blocks/entitlements/index.js +25 -0
  100. package/dist/blocks/flags/index.d.ts +226 -0
  101. package/dist/blocks/flags/index.js +282 -0
  102. package/dist/blocks/inbox/index.d.ts +6 -0
  103. package/dist/blocks/inbox/index.js +499 -0
  104. package/dist/blocks/inbox/react/index.d.ts +2 -0
  105. package/dist/blocks/inbox/react/index.js +225 -0
  106. package/dist/blocks/inbox/react/server.d.ts +10 -0
  107. package/dist/blocks/inbox/react/server.js +12 -0
  108. package/dist/blocks/index.d.ts +65 -0
  109. package/dist/blocks/index.js +77 -0
  110. package/dist/blocks/jobs/index.d.ts +297 -0
  111. package/dist/blocks/jobs/index.js +1051 -0
  112. package/dist/blocks/knowledge/index.d.ts +3 -0
  113. package/dist/blocks/knowledge/index.js +3 -0
  114. package/dist/blocks/memory/index.d.ts +8 -0
  115. package/dist/blocks/memory/index.js +289 -0
  116. package/dist/blocks/notifications/index.d.ts +297 -0
  117. package/dist/blocks/notifications/index.js +425 -0
  118. package/dist/blocks/notifications/react/index.d.ts +44 -0
  119. package/dist/blocks/notifications/react/index.js +67 -0
  120. package/dist/blocks/notifications/react/server.d.ts +6 -0
  121. package/dist/blocks/notifications/react/server.js +7 -0
  122. package/dist/blocks/onboarding/index.d.ts +3 -0
  123. package/dist/blocks/onboarding/index.js +64 -0
  124. package/dist/blocks/onboarding/react/index.d.ts +28 -0
  125. package/dist/blocks/onboarding/react/index.js +78 -0
  126. package/dist/blocks/onboarding/react/server.d.ts +7 -0
  127. package/dist/blocks/onboarding/react/server.js +7 -0
  128. package/dist/blocks/organizations/index.d.ts +241 -0
  129. package/dist/blocks/organizations/index.js +400 -0
  130. package/dist/blocks/outbox/index.d.ts +3 -0
  131. package/dist/blocks/outbox/index.js +266 -0
  132. package/dist/blocks/profiles/index.d.ts +40 -0
  133. package/dist/blocks/profiles/index.js +28 -0
  134. package/dist/blocks/push/index.d.ts +185 -0
  135. package/dist/blocks/push/index.js +258 -0
  136. package/dist/blocks/settings/index.d.ts +89 -0
  137. package/dist/blocks/settings/index.js +104 -0
  138. package/dist/blocks/sso/index.d.ts +198 -0
  139. package/dist/blocks/sso/index.js +1297 -0
  140. package/dist/blocks/usage/index.d.ts +4 -0
  141. package/dist/blocks/usage/index.js +233 -0
  142. package/dist/blocks/waitlist/index.d.ts +117 -0
  143. package/dist/blocks/waitlist/index.js +132 -0
  144. package/dist/blocks/webhooks/index.d.ts +304 -0
  145. package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
  146. package/dist/blocks/workflow-builder/index.d.ts +21 -0
  147. package/dist/blocks/workflow-builder/index.js +5 -0
  148. package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
  149. package/dist/blocks/workflow-builder/react/index.js +119 -0
  150. package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
  151. package/dist/blocks/workflow-builder/react/server.js +11 -0
  152. package/dist/blocks/workflows/index.d.ts +3 -0
  153. package/dist/blocks/workflows/index.js +3 -0
  154. package/dist/blocks/workflows/react/index.d.ts +47 -0
  155. package/dist/blocks/workflows/react/index.js +137 -0
  156. package/dist/blocks/workflows/react/server.d.ts +8 -0
  157. package/dist/blocks/workflows/react/server.js +11 -0
  158. package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
  159. package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
  160. package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
  161. package/dist/channels-CkgQ_X60.js +114 -0
  162. package/dist/chat-sdk/index.d.ts +303 -0
  163. package/dist/chat-sdk/index.js +733 -0
  164. package/dist/chat-sdk/react/index.d.ts +2 -0
  165. package/dist/chat-sdk/react/index.js +3 -0
  166. package/dist/chat-sdk/react/server.d.ts +3 -0
  167. package/dist/chat-sdk/react/server.js +2 -0
  168. package/dist/claims-DDBQT6BK.js +61 -0
  169. package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
  170. package/dist/cli/bin.js +1 -1
  171. package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
  172. package/dist/cli/config-B9HkL8nF.js +2 -0
  173. package/dist/cli/config-DU7EJImt.js +49 -0
  174. package/dist/cli/config-NiPxAmUF.js +1077 -0
  175. package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
  176. package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
  177. package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
  178. package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
  179. package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
  180. package/dist/cli/gen-BGLb_zou.js +3100 -0
  181. package/dist/cli/gen-DAH8FM2W.js +2 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
  186. package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
  187. package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
  188. package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
  189. package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
  190. package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
  191. package/dist/cli/read-sets-CETOSFx4.js +223 -0
  192. package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
  193. package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
  194. package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
  195. package/dist/cli/sql-D0GUtUPp.js +536 -0
  196. package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
  197. package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
  198. package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
  199. package/dist/client/index.d.ts +3 -2
  200. package/dist/client/index.js +11 -71
  201. package/dist/client/native/index.d.ts +228 -0
  202. package/dist/client/native/index.js +361 -0
  203. package/dist/client-CI0Z2zWX.js +277 -0
  204. package/dist/cloud-event-BnmD5fb9.js +46 -0
  205. package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
  206. package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
  207. package/dist/compose-BIBNgAnq.js +53 -0
  208. package/dist/composite-Bt1YK3Ke.d.ts +146 -0
  209. package/dist/composite-DhE66P5u.js +130 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
  213. package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
  214. package/dist/connector-Dv8kK0MO.d.ts +107 -0
  215. package/dist/connectors-hkLCwyEz.d.ts +120 -0
  216. package/dist/context-BCrWe7ow.d.ts +237 -0
  217. package/dist/credentials/index.d.ts +31 -0
  218. package/dist/credentials/index.js +168 -0
  219. package/dist/cron-DVPUg5k3.js +145 -0
  220. package/dist/csv-CPAzEmB6.js +25 -0
  221. package/dist/db-exception-CnWcYPxL.js +15 -0
  222. package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
  223. package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
  224. package/dist/edge/index.d.ts +69 -11
  225. package/dist/edge/index.js +191 -75
  226. package/dist/elysia/index.d.ts +59 -0
  227. package/dist/elysia/index.js +62 -0
  228. package/dist/embeddings-4ZvFzjsU.js +127 -0
  229. package/dist/embeddings-C9KGQnXt.d.ts +68 -0
  230. package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
  232. package/dist/entitlements-DRl6ZJUm.js +24 -0
  233. package/dist/envelope-DqnYGRw7.js +47 -0
  234. package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
  235. package/dist/errors-DLjJHPLK.js +44 -0
  236. package/dist/escape-like-DHfx6jRr.js +7 -0
  237. package/dist/escape-like-ImTK0ps_.d.ts +15 -0
  238. package/dist/eve/index.d.ts +220 -0
  239. package/dist/eve/index.js +504 -0
  240. package/dist/eve-gT2Fpjut.d.ts +151 -0
  241. package/dist/events/index.d.ts +4 -3
  242. package/dist/events/index.js +9 -50
  243. package/dist/events-DWDhx77e.d.ts +549 -0
  244. package/dist/executor-Bq28caBo.js +718 -0
  245. package/dist/executor-C-R4pucm.js +83 -0
  246. package/dist/executor-CaWigTyR.d.ts +148 -0
  247. package/dist/executor-D14tGopJ.d.ts +36 -0
  248. package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
  249. package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
  250. package/dist/executor-DvsBbNBS.d.ts +261 -0
  251. package/dist/expo/index.d.ts +79 -0
  252. package/dist/expo/index.js +129 -0
  253. package/dist/expo-sqlite/index.d.ts +58 -0
  254. package/dist/expo-sqlite/index.js +104 -0
  255. package/dist/field-errors-BFOa7WhB.d.ts +99 -0
  256. package/dist/field-errors-VF1yb8yI.js +13 -0
  257. package/dist/framework-CONDyPYx.js +51 -0
  258. package/dist/framework-DuVb4Xa8.d.ts +25 -0
  259. package/dist/gateway-C1ssRHnf.d.ts +130 -0
  260. package/dist/graph-BGyLLFLX.js +265 -0
  261. package/dist/h3/index.d.ts +59 -0
  262. package/dist/h3/index.js +55 -0
  263. package/dist/h3/v1/index.d.ts +63 -0
  264. package/dist/h3/v1/index.js +49 -0
  265. package/dist/history-BZih6SFP.js +64 -0
  266. package/dist/hono/index.d.ts +56 -7
  267. package/dist/hono/index.js +97 -45
  268. package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
  269. package/dist/http-Cv4T29xh.js +40 -0
  270. package/dist/http-DdYadv-o.js +126 -0
  271. package/dist/image-url-pIVlO6R1.js +41 -0
  272. package/dist/impersonation-DcqaTBHx.js +148 -0
  273. package/dist/inbox-i7E1ppo6.d.ts +384 -0
  274. package/dist/index-ACiNPN4Z.d.ts +74 -0
  275. package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
  276. package/dist/index-BkWT_uBO.d.ts +51 -0
  277. package/dist/index-BpFYMsi0.d.ts +53 -0
  278. package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
  279. package/dist/index-CaxrMD1A.d.ts +1 -0
  280. package/dist/index-ClmjK_o-.d.ts +55 -0
  281. package/dist/index-CtuakVRc.d.ts +267 -0
  282. package/dist/index-D48jVS-N.d.ts +246 -0
  283. package/dist/index-DDrYaUcq.d.ts +138 -0
  284. package/dist/index-DQh4VCc9.d.ts +98 -0
  285. package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
  286. package/dist/index.d.ts +65 -18
  287. package/dist/index.js +42 -14
  288. package/dist/invalidate-BBqhpxyB.d.ts +19 -0
  289. package/dist/json-CEnpTHlZ.js +16 -0
  290. package/dist/json-schema-CvER4kgT.js +502 -0
  291. package/dist/keys-4MnkWTTh.js +35 -0
  292. package/dist/kit-B5tid-q5.d.ts +60 -0
  293. package/dist/kit-Fm-Fv7q5.js +78 -0
  294. package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
  295. package/dist/knowledge-CDmiMLew.js +255 -0
  296. package/dist/lint/index.d.ts +1 -1
  297. package/dist/lint/index.js +37 -0
  298. package/dist/list/index.d.ts +3 -2
  299. package/dist/list/index.js +1 -444
  300. package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
  301. package/dist/list-query-gl808ac1.js +459 -0
  302. package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
  303. package/dist/logger-DWVYUmwi.d.ts +18 -0
  304. package/dist/mcp/index.d.ts +38 -11
  305. package/dist/mcp/index.js +82 -46
  306. package/dist/mcp/sdk/index.d.ts +105 -0
  307. package/dist/mcp/sdk/index.js +126 -0
  308. package/dist/message-CaKlqdsX.js +219 -0
  309. package/dist/message-CfDoR0Y6.d.ts +94 -0
  310. package/dist/messages-B9-5887d.js +715 -0
  311. package/dist/messages-DYP0sUTe.d.ts +59 -0
  312. package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
  313. package/dist/modules-DpPwzC7E.d.ts +192 -0
  314. package/dist/modules-dxrVK3ID.js +228 -0
  315. package/dist/nestjs/index.d.ts +68 -0
  316. package/dist/nestjs/index.js +164 -0
  317. package/dist/next/client/index.d.ts +35 -0
  318. package/dist/next/client/index.js +36 -0
  319. package/dist/next/image/index.js +3 -24
  320. package/dist/next/index.d.ts +150 -51
  321. package/dist/next/index.js +261 -107
  322. package/dist/node/index.d.ts +4 -0
  323. package/dist/node/index.js +210 -0
  324. package/dist/node-headers-AO06VhqH.d.ts +24 -0
  325. package/dist/node-headers-C71zNQHe.js +55 -0
  326. package/dist/nuxt/index.d.ts +60 -0
  327. package/dist/nuxt/index.js +64 -0
  328. package/dist/onboarding-BZGHYJks.d.ts +62 -0
  329. package/dist/openapi/index.d.ts +1 -1
  330. package/dist/openapi/index.js +3 -3
  331. package/dist/orpc/index.d.ts +70 -11
  332. package/dist/orpc/index.js +73 -24
  333. package/dist/otel/index.d.ts +7 -7
  334. package/dist/otel/index.js +87 -57
  335. package/dist/outbox-Cq7pPYvl.d.ts +161 -0
  336. package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
  337. package/dist/plugin-tfXW1-qO.js +45 -0
  338. package/dist/plugins/actor/index.d.ts +2 -2
  339. package/dist/plugins/actor/index.js +3 -3
  340. package/dist/plugins/rules/index.d.ts +11 -4
  341. package/dist/plugins/rules/index.js +40 -13
  342. package/dist/plugins/soft-delete/index.d.ts +5 -4
  343. package/dist/plugins/soft-delete/index.js +10 -5
  344. package/dist/plugins/tenant/index.d.ts +2 -2
  345. package/dist/plugins/tenant/index.js +18 -11
  346. package/dist/plugins/timestamps/index.d.ts +5 -3
  347. package/dist/plugins/timestamps/index.js +6 -4
  348. package/dist/plugins/validation/index.d.ts +2 -2
  349. package/dist/plugins/validation/index.js +10 -6
  350. package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
  351. package/dist/postgres/index.d.ts +4 -4
  352. package/dist/postgres/index.js +1 -2
  353. package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
  354. package/dist/powersync/index.d.ts +43 -0
  355. package/dist/powersync/index.js +199 -0
  356. package/dist/powersync/react/index.d.ts +87 -0
  357. package/dist/powersync/react/index.js +108 -0
  358. package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
  359. package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
  360. package/dist/provider-BH5UWZJ6.d.ts +113 -0
  361. package/dist/provider-Di3sRutW.js +57 -0
  362. package/dist/query/index.d.ts +4 -2
  363. package/dist/query/index.js +4 -3
  364. package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
  365. package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
  366. package/dist/react/index.d.ts +11 -7
  367. package/dist/react/index.js +7 -3
  368. package/dist/react/native/index.d.ts +116 -0
  369. package/dist/react/native/index.js +130 -0
  370. package/dist/react/server.d.ts +28 -10
  371. package/dist/react/server.js +22 -5
  372. package/dist/react/session.d.ts +2 -2
  373. package/dist/react-4ZqkP8da.js +79 -0
  374. package/dist/react-F80mF4-t.js +409 -0
  375. package/dist/react-router/index.d.ts +83 -0
  376. package/dist/react-router/index.js +89 -0
  377. package/dist/react-topic-seAWjL3_.js +38 -0
  378. package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
  379. package/dist/realtime/index.d.ts +4 -5
  380. package/dist/realtime/index.js +144 -82
  381. package/dist/refusal-CeJWxmkH.js +61 -0
  382. package/dist/refusal-D1rgbzNq.d.ts +15 -0
  383. package/dist/replicas-CwrYp5Zj.js +94 -0
  384. package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
  385. package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
  386. package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
  388. package/dist/respond-BUgsXNgk.js +91 -0
  389. package/dist/respond-DoBijysA.d.ts +93 -0
  390. package/dist/result-D7y2fT87.d.ts +282 -0
  391. package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
  392. package/dist/run-state-CPo-1X2B.d.ts +12 -0
  393. package/dist/run-state-CgBKzYMW.js +13 -0
  394. package/dist/search-CUWCRYKL.js +9 -0
  395. package/dist/server/index.d.ts +143 -21
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
  398. package/dist/session-ChiXDZdZ.d.ts +72 -0
  399. package/dist/shared-CBxosKK3.js +75 -0
  400. package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
  401. package/dist/shared-DDSjEGDR.d.ts +11 -0
  402. package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
  403. package/dist/sign-in-Cb1mwv6X.js +86 -0
  404. package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
  405. package/dist/simplify-DDO0j0LI.js +83 -0
  406. package/dist/solid/index.d.ts +131 -0
  407. package/dist/solid/index.js +344 -0
  408. package/dist/solid-start/index.d.ts +75 -0
  409. package/dist/solid-start/index.js +58 -0
  410. package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
  411. package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
  412. package/dist/sql/index.d.ts +330 -194
  413. package/dist/sql/index.js +34901 -6489
  414. package/dist/ssr/index.d.ts +6 -5
  415. package/dist/ssr/index.js +3 -3
  416. package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
  417. package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
  418. package/dist/stats-D_AD9GGu.js +1123 -0
  419. package/dist/storage/index.d.ts +5 -5
  420. package/dist/storage/index.js +1027 -368
  421. package/dist/store-BdH5ruDx.js +66 -0
  422. package/dist/store-CGjgWu5n.d.ts +68 -0
  423. package/dist/streams/index.d.ts +76 -0
  424. package/dist/streams/index.js +77 -0
  425. package/dist/streams/redis/index.d.ts +52 -0
  426. package/dist/streams/redis/index.js +185 -0
  427. package/dist/stripe-BMj5LtsT.js +38 -0
  428. package/dist/stripe-D04h-QBT.d.ts +136 -0
  429. package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
  430. package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  431. package/dist/svelte/index.d.ts +114 -0
  432. package/dist/svelte/index.js +344 -0
  433. package/dist/sveltekit/index.d.ts +116 -0
  434. package/dist/sveltekit/index.js +106 -0
  435. package/dist/tags-B99_U9Pp.js +39 -0
  436. package/dist/tags-Cx-LnIQP.d.ts +30 -0
  437. package/dist/tanstack-db/index.d.ts +71 -0
  438. package/dist/tanstack-db/index.js +72 -0
  439. package/dist/tanstack-start/index.d.ts +75 -0
  440. package/dist/tanstack-start/index.js +95 -0
  441. package/dist/tee-CoEppCER.js +101 -0
  442. package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
  443. package/dist/template-CwO38Do8.d.ts +6 -0
  444. package/dist/temporal-BJGitm-h.js +79 -0
  445. package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
  446. package/dist/tenant-I1TEZ_BX.js +27 -0
  447. package/dist/tenant-icPeuUBN.d.ts +17 -0
  448. package/dist/testing/index.d.ts +343 -37
  449. package/dist/testing/index.js +1186 -79
  450. package/dist/timing-CyTQPubY.js +92 -0
  451. package/dist/ttl-Hr34gRu8.js +12 -0
  452. package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
  453. package/dist/types-BI-0Sl2v.d.ts +359 -0
  454. package/dist/types-C05bxW-W.d.ts +220 -0
  455. package/dist/types-DGs5L0VN.d.ts +192 -0
  456. package/dist/types-TaiEeBGA.d.ts +156 -0
  457. package/dist/usage-CrvrL2vw.d.ts +177 -0
  458. package/dist/user-change-XzvgafU4.js +130 -0
  459. package/dist/vault-CSO7ss5C.d.ts +50 -0
  460. package/dist/vercel-connect/index.d.ts +47 -0
  461. package/dist/vercel-connect/index.js +119 -0
  462. package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
  463. package/dist/verify-DPuWngD4.d.ts +172 -0
  464. package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
  467. package/dist/vue/index.d.ts +141 -0
  468. package/dist/vue/index.js +362 -0
  469. package/dist/watch-DI34G86j.d.ts +60 -0
  470. package/dist/watch-Xuxrvxq-.js +122 -0
  471. package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
  472. package/dist/workflow-builder-DJ1oHn8g.js +398 -0
  473. package/dist/workflow-sdk/builder/index.d.ts +85 -0
  474. package/dist/workflow-sdk/builder/index.js +250 -0
  475. package/dist/workflow-sdk/index.d.ts +14 -0
  476. package/dist/workflow-sdk/index.js +3 -0
  477. package/dist/workflow-sdk/world/index.d.ts +107 -0
  478. package/dist/workflow-sdk/world/index.js +702 -0
  479. package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
  480. package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
  481. package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
  482. package/dist/workflows-B0j9WKPu.d.ts +185 -0
  483. package/dist/workflows-wu1WWBn7.js +216 -0
  484. package/package.json +470 -29
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +21 -1
  488. package/schemas/snapshot-v2.json +8 -0
  489. package/skills/better-supabase/SKILL.md +41 -12
  490. package/skills/better-supabase/references/frontend.md +96 -0
  491. package/skills/better-supabase/references/plugins.md +10 -6
  492. package/skills/better-supabase/references/troubleshooting.md +2 -1
  493. package/skills/better-supabase-api/SKILL.md +76 -22
  494. package/skills/better-supabase-api/references/adapters.md +207 -0
  495. package/skills/better-supabase-api/references/ai.md +125 -0
  496. package/skills/better-supabase-api/references/expo.md +65 -0
  497. package/skills/better-supabase-api/references/powersync.md +35 -0
  498. package/skills/better-supabase-api/references/streams-credentials.md +105 -0
  499. package/skills/better-supabase-auth/SKILL.md +62 -18
  500. package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
  501. package/skills/better-supabase-testing/SKILL.md +3 -1
  502. package/dist/cli/config-dtoekM0v.js +0 -2
  503. package/dist/cli/gen-BJc9vdyu.js +0 -2
  504. package/dist/cli/gen-C2osRcr5.js +0 -2204
  505. package/dist/cli/read-sets-BfMQcKy8.js +0 -289
  506. package/dist/cli/sql-DzPbfngx.js +0 -348
  507. package/dist/entitlements-CTEBm7IB.js +0 -20
  508. package/dist/events-aIO7vsIk.d.ts +0 -230
  509. package/dist/executor-BunPOO-k.d.ts +0 -402
  510. package/dist/executor-XycESQPH.js +0 -94
  511. package/dist/impersonation-VfaGc4Q_.js +0 -41
  512. package/dist/index-BGdgBPdf.d.ts +0 -161
  513. package/dist/index-DOESKG27.d.ts +0 -100
  514. package/dist/index-DmXSxbLi.d.ts +0 -62
  515. package/dist/index-Dxn2a5cw.d.ts +0 -50
  516. package/dist/jobs/index.d.ts +0 -226
  517. package/dist/jobs/index.js +0 -1007
  518. package/dist/json-schema-m1fiwKgN.js +0 -208
  519. package/dist/kit-events-CTFDfSwb.js +0 -60
  520. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  521. package/dist/kits-CGLLrNPd.js +0 -157
  522. package/dist/notifications/index.d.ts +0 -162
  523. package/dist/notifications/index.js +0 -264
  524. package/dist/orgs/index.d.ts +0 -132
  525. package/dist/orgs/index.js +0 -245
  526. package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
  527. package/dist/permdock-sql-DgOfeixi.js +0 -51
  528. package/dist/plugin-DwARMuQp.js +0 -59
  529. package/dist/server-Csx2sRjg.js +0 -655
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-DT-OhSxD.d.ts +0 -88
  532. package/dist/template-mbvlysOo.d.ts +0 -6
  533. package/dist/temporal-CVlIV2DZ.js +0 -40
  534. package/dist/user-change-CHFEUro1.js +0 -49
  535. package/dist/webhooks/index.d.ts +0 -285
  536. package/skills/better-supabase-auth/references/permdock.md +0 -100
@@ -1,12 +1,448 @@
1
- import { c as mapDbError, n as dbError } from "../errors-DtwXa6b8.js";
2
- import { t as temporal } from "../temporal-required-CAt4Dc9Z.js";
3
- import { i as ok, n as err, o as toDbError, t as AsyncResult } from "../result-BKiliPY7.js";
4
- import { i as toBase64 } from "../base64-D2gsioCY.js";
5
- import { a as problemResponse } from "../problem-BW1KhzSG.js";
6
- import { n as emitKitEvent } from "../kit-events-CTFDfSwb.js";
7
- import { a as signWebhook, c as verifyWebhook, i as isDatabaseWebhook, n as databaseChange, o as timingSafeEqual, r as hookError, s as verifySharedSecret, t as authHook } from "../verify-Ce49ETPz.js";
8
- import { n as rpcTransport, r as sqlTransport, t as rawError } from "../kit-transport-DJlHQUBU.js";
9
- //#region src/webhooks/http.ts
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";
11
+ //#region src/blocks/webhooks/incoming.ts
12
+ /** The header that carries an endpoint's id on stored deliveries. */
13
+ const INCOMING_ENDPOINT_HEADER = "x-bs-endpoint-id";
14
+ const IDENT = /^[a-z_][a-z0-9_]*$/;
15
+ const VERIFY_MODES = [
16
+ "none",
17
+ "standard-webhooks",
18
+ "hmac-sha256",
19
+ "shared-secret"
20
+ ];
21
+ function verifyOf(value) {
22
+ const mode = VERIFY_MODES.find((entry) => entry === value);
23
+ if (mode === void 0) throw new TypeError(`Unknown verification mode ${String(value)}`);
24
+ return mode;
25
+ }
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
+ /**
47
+ * Tenant-owned trigger URLs over the `webhooks-in` SQL module: create
48
+ * endpoints, then route `/hooks/<token>` to `receive`. Deliveries land in
49
+ * the webhook inbox (`createWebhookInbox`), where a worker processes them.
50
+ */
51
+ function createIncomingWebhooks(sql, options = {}) {
52
+ applyTemporal(options);
53
+ const schema = options.schema ?? "better_supabase";
54
+ if (!IDENT.test(schema)) throw new TypeError(`createIncomingWebhooks: "${schema}" is not a schema name`);
55
+ const source = options.source ?? "webhook-in";
56
+ 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 {
62
+ async receive(request, token) {
63
+ const instance = new URL(request.url).pathname;
64
+ if (request.method !== "POST") return new Response(null, {
65
+ status: 405,
66
+ headers: { allow: "POST" }
67
+ });
68
+ 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
+ instance,
70
+ format: options.problem
71
+ }));
72
+ try {
73
+ const [endpoint] = await sql.queryRaw(`select * from ${fn("incoming_webhook_by_token")}($1)`, [token]);
74
+ if (!endpoint?.enabled) return await problem(dbError("not_found", "No such webhook endpoint"));
75
+ const body = await readBodyCapped(request, endpoint.max_body_bytes);
76
+ if (body === void 0) return await problem({
77
+ ...dbError("invalid_input", "The body is too large", { code: "WEBHOOK_TOO_LARGE" }),
78
+ status: 413
79
+ }, endpoint.id);
80
+ 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);
88
+ }
89
+ let messageId = request.headers.get("webhook-id") ?? request.headers.get("svix-id") ?? crypto.randomUUID();
90
+ if (endpoint.verify === "standard-webhooks") {
91
+ let verified = await verifyWebhook({
92
+ headers: request.headers,
93
+ body
94
+ }, endpoint.secret ?? "");
95
+ if (!verified.ok && endpoint.previous_secret) {
96
+ const previous = await verifyWebhook({
97
+ headers: request.headers,
98
+ body
99
+ }, endpoint.previous_secret);
100
+ if (previous.ok) verified = previous;
101
+ }
102
+ if (!verified.ok) return await problem(verified.error, endpoint.id);
103
+ messageId = verified.data.id;
104
+ } else if (endpoint.verify === "shared-secret") {
105
+ const given = request.headers.get(endpoint.signature_header ?? "x-webhook-secret") ?? "";
106
+ const matches = endpoint.secret !== null && timingSafeEqual(given, endpoint.secret) || endpoint.previous_secret !== null && endpoint.previous_secret !== void 0 && timingSafeEqual(given, endpoint.previous_secret);
107
+ if (given === "" || !matches) return await problem(dbError("unauthorized", "Invalid webhook secret", { code: "WEBHOOK_INVALID_SIGNATURE" }), endpoint.id);
108
+ } else if (endpoint.verify === "hmac-sha256") {
109
+ const signature = (request.headers.get(endpoint.signature_header ?? "x-signature") ?? "").replace(/^sha256=/, "");
110
+ let expected = await hmacHex(endpoint.secret ?? "", body);
111
+ if (!timingSafeEqual(signature, expected) && endpoint.previous_secret) {
112
+ const previous = await hmacHex(endpoint.previous_secret, body);
113
+ if (timingSafeEqual(signature, previous)) expected = previous;
114
+ }
115
+ if (!timingSafeEqual(signature, expected)) return await problem(dbError("unauthorized", "Invalid webhook signature", { code: "WEBHOOK_INVALID_SIGNATURE" }), endpoint.id);
116
+ messageId = `hmac:${expected}`;
117
+ }
118
+ let payload = body;
119
+ try {
120
+ payload = body === "" ? {} : JSON.parse(body);
121
+ } catch {
122
+ payload = { body };
123
+ }
124
+ const secretHeader = endpoint.verify === "shared-secret" ? (endpoint.signature_header ?? "x-webhook-secret").toLowerCase() : void 0;
125
+ const kept = (options.keepHeaders ?? []).flatMap((name) => {
126
+ if (name.toLowerCase() === secretHeader) return [];
127
+ const header = request.headers.get(name);
128
+ return header === null ? [] : [[name.toLowerCase(), header]];
129
+ });
130
+ 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)", [
132
+ 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;
140
+ await sql.queryRaw(`select ${fn("record_incoming_webhook")}($1, $2)`, [endpoint.id, status]);
141
+ return Response.json({
142
+ id: Number(stored?.id),
143
+ duplicate: stored?.duplicate ?? false
144
+ }, { status });
145
+ } catch (cause) {
146
+ return problemResponse(asDbError(cause), {
147
+ instance,
148
+ format: options.problem
149
+ });
150
+ }
151
+ },
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;
163
+ return {
164
+ ...rest,
165
+ tenant: String(created.tenant),
166
+ subject: subjectType && subjectId ? {
167
+ type: subjectType,
168
+ id: subjectId
169
+ } : null
170
+ };
171
+ }),
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]);
199
+ return {
200
+ token: rotated.token,
201
+ secret: rotated.secret
202
+ };
203
+ }),
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)]);
206
+ const expires = optionalText(rotated["previousSecretExpiresAt"]);
207
+ return {
208
+ secret: String(rotated["secret"]),
209
+ previousSecretExpiresAt: expires === void 0 ? null : toInstant(expires)
210
+ };
211
+ }),
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
+ ]);
220
+ return {
221
+ id: String(updated["id"]),
222
+ tenant: String(updated["tenant"]),
223
+ name: String(updated["name"]),
224
+ verify: verifyOf(updated["verify"]),
225
+ secret: optionalText(updated["secret"]) ?? null,
226
+ signatureHeader: optionalText(updated["signatureHeader"]) ?? null,
227
+ metadata: isRecord(updated["metadata"]) ? updated["metadata"] : {}
228
+ };
229
+ }),
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]))
232
+ };
233
+ }
234
+ //#endregion
235
+ //#region src/blocks/webhooks/url-policy.ts
236
+ const PRIVATE_V4 = [
237
+ [0, 8],
238
+ [167772160, 8],
239
+ [1681915904, 10],
240
+ [2130706432, 8],
241
+ [2851995648, 16],
242
+ [2886729728, 12],
243
+ [3221225472, 24],
244
+ [3221225984, 24],
245
+ [3232235520, 16],
246
+ [3323068416, 15],
247
+ [3325256704, 24],
248
+ [3405803776, 24],
249
+ [3758096384, 4],
250
+ [4026531840, 4]
251
+ ];
252
+ function v4(address) {
253
+ const parts = address.split(".");
254
+ if (parts.length !== 4) return void 0;
255
+ let value = 0;
256
+ for (const part of parts) {
257
+ if (!/^\d{1,3}$/.test(part)) return void 0;
258
+ const octet = Number(part);
259
+ if (octet > 255) return void 0;
260
+ value = value * 256 + octet;
261
+ }
262
+ return value;
263
+ }
264
+ const publicV4 = (value) => !PRIVATE_V4.some(([base, bits]) => Math.floor(value / 2 ** (32 - bits)) === Math.floor(base / 2 ** (32 - bits)));
265
+ function v6(address) {
266
+ let text = address.toLowerCase();
267
+ const zone = text.indexOf("%");
268
+ if (zone !== -1) text = text.slice(0, zone);
269
+ if (text.includes(".")) {
270
+ const colon = text.lastIndexOf(":");
271
+ const embedded = v4(text.slice(colon + 1));
272
+ if (embedded === void 0) return void 0;
273
+ const high = Math.floor(embedded / 65536).toString(16);
274
+ const low = (embedded % 65536).toString(16);
275
+ text = `${text.slice(0, colon + 1)}${high}:${low}`;
276
+ }
277
+ const halves = text.split("::");
278
+ if (halves.length > 2) return void 0;
279
+ const groups = (part) => part === "" ? [] : part.split(":");
280
+ const head = groups(halves[0]);
281
+ const rest = halves.length === 2 ? groups(halves[1]) : [];
282
+ if (![...head, ...rest].every((group) => /^[0-9a-f]{1,4}$/.test(group))) return void 0;
283
+ const known = head.length + rest.length;
284
+ if (halves.length === 1 ? known !== 8 : known > 7) return void 0;
285
+ return [
286
+ ...head,
287
+ ...Array.from({ length: 8 - known }, () => "0"),
288
+ ...rest
289
+ ].map((group) => Number.parseInt(group, 16));
290
+ }
291
+ function publicV6(groups) {
292
+ const [first = 0] = groups;
293
+ const zeros = (from, to) => groups.slice(from, to).every((group) => group === 0);
294
+ const embedded = groups[6] * 65536 + groups[7];
295
+ if (zeros(0, 8)) return false;
296
+ if (zeros(0, 7) && groups[7] === 1) return false;
297
+ if (zeros(0, 5) && groups[5] === 65535) return publicV4(embedded);
298
+ if (first === 100 && groups[1] === 65435 && zeros(2, 6)) return publicV4(embedded);
299
+ if (zeros(0, 6)) return false;
300
+ if (first === 100 && groups[1] === 65435 && groups[2] === 1) return false;
301
+ if (first === 8194) return publicV4(groups[1] * 65536 + groups[2]);
302
+ if (first === 8193 && groups[1] === 0) return false;
303
+ if ((first & 65024) === 64512) return false;
304
+ if ((first & 65472) === 65152) return false;
305
+ if ((first & 65472) === 65216) return false;
306
+ if ((first & 65280) === 65280) return false;
307
+ if (first === 8193 && groups[1] === 3512) return false;
308
+ if (first === 256 && zeros(1, 4)) return false;
309
+ return true;
310
+ }
311
+ /**
312
+ * Whether an IP address is reachable on the public internet: not loopback,
313
+ * private, link-local (cloud metadata), carrier-grade NAT, multicast or
314
+ * reserved. Returns `false` for anything that isn't an IP address.
315
+ */
316
+ function isPublicAddress(address) {
317
+ const ipv4 = v4(address);
318
+ if (ipv4 !== void 0) return publicV4(ipv4);
319
+ const ipv6 = v6(address.replaceAll(/^\[|\]$/g, ""));
320
+ return ipv6 !== void 0 && publicV6(ipv6);
321
+ }
322
+ const isAddress = (host) => v4(host) !== void 0 || v6(host) !== void 0;
323
+ const LOCAL_HOST = /(^|\.)(localhost|local|internal|home\.arpa)$/;
324
+ /** `node:dns` without importing it, so this entry stays runtime-neutral. */
325
+ function builtinResolver() {
326
+ const dns = globalThis.process?.getBuiltinModule?.("node:dns");
327
+ if (typeof dns !== "object" || dns === null || !("promises" in dns)) return void 0;
328
+ const { promises } = dns;
329
+ return async (hostname) => (await promises.lookup(hostname, {
330
+ all: true,
331
+ verbatim: true
332
+ })).map((entry) => entry.address);
333
+ }
334
+ /**
335
+ * The default `allowUrl`: HTTPS only, no credentials in the URL, no local
336
+ * host names, and every address the host resolves to must be public. The
337
+ * delivery transport calls it again for each redirect.
338
+ *
339
+ * DNS can change between this check and the connection. Route webhooks
340
+ * through an egress proxy when that matters.
341
+ */
342
+ function publicUrl(options = {}) {
343
+ const resolve = options.resolve === false ? void 0 : options.resolve ?? builtinResolver();
344
+ if (options.resolve === void 0 && !resolve) throw new TypeError("publicUrl() needs a resolve option on runtimes without node:dns, or resolve: false to skip the DNS check");
345
+ const trusted = new Set(options.allowHosts?.map((host) => host.toLowerCase()));
346
+ return async (url) => {
347
+ const host = url.hostname.toLowerCase().replaceAll(/^\[|\]$/g, "");
348
+ if (trusted.has(host)) return true;
349
+ if (url.protocol !== "https:" && !(options.allowHttp && url.protocol === "http:")) return false;
350
+ if (url.username || url.password) return false;
351
+ if (isAddress(host)) return isPublicAddress(host);
352
+ if (LOCAL_HOST.test(host) || !host.includes(".")) return false;
353
+ if (!resolve) return true;
354
+ const addresses = await resolve(host);
355
+ return addresses.length > 0 && addresses.every(isPublicAddress);
356
+ };
357
+ }
358
+ //#endregion
359
+ //#region src/blocks/webhooks/safe-fetch.ts
360
+ /** A request `safeFetch` refused: a URL outside the policy or too many redirects. */
361
+ var UnsafeUrlError = class extends Error {
362
+ name = "UnsafeUrlError";
363
+ };
364
+ var UrlCheckError = class extends Error {
365
+ name = "UrlCheckError";
366
+ };
367
+ const REDIRECTS$1 = /* @__PURE__ */ new Set([
368
+ 301,
369
+ 302,
370
+ 303,
371
+ 307,
372
+ 308
373
+ ]);
374
+ /**
375
+ * Whether a redirect keeps the method and body, as fetch does: 307 and 308
376
+ * always, 301 and 302 except for POST, 303 only for HEAD.
377
+ */
378
+ const keepsMethod = (status, method) => status === 307 || status === 308 || (status === 301 || status === 302) && method !== "POST" || status === 303 && method === "HEAD";
379
+ /** Headers a redirect to another origin drops, as fetch does. */
380
+ const CREDENTIALS = [
381
+ "authorization",
382
+ "cookie",
383
+ "proxy-authorization"
384
+ ];
385
+ /**
386
+ * A `fetch` for URLs that users or tenants supply (link previews, imports,
387
+ * avatars by URL, callback URLs): it refuses private, loopback and
388
+ * link-local addresses, non-HTTPS URLs and credentials in the URL, checks
389
+ * every redirect against the same policy before following it, and stops
390
+ * after `timeoutMs`. It throws `UnsafeUrlError` for a refused URL and
391
+ * `UrlCheckError` when the check itself failed (a DNS lookup error). A redirect
392
+ * to another origin drops the credential headers and `sensitiveHeaders`.
393
+ *
394
+ * DNS can change between the check and the connection; route the requests
395
+ * through an egress proxy when that matters.
396
+ */
397
+ function createSafeFetch(options = {}) {
398
+ const send = options.fetch ?? globalThis.fetch;
399
+ const allowUrl = options.allowUrl ?? publicUrl(options);
400
+ const maxRedirects = options.maxRedirects ?? 3;
401
+ const timeoutMs = options.timeoutMs ?? 1e4;
402
+ const sensitive = [...CREDENTIALS, ...options.sensitiveHeaders ?? []];
403
+ const check = async (url) => {
404
+ let ok;
405
+ try {
406
+ ok = await allowUrl(url);
407
+ } catch (error) {
408
+ throw new UrlCheckError(`Could not check URL: ${url.host}`, { cause: error });
409
+ }
410
+ if (!ok) throw new UnsafeUrlError(`URL is not allowed: ${url.host}`);
411
+ };
412
+ return async (input, init) => {
413
+ await check(new URL(input instanceof Request ? input.url : String(input)));
414
+ const request = new Request(input, init);
415
+ const timeout = AbortSignal.timeout(timeoutMs);
416
+ const signal = AbortSignal.any([request.signal, timeout]);
417
+ let url = new URL(request.url);
418
+ let method = request.method;
419
+ const headers = new Headers(request.headers);
420
+ let body = method === "GET" || method === "HEAD" ? void 0 : await request.arrayBuffer();
421
+ for (let hop = 0;; hop++) {
422
+ if (hop > 0) await check(url);
423
+ const response = await send(url, {
424
+ method,
425
+ headers,
426
+ ...body === void 0 ? {} : { body },
427
+ redirect: "manual",
428
+ signal
429
+ });
430
+ if (!REDIRECTS$1.has(response.status)) return response;
431
+ await response.body?.cancel();
432
+ const location = response.headers.get("location");
433
+ if (!location || hop >= maxRedirects) throw new UnsafeUrlError(location ? `More than ${String(maxRedirects)} redirects` : `Redirect ${String(response.status)} without a location`);
434
+ if (!keepsMethod(response.status, method)) {
435
+ method = "GET";
436
+ body = void 0;
437
+ }
438
+ const next = new URL(location, url);
439
+ if (next.origin !== url.origin) for (const name of sensitive) headers.delete(name);
440
+ url = next;
441
+ }
442
+ };
443
+ }
444
+ //#endregion
445
+ //#region src/blocks/webhooks/http.ts
10
446
  /** A delivery that must not be retried, e.g. a URL `allowUrl` rejected. */
11
447
  var WebhookPolicyError = class extends Error {
12
448
  name = "WebhookPolicyError";
@@ -47,11 +483,15 @@ async function readCapped(response, limit) {
47
483
  await reader.cancel().catch(() => void 0);
48
484
  }
49
485
  }
486
+ /**
487
+ * A check that threw (a DNS lookup that timed out) is not a refusal: it
488
+ * throws `UrlCheckError`, which the delivery retries.
489
+ */
50
490
  async function allowed(allowUrl, url) {
51
491
  try {
52
492
  return await allowUrl(url);
53
- } catch {
54
- return false;
493
+ } catch (cause) {
494
+ throw new UrlCheckError(`Could not check endpoint URL: ${url.host}`, { cause });
55
495
  }
56
496
  }
57
497
  /** Sends webhooks with `fetch`, following redirects only to allowed URLs. */
@@ -94,8 +534,8 @@ function fetchTransport(options = {}) {
94
534
  };
95
535
  }
96
536
  //#endregion
97
- //#region src/webhooks/secrets.ts
98
- /** The kit's `webhook_secrets` and `rotate_webhook_secret` functions. */
537
+ //#region src/blocks/webhooks/secrets.ts
538
+ /** The module's `webhook_secrets` and `rotate_webhook_secret` functions. */
99
539
  function sqlSecretStore(transport, options = {}) {
100
540
  const schema = options.schema ?? "better_supabase";
101
541
  return {
@@ -115,7 +555,7 @@ function sqlSecretStore(transport, options = {}) {
115
555
  };
116
556
  }
117
557
  //#endregion
118
- //#region src/webhooks/signers.ts
558
+ //#region src/blocks/webhooks/signers.ts
119
559
  function needSecrets(secrets) {
120
560
  if (secrets.length === 0) throw new TypeError("The endpoint has no signing secret");
121
561
  }
@@ -186,133 +626,7 @@ function hmacSigner(options) {
186
626
  };
187
627
  }
188
628
  //#endregion
189
- //#region src/webhooks/url-policy.ts
190
- const PRIVATE_V4 = [
191
- [0, 8],
192
- [167772160, 8],
193
- [1681915904, 10],
194
- [2130706432, 8],
195
- [2851995648, 16],
196
- [2886729728, 12],
197
- [3221225472, 24],
198
- [3221225984, 24],
199
- [3232235520, 16],
200
- [3323068416, 15],
201
- [3325256704, 24],
202
- [3405803776, 24],
203
- [3758096384, 4],
204
- [4026531840, 4]
205
- ];
206
- function v4(address) {
207
- const parts = address.split(".");
208
- if (parts.length !== 4) return void 0;
209
- let value = 0;
210
- for (const part of parts) {
211
- if (!/^\d{1,3}$/.test(part)) return void 0;
212
- const octet = Number(part);
213
- if (octet > 255) return void 0;
214
- value = value * 256 + octet;
215
- }
216
- return value;
217
- }
218
- const publicV4 = (value) => !PRIVATE_V4.some(([base, bits]) => Math.floor(value / 2 ** (32 - bits)) === Math.floor(base / 2 ** (32 - bits)));
219
- function v6(address) {
220
- let text = address.toLowerCase();
221
- const zone = text.indexOf("%");
222
- if (zone !== -1) text = text.slice(0, zone);
223
- if (text.includes(".")) {
224
- const colon = text.lastIndexOf(":");
225
- const embedded = v4(text.slice(colon + 1));
226
- if (embedded === void 0) return void 0;
227
- const high = Math.floor(embedded / 65536).toString(16);
228
- const low = (embedded % 65536).toString(16);
229
- text = `${text.slice(0, colon + 1)}${high}:${low}`;
230
- }
231
- const halves = text.split("::");
232
- if (halves.length > 2) return void 0;
233
- const groups = (part) => part === "" ? [] : part.split(":");
234
- const head = groups(halves[0]);
235
- const rest = halves.length === 2 ? groups(halves[1]) : [];
236
- if (![...head, ...rest].every((group) => /^[0-9a-f]{1,4}$/.test(group))) return void 0;
237
- const known = head.length + rest.length;
238
- if (halves.length === 1 ? known !== 8 : known > 7) return void 0;
239
- return [
240
- ...head,
241
- ...Array.from({ length: 8 - known }, () => "0"),
242
- ...rest
243
- ].map((group) => Number.parseInt(group, 16));
244
- }
245
- function publicV6(groups) {
246
- const [first = 0] = groups;
247
- const zeros = (from, to) => groups.slice(from, to).every((group) => group === 0);
248
- const embedded = groups[6] * 65536 + groups[7];
249
- if (zeros(0, 8)) return false;
250
- if (zeros(0, 7) && groups[7] === 1) return false;
251
- if (zeros(0, 5) && groups[5] === 65535) return publicV4(embedded);
252
- if (first === 100 && groups[1] === 65435 && zeros(2, 6)) return publicV4(embedded);
253
- if (zeros(0, 6)) return false;
254
- if (first === 100 && groups[1] === 65435 && groups[2] === 1) return false;
255
- if (first === 8194) return publicV4(groups[1] * 65536 + groups[2]);
256
- if (first === 8193 && groups[1] === 0) return false;
257
- if ((first & 65024) === 64512) return false;
258
- if ((first & 65472) === 65152) return false;
259
- if ((first & 65472) === 65216) return false;
260
- if ((first & 65280) === 65280) return false;
261
- if (first === 8193 && groups[1] === 3512) return false;
262
- if (first === 256 && zeros(1, 4)) return false;
263
- return true;
264
- }
265
- /**
266
- * Whether an IP address is reachable on the public internet: not loopback,
267
- * private, link-local (cloud metadata), carrier-grade NAT, multicast or
268
- * reserved. Returns `false` for anything that isn't an IP address.
269
- */
270
- function isPublicAddress(address) {
271
- const ipv4 = v4(address);
272
- if (ipv4 !== void 0) return publicV4(ipv4);
273
- const ipv6 = v6(address.replaceAll(/^\[|\]$/g, ""));
274
- return ipv6 !== void 0 && publicV6(ipv6);
275
- }
276
- const isAddress = (host) => v4(host) !== void 0 || v6(host) !== void 0;
277
- const LOCAL_HOST = /(^|\.)(localhost|local|internal|home\.arpa)$/;
278
- /** `node:dns` without importing it, so this entry stays runtime-neutral. */
279
- function builtinResolver() {
280
- const dns = globalThis.process?.getBuiltinModule?.("node:dns");
281
- if (typeof dns !== "object" || dns === null || !("promises" in dns)) return void 0;
282
- const { promises } = dns;
283
- return async (hostname) => (await promises.lookup(hostname, {
284
- all: true,
285
- verbatim: true
286
- })).map((entry) => entry.address);
287
- }
288
- /**
289
- * The default `allowUrl`: HTTPS only, no credentials in the URL, no local
290
- * host names, and every address the host resolves to must be public. The
291
- * delivery transport calls it again for each redirect.
292
- *
293
- * DNS can change between this check and the connection. Route webhooks
294
- * through an egress proxy when that matters.
295
- */
296
- function publicUrl(options = {}) {
297
- const resolve = options.resolve === false ? void 0 : options.resolve ?? builtinResolver();
298
- if (options.resolve === void 0 && !resolve) throw new TypeError("publicUrl() needs a resolve option on runtimes without node:dns, or resolve: false to skip the DNS check");
299
- const trusted = new Set(options.allowHosts?.map((host) => host.toLowerCase()));
300
- return async (url) => {
301
- const host = url.hostname.toLowerCase().replaceAll(/^\[|\]$/g, "");
302
- if (trusted.has(host)) return true;
303
- if (url.protocol !== "https:" && !(options.allowHttp && url.protocol === "http:")) return false;
304
- if (url.username || url.password) return false;
305
- if (isAddress(host)) return isPublicAddress(host);
306
- if (LOCAL_HOST.test(host) || !host.includes(".")) return false;
307
- if (!resolve) return true;
308
- const addresses = await resolve(host);
309
- return addresses.length > 0 && addresses.every(isPublicAddress);
310
- };
311
- }
312
- //#endregion
313
- //#region src/webhooks/outgoing.ts
314
- const DEFAULT_SCHEMA = "better_supabase";
315
- const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
629
+ //#region src/blocks/webhooks/outgoing.ts
316
630
  const textOf = (value) => value === null || value === void 0 ? null : String(value);
317
631
  function toDelivery(row) {
318
632
  return {
@@ -339,11 +653,11 @@ const SCHEDULE = [
339
653
  const defaultBackoff = (attempt) => Math.round(Math.random() * SCHEDULE[Math.min(Math.max(attempt, 1), SCHEDULE.length) - 1]);
340
654
  const MAX_RETRY_AFTER = 86400;
341
655
  const defaultRetryable = (status) => status === 408 || status === 429 || status >= 500;
342
- const errorText = (cause) => cause instanceof Error ? cause.message : String(cause);
343
656
  function createWebhooks(options) {
657
+ applyTemporal(options);
344
658
  const { transport } = options;
345
- const schema = options.schema ?? DEFAULT_SCHEMA;
346
- const mappers = options.errorMappers ?? [];
659
+ const schema = options.schema ?? "better_supabase";
660
+ const mappers = options.mappers ?? [];
347
661
  const store = options.secrets ?? sqlSecretStore(transport, { schema });
348
662
  const signer = options.signer ?? standardWebhooks();
349
663
  const maxAttempts = options.retry?.maxAttempts ?? 8;
@@ -365,7 +679,7 @@ function createWebhooks(options) {
365
679
  }
366
680
  function emit(type, delivery, extra = {}) {
367
681
  if (!options.events) return;
368
- emitKitEvent(options.events, type, {
682
+ emitBlockEvent(options.events, type, {
369
683
  endpointId: delivery.endpointId,
370
684
  deliveryId: delivery.id,
371
685
  eventType: delivery.type,
@@ -556,7 +870,10 @@ function createWebhooks(options) {
556
870
  status: 405,
557
871
  headers: { allow: "GET, POST" }
558
872
  });
559
- if (!verifySharedSecret(request, secret)) return problemResponse(dbError("unauthorized", "The deliver route needs its bearer secret"), { instance });
873
+ if (!verifySharedSecret(request, secret)) return problemResponse(dbError("unauthorized", "The deliver route needs its bearer secret"), {
874
+ instance,
875
+ format: routeOptions.problem
876
+ });
560
877
  try {
561
878
  return Response.json(await deliver({
562
879
  budgetMs: 5e4,
@@ -564,7 +881,10 @@ function createWebhooks(options) {
564
881
  }));
565
882
  } catch (cause) {
566
883
  routeOptions.onError?.(cause);
567
- return problemResponse(toDbError(cause), { instance });
884
+ return problemResponse(toDbError(cause), {
885
+ instance,
886
+ format: routeOptions.problem
887
+ });
568
888
  }
569
889
  };
570
890
  },
@@ -585,4 +905,4 @@ function createWebhooks(options) {
585
905
  };
586
906
  }
587
907
  //#endregion
588
- export { WebhookPolicyError, authHook, createWebhooks, databaseChange, fetchTransport, hmacSigner, hookError, isDatabaseWebhook, isPublicAddress, publicUrl, rpcTransport, signWebhook, sqlSecretStore, sqlTransport, standardWebhooks, timingSafeEqual, verifySharedSecret, verifyWebhook };
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 };