better-supabase 0.12.0 → 0.14.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 (1778) hide show
  1. package/README.md +129 -96
  2. package/dist/access-sql-CPoq9F86.js +207 -0
  3. package/dist/access-z7NwWtqx.js +34 -0
  4. package/dist/actor-CoveJgya.d.ts +106 -0
  5. package/dist/actor-hNajGNEK.js +150 -0
  6. package/dist/adapter-BCFAg58A.js +2190 -0
  7. package/dist/agents-CmZlLPXC.d.ts +117 -0
  8. package/dist/ai-cache-BxlOkc_M.d.ts +82 -0
  9. package/dist/ai-cache-DQikwXhJ.js +87 -0
  10. package/dist/ai-chat-DBxEz3o1.d.ts +619 -0
  11. package/dist/ai-files-t-kHmS5H.js +339 -0
  12. package/dist/ai-sdk/agents/index.d.ts +64 -52
  13. package/dist/ai-sdk/agents/index.js +35 -27
  14. package/dist/ai-sdk/batches/index.d.ts +16 -7
  15. package/dist/ai-sdk/batches/index.js +5 -5
  16. package/dist/ai-sdk/cache/index.d.ts +6 -3
  17. package/dist/ai-sdk/cache/index.js +1 -1
  18. package/dist/ai-sdk/chat/index.d.ts +1 -1
  19. package/dist/ai-sdk/chat/index.js +10 -10
  20. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  21. package/dist/ai-sdk/embeddings/index.js +1 -1
  22. package/dist/ai-sdk/files/index.d.ts +9 -9
  23. package/dist/ai-sdk/files/index.js +10 -10
  24. package/dist/ai-sdk/index.d.ts +48 -24
  25. package/dist/ai-sdk/index.js +50 -9
  26. package/dist/ai-sdk/mcp/index.d.ts +32 -26
  27. package/dist/ai-sdk/mcp/index.js +20 -20
  28. package/dist/ai-sdk/memory/index.d.ts +9 -9
  29. package/dist/ai-sdk/memory/index.js +6 -6
  30. package/dist/ai-sdk/react/index.d.ts +1 -1
  31. package/dist/ai-sdk/react/index.js +1 -1
  32. package/dist/ai-sdk/react/server.d.ts +5 -2
  33. package/dist/ai-sdk/react/server.js +4 -1
  34. package/dist/ai-sdk/workflow/index.d.ts +57 -36
  35. package/dist/ai-sdk/workflow/index.js +29 -23
  36. package/dist/ai-sdk/workflow/react/index.d.ts +7 -8
  37. package/dist/ai-sdk/workflow/react/index.js +7 -8
  38. package/dist/ai-sdk/workflow/react/server.d.ts +1 -1
  39. package/dist/ai-tasks-BDywBUgN.d.ts +166 -0
  40. package/dist/anchors-7F34QyHa.d.ts +40 -0
  41. package/dist/announcements-BeOD0zbc.js +128 -0
  42. package/dist/api-CWhpq24a.d.ts +174 -0
  43. package/dist/api-DKp2Ggz_.js +685 -0
  44. package/dist/api-keys-CboAenU8.d.ts +213 -0
  45. package/dist/api-keys-DT6Fi50R.js +318 -0
  46. package/dist/app-tables-BHrzAUFJ.d.ts +27 -0
  47. package/dist/app-tables-C5aoI5rZ.js +959 -0
  48. package/dist/approvals-bMb7dsBY.d.ts +129 -0
  49. package/dist/arazzo/index.d.ts +59 -36
  50. package/dist/arazzo/index.js +49 -41
  51. package/dist/assistant-D1yev_fR.d.ts +157 -0
  52. package/dist/astro/index.d.ts +44 -22
  53. package/dist/astro/index.js +14 -11
  54. package/dist/asyncapi/index.d.ts +23 -16
  55. package/dist/asyncapi/index.js +23 -20
  56. package/dist/attachments-Cjdgarpa.js +351 -0
  57. package/dist/attributes-BOFl922R.js +44 -0
  58. package/dist/audit-log-C3rQxeHd.js +788 -0
  59. package/dist/auth-DyF_LRxd.js +20 -0
  60. package/dist/auth-link-B4NL84XU.d.ts +104 -0
  61. package/dist/auth-link-D3-bU6yz.js +118 -0
  62. package/dist/auth-module-BEFESDC4.js +44 -0
  63. package/dist/auth-reply-jVKoAV6R.js +31 -0
  64. package/dist/authorization-BuT26_sR.d.ts +3455 -0
  65. package/dist/authorization-hooks-dLmUO_PZ.d.ts +217 -0
  66. package/dist/authorizer-DFP3gHv8.d.ts +82 -0
  67. package/dist/authorizer-DPTeL-7h.js +125 -0
  68. package/dist/availability-q3dZoZYM.d.ts +226 -0
  69. package/dist/base64-B9Wlsdj7.js +42 -0
  70. package/dist/before-route-B23K2zYU.js +30 -0
  71. package/dist/better-result/index.d.ts +26 -18
  72. package/dist/better-result/index.js +13 -9
  73. package/dist/bind-Dz8y3T5T.d.ts +95 -0
  74. package/dist/block-authors-BRTlT0qv.js +14 -0
  75. package/dist/block-authors-DzXLUiIq.d.ts +12 -0
  76. package/dist/block-controller-DTGuBemi.js +112 -0
  77. package/dist/block-env-DJiUu1fq.js +35 -0
  78. package/dist/block-env-kFcaaJLM.d.ts +10 -0
  79. package/dist/block-env-options-2e6IQrSw.js +26 -0
  80. package/dist/block-event-listener-Bu6G0TFH.js +16 -0
  81. package/dist/block-events-pBXPzwnW.js +83 -0
  82. package/dist/block-events-records-BGVyoz57.d.ts +343 -0
  83. package/dist/block-fields-3w4MZr8U.d.ts +58 -0
  84. package/dist/block-fields-DBSJSeaO.js +139 -0
  85. package/dist/block-helpers-BaugZlJV.d.ts +62 -0
  86. package/dist/block-helpers-CiKtrb6g.js +353 -0
  87. package/dist/block-hooks-BymdcD0V.js +130 -0
  88. package/dist/block-hooks-CmjPKqQ_.d.ts +117 -0
  89. package/dist/block-method-Bvsao626.js +21 -0
  90. package/dist/block-method-hsPAGFi5.d.ts +19 -0
  91. package/dist/block-names-Dbv_2wmE.js +66 -0
  92. package/dist/block-subjects-Dzq5Xn_0.js +55 -0
  93. package/dist/block-subjects-FHwLlIHU.d.ts +6 -0
  94. package/dist/block-tenant-C1sNV8_4.js +14 -0
  95. package/dist/block-transport-d53POsem.d.ts +69 -0
  96. package/dist/blocks/access/index.d.ts +9 -0
  97. package/dist/blocks/access/index.js +18 -0
  98. package/dist/blocks/access/react/index.d.ts +52 -0
  99. package/dist/blocks/access/react/index.js +73 -0
  100. package/dist/blocks/access/react/server.d.ts +11 -0
  101. package/dist/blocks/access/react/server.js +16 -0
  102. package/dist/blocks/access/solid/index.d.ts +13 -0
  103. package/dist/blocks/access/solid/index.js +14 -0
  104. package/dist/blocks/access/svelte/index.d.ts +13 -0
  105. package/dist/blocks/access/svelte/index.js +14 -0
  106. package/dist/blocks/access/vue/index.d.ts +13 -0
  107. package/dist/blocks/access/vue/index.js +14 -0
  108. package/dist/blocks/access-requests/index.d.ts +21 -15
  109. package/dist/blocks/access-requests/index.js +11 -9
  110. package/dist/blocks/activity/index.d.ts +116 -0
  111. package/dist/blocks/activity/index.js +164 -0
  112. package/dist/blocks/agents/index.d.ts +4 -4
  113. package/dist/blocks/agents/index.js +6 -7
  114. package/dist/blocks/ai-cache/index.d.ts +3 -3
  115. package/dist/blocks/ai-cache/index.js +3 -3
  116. package/dist/blocks/ai-chat/index.d.ts +10 -7
  117. package/dist/blocks/ai-chat/index.js +4 -4
  118. package/dist/blocks/ai-chat/react/index.d.ts +18 -9
  119. package/dist/blocks/ai-chat/react/index.js +8 -8
  120. package/dist/blocks/ai-chat/react/server.d.ts +12 -3
  121. package/dist/blocks/ai-chat/react/server.js +12 -3
  122. package/dist/blocks/ai-chat/solid/index.d.ts +3 -3
  123. package/dist/blocks/ai-chat/solid/index.js +2 -2
  124. package/dist/blocks/ai-chat/svelte/index.d.ts +3 -3
  125. package/dist/blocks/ai-chat/svelte/index.js +2 -2
  126. package/dist/blocks/ai-chat/vue/index.d.ts +3 -3
  127. package/dist/blocks/ai-chat/vue/index.js +2 -2
  128. package/dist/blocks/ai-files/index.d.ts +5 -5
  129. package/dist/blocks/ai-files/index.js +3 -3
  130. package/dist/blocks/ai-providers/index.d.ts +4 -4
  131. package/dist/blocks/ai-providers/index.js +8 -9
  132. package/dist/blocks/ai-tasks/index.d.ts +3 -3
  133. package/dist/blocks/ai-tasks/index.js +9 -10
  134. package/dist/blocks/announcements/index.d.ts +4 -4
  135. package/dist/blocks/announcements/index.js +5 -5
  136. package/dist/blocks/announcements/react/index.d.ts +12 -5
  137. package/dist/blocks/announcements/react/index.js +7 -7
  138. package/dist/blocks/announcements/react/server.d.ts +4 -1
  139. package/dist/blocks/announcements/react/server.js +4 -1
  140. package/dist/blocks/announcements/solid/index.d.ts +3 -3
  141. package/dist/blocks/announcements/solid/index.js +2 -2
  142. package/dist/blocks/announcements/svelte/index.d.ts +3 -3
  143. package/dist/blocks/announcements/svelte/index.js +2 -2
  144. package/dist/blocks/announcements/vue/index.d.ts +3 -3
  145. package/dist/blocks/announcements/vue/index.js +2 -2
  146. package/dist/blocks/api-keys/index.d.ts +11 -8
  147. package/dist/blocks/api-keys/index.js +8 -8
  148. package/dist/blocks/api-keys/react/index.d.ts +11 -8
  149. package/dist/blocks/api-keys/react/index.js +9 -9
  150. package/dist/blocks/api-keys/react/server.d.ts +1 -1
  151. package/dist/blocks/api-keys/solid/index.d.ts +3 -3
  152. package/dist/blocks/api-keys/solid/index.js +2 -2
  153. package/dist/blocks/api-keys/svelte/index.d.ts +3 -3
  154. package/dist/blocks/api-keys/svelte/index.js +2 -2
  155. package/dist/blocks/api-keys/vue/index.d.ts +3 -3
  156. package/dist/blocks/api-keys/vue/index.js +2 -2
  157. package/dist/blocks/approvals/index.d.ts +4 -4
  158. package/dist/blocks/approvals/index.js +29 -25
  159. package/dist/blocks/assets/index.d.ts +283 -0
  160. package/dist/blocks/assets/index.js +288 -0
  161. package/dist/blocks/assignment/index.d.ts +124 -0
  162. package/dist/blocks/assignment/index.js +141 -0
  163. package/dist/blocks/attachments/index.d.ts +45 -6
  164. package/dist/blocks/attachments/index.js +96 -7
  165. package/dist/blocks/attachments/react/index.d.ts +53 -0
  166. package/dist/blocks/attachments/react/index.js +78 -0
  167. package/dist/blocks/attachments/react/server.d.ts +9 -0
  168. package/dist/blocks/attachments/react/server.js +10 -0
  169. package/dist/blocks/attachments/solid/index.d.ts +13 -0
  170. package/dist/blocks/attachments/solid/index.js +14 -0
  171. package/dist/blocks/attachments/svelte/index.d.ts +13 -0
  172. package/dist/blocks/attachments/svelte/index.js +14 -0
  173. package/dist/blocks/attachments/vue/index.d.ts +13 -0
  174. package/dist/blocks/attachments/vue/index.js +14 -0
  175. package/dist/blocks/audit/index.d.ts +14 -8
  176. package/dist/blocks/audit/index.js +9 -10
  177. package/dist/blocks/audit/react/index.d.ts +12 -7
  178. package/dist/blocks/audit/react/index.js +12 -10
  179. package/dist/blocks/audit/react/server.d.ts +1 -1
  180. package/dist/blocks/audit/solid/index.d.ts +3 -3
  181. package/dist/blocks/audit/solid/index.js +2 -2
  182. package/dist/blocks/audit/svelte/index.d.ts +3 -3
  183. package/dist/blocks/audit/svelte/index.js +2 -2
  184. package/dist/blocks/audit/vue/index.d.ts +3 -3
  185. package/dist/blocks/audit/vue/index.js +2 -2
  186. package/dist/blocks/billable-time/index.d.ts +203 -0
  187. package/dist/blocks/billable-time/index.js +260 -0
  188. package/dist/blocks/billing/index.d.ts +144 -53
  189. package/dist/blocks/billing/index.js +165 -47
  190. package/dist/blocks/billing/react/index.d.ts +19 -9
  191. package/dist/blocks/billing/react/index.js +12 -8
  192. package/dist/blocks/billing/react/server.d.ts +5 -2
  193. package/dist/blocks/billing/react/server.js +4 -1
  194. package/dist/blocks/billing/solid/index.d.ts +3 -3
  195. package/dist/blocks/billing/solid/index.js +2 -2
  196. package/dist/blocks/billing/svelte/index.d.ts +3 -3
  197. package/dist/blocks/billing/svelte/index.js +2 -2
  198. package/dist/blocks/billing/vue/index.d.ts +3 -3
  199. package/dist/blocks/billing/vue/index.js +2 -2
  200. package/dist/blocks/bookings/index.d.ts +19 -9
  201. package/dist/blocks/bookings/index.js +9 -7
  202. package/dist/blocks/bookings/react/index.d.ts +9 -4
  203. package/dist/blocks/bookings/react/index.js +12 -8
  204. package/dist/blocks/bookings/react/server.d.ts +4 -1
  205. package/dist/blocks/bookings/react/server.js +4 -1
  206. package/dist/blocks/bookings/solid/index.d.ts +3 -3
  207. package/dist/blocks/bookings/solid/index.js +2 -2
  208. package/dist/blocks/bookings/svelte/index.d.ts +3 -3
  209. package/dist/blocks/bookings/svelte/index.js +2 -2
  210. package/dist/blocks/bookings/vue/index.d.ts +3 -3
  211. package/dist/blocks/bookings/vue/index.js +2 -2
  212. package/dist/blocks/bulk/index.d.ts +27 -12
  213. package/dist/blocks/bulk/index.js +5 -5
  214. package/dist/blocks/calendar/index.d.ts +13 -5
  215. package/dist/blocks/calendar/index.js +113 -5
  216. package/dist/blocks/calendar/react/index.d.ts +5 -5
  217. package/dist/blocks/calendar/react/index.js +8 -8
  218. package/dist/blocks/calendar/react/server.d.ts +4 -1
  219. package/dist/blocks/calendar/react/server.js +4 -1
  220. package/dist/blocks/calendar/solid/index.d.ts +3 -3
  221. package/dist/blocks/calendar/solid/index.js +2 -2
  222. package/dist/blocks/calendar/svelte/index.d.ts +3 -3
  223. package/dist/blocks/calendar/svelte/index.js +2 -2
  224. package/dist/blocks/calendar/vue/index.d.ts +3 -3
  225. package/dist/blocks/calendar/vue/index.js +2 -2
  226. package/dist/blocks/catalog/index.d.ts +48 -36
  227. package/dist/blocks/catalog/index.js +49 -53
  228. package/dist/blocks/channels/index.d.ts +111 -0
  229. package/dist/blocks/channels/index.js +190 -0
  230. package/dist/blocks/collections/index.d.ts +101 -23
  231. package/dist/blocks/collections/index.js +88 -13
  232. package/dist/blocks/comments/index.d.ts +48 -47
  233. package/dist/blocks/comments/index.js +113 -16
  234. package/dist/blocks/comments/react/index.d.ts +17 -12
  235. package/dist/blocks/comments/react/index.js +38 -27
  236. package/dist/blocks/comments/react/server.d.ts +1 -1
  237. package/dist/blocks/comments/solid/index.d.ts +3 -3
  238. package/dist/blocks/comments/solid/index.js +2 -2
  239. package/dist/blocks/comments/svelte/index.d.ts +3 -3
  240. package/dist/blocks/comments/svelte/index.js +2 -2
  241. package/dist/blocks/comments/vue/index.d.ts +3 -3
  242. package/dist/blocks/comments/vue/index.js +2 -2
  243. package/dist/blocks/connectors/index.d.ts +4 -4
  244. package/dist/blocks/connectors/index.js +8 -9
  245. package/dist/blocks/contracts/index.d.ts +241 -0
  246. package/dist/blocks/contracts/index.js +361 -0
  247. package/dist/blocks/controls/index.d.ts +325 -0
  248. package/dist/blocks/controls/index.js +410 -0
  249. package/dist/blocks/courses/index.d.ts +341 -0
  250. package/dist/blocks/courses/index.js +445 -0
  251. package/dist/blocks/custom-fields/index.d.ts +50 -16
  252. package/dist/blocks/custom-fields/index.js +27 -22
  253. package/dist/blocks/data-lifecycle/index.d.ts +75 -51
  254. package/dist/blocks/data-lifecycle/index.js +17 -12
  255. package/dist/blocks/deals/index.d.ts +25 -45
  256. package/dist/blocks/deals/index.js +161 -71
  257. package/dist/blocks/dispatch/index.d.ts +327 -0
  258. package/dist/blocks/dispatch/index.js +406 -0
  259. package/dist/blocks/documents/index.d.ts +8 -5
  260. package/dist/blocks/documents/index.js +67 -8
  261. package/dist/blocks/domains/index.d.ts +35 -20
  262. package/dist/blocks/domains/index.js +9 -10
  263. package/dist/blocks/donations/index.d.ts +352 -0
  264. package/dist/blocks/donations/index.js +602 -0
  265. package/dist/blocks/drive/index.d.ts +91 -28
  266. package/dist/blocks/drive/index.js +71 -17
  267. package/dist/blocks/employees/index.d.ts +16 -190
  268. package/dist/blocks/employees/index.js +107 -38
  269. package/dist/blocks/engagements/index.d.ts +27 -111
  270. package/dist/blocks/engagements/index.js +285 -14
  271. package/dist/blocks/enrichment/index.d.ts +176 -0
  272. package/dist/blocks/enrichment/index.js +243 -0
  273. package/dist/blocks/enrollments/index.d.ts +184 -0
  274. package/dist/blocks/enrollments/index.js +173 -0
  275. package/dist/blocks/entitlements/index.d.ts +20 -14
  276. package/dist/blocks/entitlements/index.js +4 -4
  277. package/dist/blocks/entitlements/react/index.d.ts +10 -7
  278. package/dist/blocks/entitlements/react/index.js +7 -7
  279. package/dist/blocks/entitlements/react/server.d.ts +4 -1
  280. package/dist/blocks/entitlements/react/server.js +4 -1
  281. package/dist/blocks/entitlements/solid/index.d.ts +3 -3
  282. package/dist/blocks/entitlements/solid/index.js +2 -2
  283. package/dist/blocks/entitlements/svelte/index.d.ts +3 -3
  284. package/dist/blocks/entitlements/svelte/index.js +2 -2
  285. package/dist/blocks/entitlements/vue/index.d.ts +3 -3
  286. package/dist/blocks/entitlements/vue/index.js +2 -2
  287. package/dist/blocks/expenses/index.d.ts +214 -0
  288. package/dist/blocks/expenses/index.js +279 -0
  289. package/dist/blocks/field-history/index.d.ts +63 -0
  290. package/dist/blocks/field-history/index.js +48 -0
  291. package/dist/blocks/flags/index.d.ts +20 -14
  292. package/dist/blocks/flags/index.js +9 -10
  293. package/dist/blocks/forecasts/index.d.ts +119 -0
  294. package/dist/blocks/forecasts/index.js +129 -0
  295. package/dist/blocks/forms/index.d.ts +96 -148
  296. package/dist/blocks/forms/index.js +121 -157
  297. package/dist/blocks/forms/react/index.d.ts +9 -6
  298. package/dist/blocks/forms/react/index.js +10 -7
  299. package/dist/blocks/forms/react/server.d.ts +4 -1
  300. package/dist/blocks/forms/react/server.js +4 -1
  301. package/dist/blocks/forms/solid/index.d.ts +3 -3
  302. package/dist/blocks/forms/solid/index.js +2 -2
  303. package/dist/blocks/forms/svelte/index.d.ts +3 -3
  304. package/dist/blocks/forms/svelte/index.js +2 -2
  305. package/dist/blocks/forms/vue/index.d.ts +3 -3
  306. package/dist/blocks/forms/vue/index.js +2 -2
  307. package/dist/blocks/guests/index.d.ts +200 -0
  308. package/dist/blocks/guests/index.js +224 -0
  309. package/dist/blocks/hiring/index.d.ts +13 -13
  310. package/dist/blocks/hiring/index.js +9 -10
  311. package/dist/blocks/identities/index.d.ts +38 -20
  312. package/dist/blocks/identities/index.js +16 -11
  313. package/dist/blocks/imports/index.d.ts +30 -25
  314. package/dist/blocks/imports/index.js +19 -19
  315. package/dist/blocks/inbox/index.d.ts +9 -6
  316. package/dist/blocks/inbox/index.js +118 -54
  317. package/dist/blocks/inbox/react/index.d.ts +2 -2
  318. package/dist/blocks/inbox/react/index.js +15 -9
  319. package/dist/blocks/inbox/react/server.d.ts +12 -6
  320. package/dist/blocks/inbox/react/server.js +8 -2
  321. package/dist/blocks/inbox/solid/index.d.ts +6 -6
  322. package/dist/blocks/inbox/solid/index.js +2 -2
  323. package/dist/blocks/inbox/svelte/index.d.ts +6 -6
  324. package/dist/blocks/inbox/svelte/index.js +2 -2
  325. package/dist/blocks/inbox/vue/index.d.ts +6 -6
  326. package/dist/blocks/inbox/vue/index.js +2 -2
  327. package/dist/blocks/incidents/index.d.ts +337 -0
  328. package/dist/blocks/incidents/index.js +477 -0
  329. package/dist/blocks/index.d.ts +126 -11
  330. package/dist/blocks/index.js +171 -193
  331. package/dist/blocks/inventory/index.d.ts +36 -19
  332. package/dist/blocks/inventory/index.js +15 -10
  333. package/dist/blocks/invoices/index.d.ts +13 -13
  334. package/dist/blocks/invoices/index.js +11 -12
  335. package/dist/blocks/jobs/index.d.ts +123 -86
  336. package/dist/blocks/jobs/index.js +59 -49
  337. package/dist/blocks/knowledge/index.d.ts +3 -3
  338. package/dist/blocks/knowledge/index.js +3 -3
  339. package/dist/blocks/lead-scoring/index.d.ts +50 -0
  340. package/dist/blocks/lead-scoring/index.js +87 -0
  341. package/dist/blocks/leases/index.d.ts +278 -0
  342. package/dist/blocks/leases/index.js +319 -0
  343. package/dist/blocks/leave/index.d.ts +30 -15
  344. package/dist/blocks/leave/index.js +6 -7
  345. package/dist/blocks/ledger/index.d.ts +281 -0
  346. package/dist/blocks/ledger/index.js +229 -0
  347. package/dist/blocks/mail-sync/index.d.ts +37 -0
  348. package/dist/blocks/mail-sync/index.js +898 -0
  349. package/dist/blocks/memory/index.d.ts +4 -4
  350. package/dist/blocks/memory/index.js +7 -8
  351. package/dist/blocks/messaging/index.d.ts +86 -0
  352. package/dist/blocks/messaging/index.js +48 -0
  353. package/dist/blocks/messaging/react/index.d.ts +39 -0
  354. package/dist/blocks/messaging/react/index.js +80 -0
  355. package/dist/blocks/messaging/react/server.d.ts +12 -0
  356. package/dist/blocks/messaging/react/server.js +14 -0
  357. package/dist/blocks/messaging/solid/index.d.ts +20 -0
  358. package/dist/blocks/messaging/solid/index.js +23 -0
  359. package/dist/blocks/messaging/svelte/index.d.ts +20 -0
  360. package/dist/blocks/messaging/svelte/index.js +23 -0
  361. package/dist/blocks/messaging/vue/index.d.ts +20 -0
  362. package/dist/blocks/messaging/vue/index.js +23 -0
  363. package/dist/blocks/metrics/index.d.ts +36 -30
  364. package/dist/blocks/metrics/index.js +19 -20
  365. package/dist/blocks/mfa/index.d.ts +2 -2
  366. package/dist/blocks/mfa/index.js +2 -2
  367. package/dist/blocks/mfa/react/index.d.ts +7 -7
  368. package/dist/blocks/mfa/react/index.js +9 -9
  369. package/dist/blocks/mfa/react/server.d.ts +1 -1
  370. package/dist/blocks/mfa/react/server.js +1 -1
  371. package/dist/blocks/mfa/solid/index.d.ts +3 -3
  372. package/dist/blocks/mfa/solid/index.js +2 -2
  373. package/dist/blocks/mfa/svelte/index.d.ts +3 -3
  374. package/dist/blocks/mfa/svelte/index.js +2 -2
  375. package/dist/blocks/mfa/vue/index.d.ts +3 -3
  376. package/dist/blocks/mfa/vue/index.js +2 -2
  377. package/dist/blocks/moderation/index.d.ts +205 -0
  378. package/dist/blocks/moderation/index.js +199 -0
  379. package/dist/blocks/notifications/index.d.ts +132 -103
  380. package/dist/blocks/notifications/index.js +62 -48
  381. package/dist/blocks/notifications/react/index.d.ts +3 -3
  382. package/dist/blocks/notifications/react/index.js +5 -5
  383. package/dist/blocks/notifications/react/server.d.ts +5 -2
  384. package/dist/blocks/notifications/react/server.js +4 -1
  385. package/dist/blocks/notifications/solid/index.d.ts +3 -3
  386. package/dist/blocks/notifications/solid/index.js +2 -2
  387. package/dist/blocks/notifications/svelte/index.d.ts +3 -3
  388. package/dist/blocks/notifications/svelte/index.js +2 -2
  389. package/dist/blocks/notifications/vue/index.d.ts +3 -3
  390. package/dist/blocks/notifications/vue/index.js +2 -2
  391. package/dist/blocks/number-sequences/index.d.ts +15 -12
  392. package/dist/blocks/number-sequences/index.js +8 -5
  393. package/dist/blocks/oauth-server/index.d.ts +42 -21
  394. package/dist/blocks/oauth-server/index.js +16 -14
  395. package/dist/blocks/onboarding/index.d.ts +3 -3
  396. package/dist/blocks/onboarding/index.js +4 -4
  397. package/dist/blocks/onboarding/react/index.d.ts +10 -5
  398. package/dist/blocks/onboarding/react/index.js +10 -8
  399. package/dist/blocks/onboarding/react/server.d.ts +5 -2
  400. package/dist/blocks/onboarding/react/server.js +4 -1
  401. package/dist/blocks/onboarding/solid/index.d.ts +3 -3
  402. package/dist/blocks/onboarding/solid/index.js +2 -2
  403. package/dist/blocks/onboarding/svelte/index.d.ts +3 -3
  404. package/dist/blocks/onboarding/svelte/index.js +2 -2
  405. package/dist/blocks/onboarding/vue/index.d.ts +3 -3
  406. package/dist/blocks/onboarding/vue/index.js +2 -2
  407. package/dist/blocks/orders/index.d.ts +176 -31
  408. package/dist/blocks/orders/index.js +167 -25
  409. package/dist/blocks/organizations/index.d.ts +5 -5
  410. package/dist/blocks/organizations/index.js +6 -28
  411. package/dist/blocks/organizations/react/index.d.ts +40 -21
  412. package/dist/blocks/organizations/react/index.js +5 -5
  413. package/dist/blocks/organizations/react/server.d.ts +13 -4
  414. package/dist/blocks/organizations/react/server.js +12 -3
  415. package/dist/blocks/organizations/solid/index.d.ts +3 -3
  416. package/dist/blocks/organizations/solid/index.js +2 -2
  417. package/dist/blocks/organizations/svelte/index.d.ts +3 -3
  418. package/dist/blocks/organizations/svelte/index.js +2 -2
  419. package/dist/blocks/organizations/vue/index.d.ts +3 -3
  420. package/dist/blocks/organizations/vue/index.js +2 -2
  421. package/dist/blocks/outbox/index.d.ts +4 -4
  422. package/dist/blocks/outbox/index.js +21 -18
  423. package/dist/blocks/parties/index.d.ts +36 -35
  424. package/dist/blocks/parties/index.js +152 -52
  425. package/dist/blocks/passes/index.d.ts +308 -0
  426. package/dist/blocks/passes/index.js +411 -0
  427. package/dist/blocks/pipelines/index.d.ts +26 -17
  428. package/dist/blocks/pipelines/index.js +11 -12
  429. package/dist/blocks/posts/index.d.ts +190 -0
  430. package/dist/blocks/posts/index.js +230 -0
  431. package/dist/blocks/profiles/index.d.ts +23 -14
  432. package/dist/blocks/profiles/index.js +5 -6
  433. package/dist/blocks/promotions/index.d.ts +34 -16
  434. package/dist/blocks/promotions/index.js +12 -10
  435. package/dist/blocks/push/index.d.ts +43 -25
  436. package/dist/blocks/push/index.js +16 -17
  437. package/dist/blocks/quotes/index.d.ts +15 -12
  438. package/dist/blocks/quotes/index.js +9 -10
  439. package/dist/blocks/rank/index.d.ts +12 -12
  440. package/dist/blocks/rank/index.js +4 -4
  441. package/dist/blocks/reactions/index.d.ts +5 -5
  442. package/dist/blocks/reactions/index.js +4 -4
  443. package/dist/blocks/reactions/react/index.d.ts +20 -11
  444. package/dist/blocks/reactions/react/index.js +37 -26
  445. package/dist/blocks/reactions/react/server.d.ts +4 -1
  446. package/dist/blocks/reactions/react/server.js +4 -1
  447. package/dist/blocks/reactions/solid/index.d.ts +3 -3
  448. package/dist/blocks/reactions/solid/index.js +2 -2
  449. package/dist/blocks/reactions/svelte/index.d.ts +3 -3
  450. package/dist/blocks/reactions/svelte/index.js +2 -2
  451. package/dist/blocks/reactions/vue/index.d.ts +3 -3
  452. package/dist/blocks/reactions/vue/index.js +2 -2
  453. package/dist/blocks/relations/index.d.ts +82 -46
  454. package/dist/blocks/relations/index.js +120 -63
  455. package/dist/blocks/reminders/index.d.ts +45 -32
  456. package/dist/blocks/reminders/index.js +38 -33
  457. package/dist/blocks/reviews/index.d.ts +32 -17
  458. package/dist/blocks/reviews/index.js +6 -7
  459. package/dist/blocks/rules/index.d.ts +32 -26
  460. package/dist/blocks/rules/index.js +15 -15
  461. package/dist/blocks/rules/react/index.d.ts +9 -5
  462. package/dist/blocks/rules/react/index.js +12 -8
  463. package/dist/blocks/rules/solid/index.d.ts +3 -3
  464. package/dist/blocks/rules/solid/index.js +2 -2
  465. package/dist/blocks/rules/svelte/index.d.ts +3 -3
  466. package/dist/blocks/rules/svelte/index.js +2 -2
  467. package/dist/blocks/rules/vue/index.d.ts +3 -3
  468. package/dist/blocks/rules/vue/index.js +2 -2
  469. package/dist/blocks/saved-views/index.d.ts +3 -3
  470. package/dist/blocks/saved-views/index.js +3 -3
  471. package/dist/blocks/saved-views/react/index.d.ts +14 -8
  472. package/dist/blocks/saved-views/react/index.js +11 -8
  473. package/dist/blocks/saved-views/react/server.d.ts +5 -2
  474. package/dist/blocks/saved-views/react/server.js +4 -1
  475. package/dist/blocks/saved-views/solid/index.d.ts +3 -3
  476. package/dist/blocks/saved-views/solid/index.js +2 -2
  477. package/dist/blocks/saved-views/svelte/index.d.ts +3 -3
  478. package/dist/blocks/saved-views/svelte/index.js +2 -2
  479. package/dist/blocks/saved-views/vue/index.d.ts +3 -3
  480. package/dist/blocks/saved-views/vue/index.js +2 -2
  481. package/dist/blocks/scores/index.d.ts +50 -0
  482. package/dist/blocks/scores/index.js +40 -0
  483. package/dist/blocks/search/index.d.ts +12 -9
  484. package/dist/blocks/search/index.js +9 -10
  485. package/dist/blocks/search/react/index.d.ts +8 -5
  486. package/dist/blocks/search/react/index.js +6 -6
  487. package/dist/blocks/search/react/server.d.ts +5 -2
  488. package/dist/blocks/search/react/server.js +4 -1
  489. package/dist/blocks/search/solid/index.d.ts +3 -3
  490. package/dist/blocks/search/solid/index.js +2 -2
  491. package/dist/blocks/search/svelte/index.d.ts +3 -3
  492. package/dist/blocks/search/svelte/index.js +2 -2
  493. package/dist/blocks/search/vue/index.d.ts +3 -3
  494. package/dist/blocks/search/vue/index.js +2 -2
  495. package/dist/blocks/segments/index.d.ts +130 -0
  496. package/dist/blocks/segments/index.js +135 -0
  497. package/dist/blocks/sequences/index.d.ts +259 -0
  498. package/dist/blocks/sequences/index.js +370 -0
  499. package/dist/blocks/service-principals/index.d.ts +24 -18
  500. package/dist/blocks/service-principals/index.js +11 -9
  501. package/dist/blocks/sessions/index.d.ts +2 -2
  502. package/dist/blocks/sessions/index.js +2 -2
  503. package/dist/blocks/sessions/react/index.d.ts +10 -5
  504. package/dist/blocks/sessions/react/index.js +8 -6
  505. package/dist/blocks/sessions/react/server.d.ts +9 -3
  506. package/dist/blocks/sessions/react/server.js +8 -2
  507. package/dist/blocks/sessions/solid/index.d.ts +3 -3
  508. package/dist/blocks/sessions/solid/index.js +2 -2
  509. package/dist/blocks/sessions/svelte/index.d.ts +3 -3
  510. package/dist/blocks/sessions/svelte/index.js +2 -2
  511. package/dist/blocks/sessions/vue/index.d.ts +3 -3
  512. package/dist/blocks/sessions/vue/index.js +2 -2
  513. package/dist/blocks/settings/index.d.ts +6 -5
  514. package/dist/blocks/settings/index.js +7 -6
  515. package/dist/blocks/settings/react/index.d.ts +13 -7
  516. package/dist/blocks/settings/react/index.js +5 -5
  517. package/dist/blocks/settings/react/server.d.ts +5 -2
  518. package/dist/blocks/settings/react/server.js +4 -1
  519. package/dist/blocks/settings/solid/index.d.ts +3 -3
  520. package/dist/blocks/settings/solid/index.js +2 -2
  521. package/dist/blocks/settings/svelte/index.d.ts +3 -3
  522. package/dist/blocks/settings/svelte/index.js +2 -2
  523. package/dist/blocks/settings/vue/index.d.ts +3 -3
  524. package/dist/blocks/settings/vue/index.js +2 -2
  525. package/dist/blocks/share-links/index.d.ts +58 -23
  526. package/dist/blocks/share-links/index.js +74 -23
  527. package/dist/blocks/shared-signals/index.d.ts +82 -37
  528. package/dist/blocks/shared-signals/index.js +24 -19
  529. package/dist/blocks/shipments/index.d.ts +238 -0
  530. package/dist/blocks/shipments/index.js +540 -0
  531. package/dist/blocks/signatures/index.d.ts +151 -0
  532. package/dist/blocks/signatures/index.js +149 -0
  533. package/dist/blocks/signing-keys/index.d.ts +5 -5
  534. package/dist/blocks/signing-keys/index.js +5 -166
  535. package/dist/blocks/sla/index.d.ts +43 -31
  536. package/dist/blocks/sla/index.js +44 -15
  537. package/dist/blocks/sso/index.d.ts +35 -30
  538. package/dist/blocks/sso/index.js +31 -18
  539. package/dist/blocks/state-machine/index.d.ts +31 -22
  540. package/dist/blocks/state-machine/index.js +27 -27
  541. package/dist/blocks/subjects/index.d.ts +11 -0
  542. package/dist/blocks/subjects/index.js +21 -0
  543. package/dist/blocks/subjects/react/index.d.ts +31 -0
  544. package/dist/blocks/subjects/react/index.js +60 -0
  545. package/dist/blocks/subjects/react/server.d.ts +9 -0
  546. package/dist/blocks/subjects/react/server.js +12 -0
  547. package/dist/blocks/subjects/solid/index.d.ts +13 -0
  548. package/dist/blocks/subjects/solid/index.js +14 -0
  549. package/dist/blocks/subjects/svelte/index.d.ts +13 -0
  550. package/dist/blocks/subjects/svelte/index.js +14 -0
  551. package/dist/blocks/subjects/vue/index.d.ts +13 -0
  552. package/dist/blocks/subjects/vue/index.js +14 -0
  553. package/dist/blocks/tags/index.d.ts +37 -5
  554. package/dist/blocks/tags/index.js +50 -5
  555. package/dist/blocks/tags/react/index.d.ts +13 -12
  556. package/dist/blocks/tags/react/index.js +30 -24
  557. package/dist/blocks/tags/react/server.d.ts +1 -1
  558. package/dist/blocks/tags/solid/index.d.ts +3 -3
  559. package/dist/blocks/tags/solid/index.js +2 -2
  560. package/dist/blocks/tags/svelte/index.d.ts +3 -3
  561. package/dist/blocks/tags/svelte/index.js +2 -2
  562. package/dist/blocks/tags/vue/index.d.ts +3 -3
  563. package/dist/blocks/tags/vue/index.js +2 -2
  564. package/dist/blocks/targets/index.d.ts +13 -13
  565. package/dist/blocks/targets/index.js +7 -8
  566. package/dist/blocks/teams/index.d.ts +9 -9
  567. package/dist/blocks/teams/index.js +5 -5
  568. package/dist/blocks/templates/index.d.ts +67 -51
  569. package/dist/blocks/templates/index.js +23 -25
  570. package/dist/blocks/time-tracking/index.d.ts +63 -45
  571. package/dist/blocks/time-tracking/index.js +50 -47
  572. package/dist/blocks/trash/index.d.ts +13 -11
  573. package/dist/blocks/trash/index.js +5 -6
  574. package/dist/blocks/undo/index.d.ts +4 -4
  575. package/dist/blocks/undo/index.js +4 -4
  576. package/dist/blocks/undo/react/index.d.ts +3 -3
  577. package/dist/blocks/undo/react/index.js +4 -4
  578. package/dist/blocks/undo/react/server.d.ts +5 -2
  579. package/dist/blocks/undo/react/server.js +4 -1
  580. package/dist/blocks/undo/solid/index.d.ts +3 -3
  581. package/dist/blocks/undo/solid/index.js +2 -2
  582. package/dist/blocks/undo/svelte/index.d.ts +3 -3
  583. package/dist/blocks/undo/svelte/index.js +2 -2
  584. package/dist/blocks/undo/vue/index.d.ts +3 -3
  585. package/dist/blocks/undo/vue/index.js +2 -2
  586. package/dist/blocks/usage/index.d.ts +5 -5
  587. package/dist/blocks/usage/index.js +4 -4
  588. package/dist/blocks/usage/react/index.d.ts +12 -6
  589. package/dist/blocks/usage/react/index.js +8 -8
  590. package/dist/blocks/usage/react/server.d.ts +1 -1
  591. package/dist/blocks/usage/solid/index.d.ts +3 -3
  592. package/dist/blocks/usage/solid/index.js +2 -2
  593. package/dist/blocks/usage/svelte/index.d.ts +3 -3
  594. package/dist/blocks/usage/svelte/index.js +2 -2
  595. package/dist/blocks/usage/vue/index.d.ts +3 -3
  596. package/dist/blocks/usage/vue/index.js +2 -2
  597. package/dist/blocks/vercel-marketplace/index.d.ts +252 -17
  598. package/dist/blocks/vercel-marketplace/index.js +489 -57
  599. package/dist/blocks/versions/index.d.ts +55 -31
  600. package/dist/blocks/versions/index.js +75 -30
  601. package/dist/blocks/waitlist/index.d.ts +31 -18
  602. package/dist/blocks/waitlist/index.js +10 -8
  603. package/dist/blocks/webhooks/index.d.ts +126 -89
  604. package/dist/blocks/webhooks/index.js +72 -62
  605. package/dist/blocks/work-items/index.d.ts +63 -184
  606. package/dist/blocks/work-items/index.js +162 -36
  607. package/dist/blocks/workflow-builder/index.d.ts +15 -13
  608. package/dist/blocks/workflow-builder/index.js +11 -8
  609. package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
  610. package/dist/blocks/workflow-builder/react/index.js +8 -8
  611. package/dist/blocks/workflow-builder/react/server.d.ts +8 -2
  612. package/dist/blocks/workflow-builder/react/server.js +8 -2
  613. package/dist/blocks/workflow-builder/solid/index.d.ts +3 -3
  614. package/dist/blocks/workflow-builder/solid/index.js +2 -2
  615. package/dist/blocks/workflow-builder/svelte/index.d.ts +3 -3
  616. package/dist/blocks/workflow-builder/svelte/index.js +2 -2
  617. package/dist/blocks/workflow-builder/vue/index.d.ts +3 -3
  618. package/dist/blocks/workflow-builder/vue/index.js +2 -2
  619. package/dist/blocks/workflows/index.d.ts +5 -5
  620. package/dist/blocks/workflows/index.js +5 -5
  621. package/dist/blocks/workflows/react/index.d.ts +13 -6
  622. package/dist/blocks/workflows/react/index.js +7 -7
  623. package/dist/blocks/workflows/react/server.d.ts +8 -2
  624. package/dist/blocks/workflows/react/server.js +8 -2
  625. package/dist/blocks/workflows/solid/index.d.ts +3 -3
  626. package/dist/blocks/workflows/solid/index.js +2 -2
  627. package/dist/blocks/workflows/svelte/index.d.ts +3 -3
  628. package/dist/blocks/workflows/svelte/index.js +2 -2
  629. package/dist/blocks/workflows/vue/index.d.ts +3 -3
  630. package/dist/blocks/workflows/vue/index.js +2 -2
  631. package/dist/bookings-BB5lFlNO.js +310 -0
  632. package/dist/bookings-CC7IeiRa.d.ts +290 -0
  633. package/dist/bucket-TkB7_xv8.d.ts +667 -0
  634. package/dist/build-DCfpwg78.js +1839 -0
  635. package/dist/build-g9wTbQdp.js +703 -0
  636. package/dist/calendar-T3Vdpq7E.js +952 -0
  637. package/dist/carrier-C7Q_21Kd.d.ts +169 -0
  638. package/dist/channel-BjvGO39m.d.ts +77 -0
  639. package/dist/channels-CfcFPuo_.js +114 -0
  640. package/dist/chat-sdk/index.d.ts +188 -80
  641. package/dist/chat-sdk/index.js +102 -57
  642. package/dist/chat-sdk/react/index.d.ts +2 -2
  643. package/dist/chat-sdk/react/server.d.ts +2 -2
  644. package/dist/claims-Bp9My7XP.js +88 -0
  645. package/dist/claims-T8TWZ53E.js +63 -0
  646. package/dist/cli/add-Bf3kE6PY.js +75 -0
  647. package/dist/cli/add-CYh6Sxk1.js +674 -0
  648. package/dist/cli/add-Dg40eFKE.js +1 -0
  649. package/dist/cli/adopt-B0vrj-4B.js +421 -0
  650. package/dist/cli/adopt-DJR1k3lS.js +1 -0
  651. package/dist/cli/agent-CbuPvI2x.js +185 -0
  652. package/dist/cli/apply-DUQ-5LC6.js +329 -0
  653. package/dist/cli/bin.js +3 -3
  654. package/dist/cli/blocks-DzgYfjVv.js +124 -0
  655. package/dist/cli/blocks-gGupqvBH.js +1 -0
  656. package/dist/cli/cache-C3K_wOE2.js +536 -0
  657. package/dist/cli/catalog-CNM0ViIh.js +199 -0
  658. package/dist/cli/codemod-Dz4R-tVY.js +1127 -0
  659. package/dist/cli/command-33pu13LT.js +963 -0
  660. package/dist/cli/completion-6M6Hr8TL.js +211 -0
  661. package/dist/cli/completion-Bqu8yq0q.js +1 -0
  662. package/dist/cli/completion-Ddr3yqd3.js +30 -0
  663. package/dist/cli/config-B31tIvAl.js +42 -0
  664. package/dist/cli/config-CjgXMZW2.js +1522 -0
  665. package/dist/cli/config-D9k5ckqV.js +1 -0
  666. package/dist/cli/config-edit-D46H0UHp.js +613 -0
  667. package/dist/cli/db-CQCLx7cx.js +78 -0
  668. package/dist/cli/db-CeagtENM.js +473 -0
  669. package/dist/cli/design-edit-B40ljpGZ.js +205 -0
  670. package/dist/cli/detect-RApSAA8v.js +84 -0
  671. package/dist/cli/dist-DSwzLVAG.js +129 -0
  672. package/dist/cli/doctor-COGJJ1gy.js +3898 -0
  673. package/dist/cli/emit-DbQeLlHt.js +1123 -0
  674. package/dist/cli/env-Ba-pOD3a.js +1 -0
  675. package/dist/cli/env-C-Bl6Awn.js +1 -0
  676. package/dist/cli/env-DMgjB_4y.js +1114 -0
  677. package/dist/cli/env-DlgfvI8U.js +143 -0
  678. package/dist/cli/errors-BTe6A15O.js +98 -0
  679. package/dist/cli/exec--Q1ZEWUW.js +463 -0
  680. package/dist/cli/files-C5JfVnj5.js +972 -0
  681. package/dist/cli/fresh-import-DzgsGHkX.js +40 -0
  682. package/dist/cli/gen-DHW1qENn.js +307 -0
  683. package/dist/cli/index.d.ts +252 -177
  684. package/dist/cli/index.js +16 -16
  685. package/dist/cli/init-CZifzAUD.js +397 -0
  686. package/dist/cli/introspect-Dfwu5vAg.js +51 -0
  687. package/dist/cli/io-DH1kcmmP.js +37 -0
  688. package/dist/cli/keys-iJs_1WT8.js +106 -0
  689. package/dist/cli/live-1eL2MIkS.js +344 -0
  690. package/dist/cli/mcp-CaFW6uKU.js +240 -0
  691. package/dist/cli/metadata-DkOQHZoH.js +146 -0
  692. package/dist/cli/migration-safety-BsCKKxPf.js +305 -0
  693. package/dist/cli/module-migration-CbX-jRhV.js +606 -0
  694. package/dist/cli/moved-CdNtCf4t.js +161 -0
  695. package/dist/cli/parse-CRZLku1b.js +182 -0
  696. package/dist/cli/preset-C4fagbhZ.js +130 -0
  697. package/dist/cli/prompts-jqnr94b9.js +1140 -0
  698. package/dist/cli/redact-KGAk2Ul9.js +38 -0
  699. package/dist/cli/run-CE2s5TDh.js +711 -0
  700. package/dist/cli/run-Du5XPOCv.js +63 -0
  701. package/dist/cli/run-KXjrgNCH.js +2378 -0
  702. package/dist/cli/scaffold-CPH8sEhw.js +901 -0
  703. package/dist/cli/scaffold-DS6g3INp.js +1 -0
  704. package/dist/cli/seed-D6V-T5Af.js +188 -0
  705. package/dist/cli/seed-DPQaA8aP.js +1 -0
  706. package/dist/cli/shared-CCpxS5if.js +151 -0
  707. package/dist/cli/skills-Bz4INB8f.js +121 -0
  708. package/dist/cli/snapshot-Dkwxc1uV.js +351 -0
  709. package/dist/cli/source-args-DZV4RnZL.js +59 -0
  710. package/dist/cli/spec-B3Tbc7Dm.js +7534 -0
  711. package/dist/cli/spec-Cv1GYrcW.js +1 -0
  712. package/dist/cli/sql-C58MS9DI.js +348 -0
  713. package/dist/cli/sql-DVPw5tvO.js +2 -0
  714. package/dist/cli/stack-_F_JhllX.js +135 -0
  715. package/dist/cli/stack-env-6hS-WEmh.js +93 -0
  716. package/dist/cli/stack-status-B_Ipd_-z.js +46 -0
  717. package/dist/cli/stacks-BYlQ96WS.js +232 -0
  718. package/dist/cli/style-Bm2X5JrN.js +35 -0
  719. package/dist/cli/supabase-toml-CncmQbO0.js +1164 -0
  720. package/dist/cli/sync-CjkKpI6d.js +91 -0
  721. package/dist/cli/topics-BpdnYmWb.js +30 -0
  722. package/dist/cli/typegen-F9GEjpvD.js +502 -0
  723. package/dist/cli/validate-B3lF3-jB.js +7522 -0
  724. package/dist/cli/version-CTqnp3HO.js +4 -0
  725. package/dist/cli/write-3qdrpS1v.js +201 -0
  726. package/dist/client/index.d.ts +6 -6
  727. package/dist/client/index.js +19 -12
  728. package/dist/client/native/index.d.ts +87 -53
  729. package/dist/client/native/index.js +65 -43
  730. package/dist/client--tyFmxDT.js +52 -0
  731. package/dist/client-7_4Y21ue.d.ts +122 -0
  732. package/dist/client-B1cjaIfv.js +116 -0
  733. package/dist/client-B2GCMvfd.d.ts +451 -0
  734. package/dist/client-B8cHiZfF.js +67 -0
  735. package/dist/client-BIMg9IiF.d.ts +349 -0
  736. package/dist/client-BKGVUgo7.js +380 -0
  737. package/dist/client-BNaOcfeH.js +58 -0
  738. package/dist/client-BQseXods.d.ts +309 -0
  739. package/dist/client-BSnf6fn6.d.ts +59 -0
  740. package/dist/client-BW3-RUbq.js +235 -0
  741. package/dist/client-BYAY7lLs.d.ts +137 -0
  742. package/dist/client-BcXmbm4f.js +173 -0
  743. package/dist/client-BgmVu505.js +167 -0
  744. package/dist/client-Bj0xrUzr.js +437 -0
  745. package/dist/client-Bn0qqRBg.d.ts +37 -0
  746. package/dist/client-Bni68sve.d.ts +136 -0
  747. package/dist/client-BrtwaIBh.d.ts +74 -0
  748. package/dist/client-BtRx0-kn.js +82 -0
  749. package/dist/client-BteuBPIy.js +337 -0
  750. package/dist/client-C1TxDBgX.js +111 -0
  751. package/dist/client-C1zOmnS8.js +89 -0
  752. package/dist/client-C56l0MnY.d.ts +177 -0
  753. package/dist/client-CA6KuLDu.d.ts +223 -0
  754. package/dist/client-CBcq7LBg.d.ts +178 -0
  755. package/dist/client-CGJrSTMZ.js +234 -0
  756. package/dist/client-CLIBcMzL.d.ts +116 -0
  757. package/dist/client-COuIfjbB.d.ts +46 -0
  758. package/dist/client-CVToJ4uI.js +84 -0
  759. package/dist/client-C_0XZieg.js +287 -0
  760. package/dist/client-CebKlRU7.js +157 -0
  761. package/dist/client-ChOJ4v0D.js +137 -0
  762. package/dist/client-CnENAa0E.d.ts +69 -0
  763. package/dist/client-Cp79i2ZE.d.ts +152 -0
  764. package/dist/client-CwKsEl6q.js +99 -0
  765. package/dist/client-D-LPdEDQ.d.ts +43 -0
  766. package/dist/client-D6gD9qt9.d.ts +45 -0
  767. package/dist/client-DBwWXQKF.d.ts +132 -0
  768. package/dist/client-DD3EcytK.js +65 -0
  769. package/dist/client-DScMvaty.js +38 -0
  770. package/dist/client-DT6Tvudr.d.ts +54 -0
  771. package/dist/client-DU1_Jq4e.d.ts +116 -0
  772. package/dist/client-Dd-a0tup.d.ts +475 -0
  773. package/dist/client-Dh8zXgpq.js +1060 -0
  774. package/dist/client-DkI0oyR7.js +76 -0
  775. package/dist/client-DmjG9PHH.js +211 -0
  776. package/dist/client-DnUFHmje.js +129 -0
  777. package/dist/client-Do5hykMK.d.ts +38 -0
  778. package/dist/client-DzOL3lsV.d.ts +110 -0
  779. package/dist/client-DzukpHS1.d.ts +165 -0
  780. package/dist/client-LngH55pZ.d.ts +83 -0
  781. package/dist/client-PPSwiJaK.js +291 -0
  782. package/dist/client-RoAuPQNB.d.ts +103 -0
  783. package/dist/client-WzuQExHk.js +253 -0
  784. package/dist/client-Y_HnZGF4.js +51 -0
  785. package/dist/client-bDXsvSXp.d.ts +90 -0
  786. package/dist/client-bx3Bk7c5.d.ts +64 -0
  787. package/dist/client-jgDU7Roj.d.ts +144 -0
  788. package/dist/client-kRvHKAKS.js +60 -0
  789. package/dist/client-pxXoQOdC.js +40 -0
  790. package/dist/client-yIxEJwTK.js +121 -0
  791. package/dist/clone-CkG0-hlI.js +33 -0
  792. package/dist/cloud-event-SPyXMdcd.d.ts +64 -0
  793. package/dist/cloud-event-XsM53POL.js +63 -0
  794. package/dist/codecs-CQrX3ZW4.js +358 -0
  795. package/dist/codecs-DAu2sYWn.d.ts +222 -0
  796. package/dist/comments-CB8pFSV1.js +142 -0
  797. package/dist/commerce/index.d.ts +39 -33
  798. package/dist/commerce/index.js +38 -28
  799. package/dist/compiler-BCyHFI6n.d.ts +14 -0
  800. package/dist/compose--4D1FoPN.js +53 -0
  801. package/dist/composite-Dv6o2BSw.js +130 -0
  802. package/dist/composite-KllwFim2.d.ts +82 -0
  803. package/dist/config/index.d.ts +7 -7
  804. package/dist/config/index.js +8 -8
  805. package/dist/config-BuOz_O-y.d.ts +2152 -0
  806. package/dist/config-Dh4D8lBa.js +13931 -0
  807. package/dist/config-Dn0cC3bM.js +1093 -0
  808. package/dist/connector-BdCE4Efp.d.ts +164 -0
  809. package/dist/connectors-DDiSNvkF.d.ts +147 -0
  810. package/dist/context-9Q23weHu.d.ts +524 -0
  811. package/dist/context-CMxVnPMY.js +9 -0
  812. package/dist/context-CYquqpA6.js +41 -0
  813. package/dist/controller-BEliOBOv.js +79 -0
  814. package/dist/controller-CSsC9s3s.js +73 -0
  815. package/dist/controller-DAD4hbl4.d.ts +52 -0
  816. package/dist/create/index.d.ts +309 -175
  817. package/dist/create/index.js +441 -299
  818. package/dist/create/lite/index.d.ts +19 -12
  819. package/dist/create/lite/index.js +10 -9
  820. package/dist/create/oauth/index.d.ts +2 -0
  821. package/dist/create/oauth/index.js +101 -0
  822. package/dist/create/supabase/index.d.ts +13 -34
  823. package/dist/create/supabase/index.js +16 -84
  824. package/dist/create-blocks-kPUhCvje.js +217 -0
  825. package/dist/credentials/index.d.ts +12 -12
  826. package/dist/credentials/index.js +12 -13
  827. package/dist/cron-_i5pBGkY.js +148 -0
  828. package/dist/cron-route-Y0eJ-FNi.js +24 -0
  829. package/dist/csv-2rXGPNtP.js +89 -0
  830. package/dist/csv-DhHQS2x_.d.ts +28 -0
  831. package/dist/db-exception-Lngc1W49.js +31 -0
  832. package/dist/deal-forecast-CBlp20PY.js +39 -0
  833. package/dist/deal-forecast-LwO-Z4_C.d.ts +23 -0
  834. package/dist/define-DQznpZYl.js +2023 -0
  835. package/dist/define-Dw7pRO4h.d.ts +1123 -0
  836. package/dist/define-block-COpcS6aT.d.ts +1338 -0
  837. package/dist/define-block-Dze77QTw.js +56 -0
  838. package/dist/delegation-CeXm9AJ3.js +146 -0
  839. package/dist/delivery-Bm0jxmzI.js +29 -0
  840. package/dist/delivery-n6lZGuGx.d.ts +71 -0
  841. package/dist/documents-kgDOHUfn.d.ts +152 -0
  842. package/dist/edge/index.d.ts +67 -40
  843. package/dist/edge/index.js +20 -17
  844. package/dist/elysia/index.d.ts +16 -14
  845. package/dist/elysia/index.js +11 -9
  846. package/dist/email-tt2QqiSc.d.ts +42 -0
  847. package/dist/embeddings-CcRP-cMN.d.ts +78 -0
  848. package/dist/embeddings-vVzseUw0.js +128 -0
  849. package/dist/employees-Dwyvxs4r.d.ts +180 -0
  850. package/dist/ended--Bd_Q6uL.d.ts +76 -0
  851. package/dist/engagements-CsJhf2OM.d.ts +179 -0
  852. package/dist/entitlements-B_ttRvI6.js +45 -0
  853. package/dist/entitlements-DDevu4ZE.d.ts +54 -0
  854. package/dist/entity-form-B67vq97h.d.ts +82 -0
  855. package/dist/entity-naming-DLDhHTbK.js +131 -0
  856. package/dist/entity-schema-BXXC1NnT.js +39 -0
  857. package/dist/env/index.d.ts +1 -1
  858. package/dist/env/index.js +16 -4
  859. package/dist/envelope-DCfHtVtZ.js +90 -0
  860. package/dist/errors-03ysrOt4.js +325 -0
  861. package/dist/errors-DZx8w-MH.js +44 -0
  862. package/dist/escape-like-BfXS-iVe.d.ts +30 -0
  863. package/dist/eve/index.d.ts +40 -22
  864. package/dist/eve/index.js +35 -26
  865. package/dist/eve-BlJI8ZXL.d.ts +157 -0
  866. package/dist/event-calendar-D3SVa3AE.d.ts +65 -0
  867. package/dist/event-map-CtPFhcOp.js +19 -0
  868. package/dist/events/index.d.ts +5 -4
  869. package/dist/events/index.js +11 -10
  870. package/dist/events-D6IZ5CE8.js +82 -0
  871. package/dist/events-DbLjvxDX.d.ts +852 -0
  872. package/dist/events-SqJLbb8q.js +24 -0
  873. package/dist/executor-BDAGTc_O.js +207 -0
  874. package/dist/executor-BElVQpaB.d.ts +188 -0
  875. package/dist/executor-CPyrQdjh.d.ts +700 -0
  876. package/dist/executor-CsTaO3AT.d.ts +37 -0
  877. package/dist/executor-DQoczQZJ.d.ts +104 -0
  878. package/dist/executor-QtVn0axs.js +147 -0
  879. package/dist/executor-o9HkOJ0m.js +869 -0
  880. package/dist/expo/index.d.ts +37 -26
  881. package/dist/expo/index.js +18 -15
  882. package/dist/expo-sqlite/index.d.ts +20 -17
  883. package/dist/expo-sqlite/index.js +19 -13
  884. package/dist/feature-BBLdbGu7.js +224 -0
  885. package/dist/field-errors-vshYTVKr.d.ts +166 -0
  886. package/dist/field-formats-C6QKA3UR.js +102 -0
  887. package/dist/field-formats-DbjaDXoZ.d.ts +39 -0
  888. package/dist/fields-CanaxA0U.d.ts +75 -0
  889. package/dist/fields-DK30XCgc.js +107 -0
  890. package/dist/filter-evaluate-C3i2bGfk.d.ts +37 -0
  891. package/dist/filter-evaluate-CRDXv0Dl.js +217 -0
  892. package/dist/filter-query-D4ZSwbcJ.js +524 -0
  893. package/dist/filter-query-o3b_GuyC.d.ts +133 -0
  894. package/dist/flags-BTDPaN11.d.ts +246 -0
  895. package/dist/flags-BhYByvP1.js +279 -0
  896. package/dist/flags-sdk/index.d.ts +13 -13
  897. package/dist/flags-sdk/index.js +18 -15
  898. package/dist/flows/index.d.ts +247 -0
  899. package/dist/flows/index.js +229 -0
  900. package/dist/form-definition-BTpM_tz1.js +363 -0
  901. package/dist/form-definition-BjEtH8BT.d.ts +119 -0
  902. package/dist/format-AYHceC2m.d.ts +79 -0
  903. package/dist/framework-CXoyWGgd.js +57 -0
  904. package/dist/framework-FxfJpyoF.d.ts +41 -0
  905. package/dist/function-contract-pEmsaUIf.js +8 -0
  906. package/dist/function-contract-vPqwt1j4.d.ts +27 -0
  907. package/dist/gateway-DI8dbOml.d.ts +115 -0
  908. package/dist/gateway-options-BlVCqgb8.d.ts +29 -0
  909. package/dist/gateway-options-Cl74B7k6.js +27 -0
  910. package/dist/graph-B4eubUQG.js +365 -0
  911. package/dist/guest-actions-1T1DeS5Y.d.ts +5 -0
  912. package/dist/guest-actions-B7zdhfnh.js +9 -0
  913. package/dist/h3/index.d.ts +19 -12
  914. package/dist/h3/index.js +15 -11
  915. package/dist/h3/v1/index.d.ts +34 -24
  916. package/dist/h3/v1/index.js +23 -19
  917. package/dist/hmac-B3CTTlfv.js +23 -0
  918. package/dist/hono/index.d.ts +54 -36
  919. package/dist/hono/index.js +18 -18
  920. package/dist/http-51t9xppD.js +28 -0
  921. package/dist/http-BjjojWg3.js +40 -0
  922. package/dist/http-DzbloBR-.js +141 -0
  923. package/dist/image-url-_d7xYsXK.js +84 -0
  924. package/dist/impersonation-CZD9AOAk.js +62 -0
  925. package/dist/impersonation-YTa9dZUv.d.ts +28 -0
  926. package/dist/inbox-BPBb6etH.d.ts +321 -0
  927. package/dist/index-BSUX4dlB.d.ts +305 -0
  928. package/dist/index-BgSuw4CC.d.ts +151 -0
  929. package/dist/index-C7CrdGgz.d.ts +562 -0
  930. package/dist/index-CvxK2BZS.d.ts +847 -0
  931. package/dist/index-CxZQgNVE.d.ts +62 -0
  932. package/dist/index-D4420jLW.d.ts +66 -0
  933. package/dist/index-DK-YTWLd.d.ts +443 -0
  934. package/dist/index-DbXWcrOI.d.ts +577 -0
  935. package/dist/index-DbyDZZlc.d.ts +53 -0
  936. package/dist/index-NRMMhhEi.d.ts +104 -0
  937. package/dist/index-U0o7kU0s.d.ts +69 -0
  938. package/dist/index-WEafENqH.d.ts +149 -0
  939. package/dist/index-X2fkPUwb.d.ts +51 -0
  940. package/dist/index-Yep7auV-.d.ts +287 -0
  941. package/dist/index-eTY4kJzo.d.ts +163 -0
  942. package/dist/index.d.ts +35 -99
  943. package/dist/index.js +24 -19
  944. package/dist/invalidate-BLiBFbLy.d.ts +19 -0
  945. package/dist/iso4217-B-durg_y.js +176 -0
  946. package/dist/json-DaByVJpw.js +22 -0
  947. package/dist/json-schema-DWDTfD8J.js +888 -0
  948. package/dist/jwks-cache-CRymV-Dr.js +49 -0
  949. package/dist/jws-D0toeQlA.d.ts +66 -0
  950. package/dist/jws-DOgHJKHb.js +205 -0
  951. package/dist/kit-Ct4Z6GIO.js +127 -0
  952. package/dist/kit-DKfbNTAA.d.ts +94 -0
  953. package/dist/knowledge-BKGrXdS_.js +272 -0
  954. package/dist/knowledge-CFkCRxO9.d.ts +202 -0
  955. package/dist/lint/index.d.ts +6 -6
  956. package/dist/lint/index.js +9 -6
  957. package/dist/list/index.d.ts +3 -3
  958. package/dist/list/index.js +3 -3
  959. package/dist/list-query-BtluNnYk.d.ts +222 -0
  960. package/dist/list-query-CuS1w2Af.js +559 -0
  961. package/dist/live-CZtRMh62.js +246 -0
  962. package/dist/management-wtecfrNf.d.ts +57 -0
  963. package/dist/mcp/index.d.ts +70 -42
  964. package/dist/mcp/index.js +53 -45
  965. package/dist/mcp/sdk/index.d.ts +37 -25
  966. package/dist/mcp/sdk/index.js +16 -13
  967. package/dist/mentions-ByYnRNIG.js +114 -0
  968. package/dist/message-Bg4TKA12.d.ts +99 -0
  969. package/dist/messages-DNzIVvgN.js +492 -0
  970. package/dist/messaging-BC-P-yAv.js +329 -0
  971. package/dist/messaging-CZ6aWb10.d.ts +297 -0
  972. package/dist/metric-definition-EAYI1r2n.d.ts +69 -0
  973. package/dist/mfa-wrx1rqJT.d.ts +36 -0
  974. package/dist/model-Btl8X9cs.d.ts +326 -0
  975. package/dist/model-messages-D-jVOIOK.js +206 -0
  976. package/dist/model-messages-DrR4lZ_c.d.ts +34 -0
  977. package/dist/money-BNRdJQzA.d.ts +91 -0
  978. package/dist/money-BZl985O-.js +197 -0
  979. package/dist/money-codec-jMP0PQLZ.js +41 -0
  980. package/dist/my-work-kinds-BU3SlA-6.js +11 -0
  981. package/dist/nestjs/index.d.ts +32 -17
  982. package/dist/nestjs/index.js +27 -18
  983. package/dist/next/client/index.d.ts +8 -7
  984. package/dist/next/client/index.js +8 -7
  985. package/dist/next/image/index.d.ts +8 -6
  986. package/dist/next/image/index.js +7 -5
  987. package/dist/next/index.d.ts +342 -110
  988. package/dist/next/index.js +225 -45
  989. package/dist/node/index.d.ts +3 -3
  990. package/dist/node/index.js +33 -23
  991. package/dist/node-headers-BPtMP4_V.d.ts +27 -0
  992. package/dist/nuxt/index.d.ts +7 -6
  993. package/dist/nuxt/index.js +7 -6
  994. package/dist/onboarding-CGMuX7sP.js +68 -0
  995. package/dist/openapi/index.d.ts +4 -3
  996. package/dist/openapi/index.js +10 -7
  997. package/dist/operations-DVHRHvv6.js +29 -0
  998. package/dist/operations-nWYRexee.d.ts +6 -0
  999. package/dist/optional-peer-C1NbBRJm.js +32 -0
  1000. package/dist/options-289GJc2l.d.ts +52 -0
  1001. package/dist/options-2EMA_x6_.js +16 -0
  1002. package/dist/options-63AKQNv0.js +5 -0
  1003. package/dist/options-70OsM-wK.js +10 -0
  1004. package/dist/options-9gvPo1BC.js +8 -0
  1005. package/dist/options-B5VUf4IT.js +8 -0
  1006. package/dist/options-BPDiwSa-.js +5 -0
  1007. package/dist/options-BYOtaF7w.js +5 -0
  1008. package/dist/options-BZOliZvb.js +9 -0
  1009. package/dist/options-BjtrC7o6.js +8 -0
  1010. package/dist/options-BkpqTGrJ.js +8 -0
  1011. package/dist/options-Bpl-WFPk.js +15 -0
  1012. package/dist/options-Br1Xi2Hw.js +9 -0
  1013. package/dist/options-CF7nRWXS.js +5 -0
  1014. package/dist/options-CSCXNYJO.d.ts +8 -0
  1015. package/dist/options-CYV4iZiQ.js +5 -0
  1016. package/dist/options-CalPr6kN.d.ts +12 -0
  1017. package/dist/options-CfxBliP6.d.ts +17 -0
  1018. package/dist/options-CmoJsd4V.d.ts +8 -0
  1019. package/dist/options-Cyu0hgmN.js +9 -0
  1020. package/dist/options-D0bzZx9a.d.ts +10 -0
  1021. package/dist/options-D1hSuf50.d.ts +12 -0
  1022. package/dist/options-D4aD9qwB.js +5 -0
  1023. package/dist/options-D65jzn7S.js +5 -0
  1024. package/dist/options-D7sgG1bQ.js +16 -0
  1025. package/dist/options-DJ-aYPVN.js +5 -0
  1026. package/dist/options-DJm31rsi.d.ts +16 -0
  1027. package/dist/options-DWML05Cp.js +5 -0
  1028. package/dist/options-DXuA4JVa.d.ts +15 -0
  1029. package/dist/options-DZupPoI0.d.ts +10 -0
  1030. package/dist/options-DlohRAYd.d.ts +13 -0
  1031. package/dist/options-Dm-2crCx.d.ts +273 -0
  1032. package/dist/options-DrSkIBCD.js +9 -0
  1033. package/dist/options-DujalSfR.js +10 -0
  1034. package/dist/options-Dz3hJxUw.d.ts +10 -0
  1035. package/dist/options-E7KcmHQv.js +8 -0
  1036. package/dist/options-IHPg8ZoA.js +5 -0
  1037. package/dist/options-MQfTGMgP.d.ts +14 -0
  1038. package/dist/options-OMAUVcKK.d.ts +10 -0
  1039. package/dist/options-a-28mlYT.js +9 -0
  1040. package/dist/options-o2kfYU2x.js +8 -0
  1041. package/dist/options-t_O5ldT6.js +5 -0
  1042. package/dist/options-te6d5-yz.d.ts +19 -0
  1043. package/dist/options-xD4_FRUq.js +10 -0
  1044. package/dist/options-zkyhM3qi.js +8 -0
  1045. package/dist/organizations-DtehZg3J.js +401 -0
  1046. package/dist/orpc/index.d.ts +109 -38
  1047. package/dist/orpc/index.js +53 -18
  1048. package/dist/otel/index.d.ts +19 -16
  1049. package/dist/otel/index.js +22 -19
  1050. package/dist/outbox-CsF_iKjx.d.ts +199 -0
  1051. package/dist/overlay/index.d.ts +71 -55
  1052. package/dist/overlay/index.js +48 -41
  1053. package/dist/payments-BtScsgPS.js +16 -0
  1054. package/dist/payments-CBzQIjoX.d.ts +114 -0
  1055. package/dist/permissions-BetA_Fo_.js +34 -0
  1056. package/dist/pg-error-B5QLDcbG.js +26 -0
  1057. package/dist/plugin-Ar5546xh.d.ts +202 -0
  1058. package/dist/plugin-D9bYbYli.js +45 -0
  1059. package/dist/plugins/actor/index.d.ts +9 -6
  1060. package/dist/plugins/actor/index.js +6 -6
  1061. package/dist/plugins/rules/index.d.ts +15 -15
  1062. package/dist/plugins/rules/index.js +13 -7
  1063. package/dist/plugins/soft-delete/index.d.ts +7 -7
  1064. package/dist/plugins/soft-delete/index.js +7 -7
  1065. package/dist/plugins/tenant/index.d.ts +16 -11
  1066. package/dist/plugins/tenant/index.js +9 -10
  1067. package/dist/plugins/timestamps/index.d.ts +3 -3
  1068. package/dist/plugins/timestamps/index.js +4 -4
  1069. package/dist/plugins/validation/index.d.ts +4 -4
  1070. package/dist/plugins/validation/index.js +5 -5
  1071. package/dist/pool-CRkU15dA.d.ts +123 -0
  1072. package/dist/pool-errors-B17BQRW-.js +27 -0
  1073. package/dist/ports-DsJicwI2.d.ts +89 -0
  1074. package/dist/ports-yajgT0t0.js +139 -0
  1075. package/dist/postgres/index.d.ts +15 -15
  1076. package/dist/postgres/index.js +14 -8
  1077. package/dist/postgrest-DHLlN2nS.d.ts +53 -0
  1078. package/dist/powersync/index.d.ts +13 -14
  1079. package/dist/powersync/index.js +65 -36
  1080. package/dist/powersync/react/index.d.ts +13 -12
  1081. package/dist/powersync/react/index.js +15 -11
  1082. package/dist/preset/index.d.ts +4 -4
  1083. package/dist/preset/index.js +4 -4
  1084. package/dist/preset-DzcQ5CQM.js +841 -0
  1085. package/dist/problem-BWElIgIb.js +162 -0
  1086. package/dist/problem-DpHB7tWl.d.ts +79 -0
  1087. package/dist/provider-DmiaI1qt.d.ts +112 -0
  1088. package/dist/provider-EJ0-5GwJ.js +57 -0
  1089. package/dist/push-token-BxKmYhwk.d.ts +24 -0
  1090. package/dist/queries-Dw8y9bvz.js +245 -0
  1091. package/dist/query/index.d.ts +4 -4
  1092. package/dist/query/index.js +291 -3
  1093. package/dist/rank-result-C_sHjkiz.js +18 -0
  1094. package/dist/rank-result-DwR0FawB.d.ts +14 -0
  1095. package/dist/rate-limit-B_U12PdL.js +49 -0
  1096. package/dist/rate-limit-CrOuXfjj.d.ts +50 -0
  1097. package/dist/rate-limit-DExDw3Cy.js +327 -0
  1098. package/dist/ratelimit-headers-kEcXyO3H.js +62 -0
  1099. package/dist/react/index.d.ts +11 -11
  1100. package/dist/react/index.js +5 -5
  1101. package/dist/react/native/index.d.ts +36 -21
  1102. package/dist/react/native/index.js +32 -20
  1103. package/dist/react/server.d.ts +77 -21
  1104. package/dist/react/server.js +70 -14
  1105. package/dist/react/session.d.ts +9 -7
  1106. package/dist/react/session.js +7 -5
  1107. package/dist/react-28VgUbm9.js +852 -0
  1108. package/dist/react-BKCnIuZs.js +79 -0
  1109. package/dist/react-controller-CKSdtJ10.js +43 -0
  1110. package/dist/react-env-CfA3EdBH.js +20 -0
  1111. package/dist/react-router/index.d.ts +35 -25
  1112. package/dist/react-router/index.js +14 -13
  1113. package/dist/read-set-BAR84kPC.js +199 -0
  1114. package/dist/realtime/index.d.ts +8 -8
  1115. package/dist/realtime/index.js +37 -5
  1116. package/dist/realtime-status-BhNkb-Ow.d.ts +8 -0
  1117. package/dist/realtime-status-asHvhiOh.js +11 -0
  1118. package/dist/recordings-DgDu7AOt.d.ts +119 -0
  1119. package/dist/records/index.d.ts +83 -0
  1120. package/dist/records/index.js +315 -0
  1121. package/dist/refusal-DXydjgsS.js +64 -0
  1122. package/dist/refusal-efy5bZMd.d.ts +32 -0
  1123. package/dist/resolve-CzUKTIMq.d.ts +289 -0
  1124. package/dist/resolve-DAYdcs22.js +892 -0
  1125. package/dist/resolved-names-Dr7brlLL.js +133 -0
  1126. package/dist/resource-BRRU-A7j.js +91 -0
  1127. package/dist/resource-DYDEnww-.d.ts +115 -0
  1128. package/dist/resource-Dk_JYsOt.js +469 -0
  1129. package/dist/resource-execute-bT9ltHVT.d.ts +15 -0
  1130. package/dist/resource-schemas-up6bKOUi.js +82 -0
  1131. package/dist/resource-types-Bzt_bpR5.d.ts +153 -0
  1132. package/dist/resources-BV6j5TTD.js +64 -0
  1133. package/dist/resources-Du5wcL3f.d.ts +7 -0
  1134. package/dist/respond-CZYibxUx.d.ts +101 -0
  1135. package/dist/respond-z_yfyitp.js +100 -0
  1136. package/dist/result-B3m7xtRY.js +146 -0
  1137. package/dist/result-C6jDfedy.d.ts +350 -0
  1138. package/dist/rows-Bb0EPupt.js +80 -0
  1139. package/dist/rows-CtLWqdGQ.js +39 -0
  1140. package/dist/rrule-xDm2znty.js +290 -0
  1141. package/dist/rules-DcW5mj1r.js +287 -0
  1142. package/dist/run-watch-B-LoK5m1.js +53 -0
  1143. package/dist/runtime-CoKxZibd.js +45 -0
  1144. package/dist/sales-lines-9HsX89aO.d.ts +28 -0
  1145. package/dist/sales-lines-BhrIx2oK.js +41 -0
  1146. package/dist/sales-shared-C_u68eq2.js +22 -0
  1147. package/dist/schemas-9Ci3K0Hk.js +103 -0
  1148. package/dist/schemas-ypoQZ_6N.js +157 -0
  1149. package/dist/scores-CsURQDUB.d.ts +172 -0
  1150. package/dist/scores-DdPZVVt8.js +177 -0
  1151. package/dist/search-Cn_DGluL.js +9 -0
  1152. package/dist/search-ToCOlCZ8.js +106 -0
  1153. package/dist/sections-DjxYmpu-.js +26 -0
  1154. package/dist/server/index.d.ts +153 -116
  1155. package/dist/server/index.js +49 -40
  1156. package/dist/server-types-BOs-eFpo.d.ts +809 -0
  1157. package/dist/session-BgsOPGZs.d.ts +97 -0
  1158. package/dist/settings-mL-i7QUM.js +93 -0
  1159. package/dist/shared-Bf-I13Ht.js +91 -0
  1160. package/dist/shared-CRRfQAKG.d.ts +11 -0
  1161. package/dist/shared-LmlfYPv4.js +60 -0
  1162. package/dist/shared-eVrl39dX.js +17 -0
  1163. package/dist/sign-in-D54FLMQy.d.ts +55 -0
  1164. package/dist/sign-in-lAyf6Ohy.js +386 -0
  1165. package/dist/signatures-GUBuhLOB.js +145 -0
  1166. package/dist/signatures-zbu6KTNQ.d.ts +43 -0
  1167. package/dist/signers-D6ecZl22.d.ts +390 -0
  1168. package/dist/signing-keys-B3RHGMMu.d.ts +119 -0
  1169. package/dist/signing-keys-fWapUzi0.js +164 -0
  1170. package/dist/solid/index.d.ts +69 -24
  1171. package/dist/solid/index.js +62 -17
  1172. package/dist/solid-bind-C1jeq4Qm.d.ts +11 -0
  1173. package/dist/solid-bind-iHGfGtBK.js +38 -0
  1174. package/dist/solid-controller-DGuv7V8a.js +13 -0
  1175. package/dist/solid-start/index.d.ts +27 -20
  1176. package/dist/solid-start/index.js +9 -9
  1177. package/dist/spec/index.d.ts +40 -25
  1178. package/dist/spec/index.js +26 -21
  1179. package/dist/spec-CoWHDoud.js +119 -0
  1180. package/dist/spec-pins-CZ2CL8YZ.d.ts +120 -0
  1181. package/dist/spec-pins-D3Tm6HJi.js +60 -0
  1182. package/dist/sql/index.d.ts +5 -5
  1183. package/dist/sql/index.js +5 -5
  1184. package/dist/sql-CVYjOUyG.js +421 -0
  1185. package/dist/sql-rQDL6PIL.js +122247 -0
  1186. package/dist/sso-B744gHeS.d.ts +161 -0
  1187. package/dist/sso-Bt9HocgW.js +217 -0
  1188. package/dist/ssr/index.d.ts +4 -4
  1189. package/dist/ssr/index.js +3 -3
  1190. package/dist/standard-DbQsD2xZ.d.ts +7 -0
  1191. package/dist/standard-DtkpFGkS.js +25 -0
  1192. package/dist/stats-qCEV5M3B.js +1147 -0
  1193. package/dist/statuses-DMMDwXpZ.js +29 -0
  1194. package/dist/statuses-zRcc2TeZ.js +28 -0
  1195. package/dist/storage/index.d.ts +4 -4
  1196. package/dist/storage/index.js +138 -74
  1197. package/dist/store-McN-2esd.js +69 -0
  1198. package/dist/store-o0HwYXl8.d.ts +83 -0
  1199. package/dist/streams/index.d.ts +24 -18
  1200. package/dist/streams/index.js +3 -4
  1201. package/dist/streams/redis/index.d.ts +10 -7
  1202. package/dist/streams/redis/index.js +9 -9
  1203. package/dist/stripe/index.d.ts +5 -2
  1204. package/dist/stripe/index.js +2 -2
  1205. package/dist/stripe-BJUfp5jM.js +32 -0
  1206. package/dist/stripe-X22LjuH-.d.ts +156 -0
  1207. package/dist/subject-readers-CsTpx44c.js +49 -0
  1208. package/dist/subject-readers-DEZ45DQF.d.ts +21 -0
  1209. package/dist/subjects-B6p4oAZJ.d.ts +78 -0
  1210. package/dist/subjects-DXFmanh5.d.ts +90 -0
  1211. package/dist/subjects-DevU_atb.js +107 -0
  1212. package/dist/subscribers-BvZxcd63.js +33 -0
  1213. package/dist/summaries-8jQTELIX.d.ts +69 -0
  1214. package/dist/supabase-mcp-Dz9DgrKP.js +28 -0
  1215. package/dist/supabase-mcp-Z4vtsuoO.d.ts +46 -0
  1216. package/dist/support-Ds1-UCN4.js +534 -0
  1217. package/dist/support-view-vwJbRMpV.d.ts +17 -0
  1218. package/dist/svelte/index.d.ts +51 -15
  1219. package/dist/svelte/index.js +46 -13
  1220. package/dist/svelte-bind-BHN5a8VV.js +46 -0
  1221. package/dist/svelte-bind-Ja6CtQGp.d.ts +13 -0
  1222. package/dist/svelte-controller-oFKC9AYu.js +19 -0
  1223. package/dist/sveltekit/index.d.ts +50 -35
  1224. package/dist/sveltekit/index.js +19 -18
  1225. package/dist/table-schema-BcB-VCQb.js +293 -0
  1226. package/dist/table-schema-Cb-IV_pZ.d.ts +78 -0
  1227. package/dist/tags-CLXi2c6O.d.ts +30 -0
  1228. package/dist/tags-C_ym1yDM.js +39 -0
  1229. package/dist/tags-EnvIccSJ.js +86 -0
  1230. package/dist/tanstack-db/index.d.ts +17 -11
  1231. package/dist/tanstack-db/index.js +7 -7
  1232. package/dist/tanstack-db/supabase/index.d.ts +24 -9
  1233. package/dist/tanstack-db/supabase/index.js +7 -4
  1234. package/dist/tanstack-start/index.d.ts +45 -31
  1235. package/dist/tanstack-start/index.js +33 -19
  1236. package/dist/tax-CIIxd8Zf.d.ts +170 -0
  1237. package/dist/tax-DmOMjrYc.js +140 -0
  1238. package/dist/tee-DwkUvJD_.js +101 -0
  1239. package/dist/template-BWP7IXZg.js +126 -0
  1240. package/dist/temporal-DLZlWbOi.js +85 -0
  1241. package/dist/temporal-required-B8qQHYbI.js +20 -0
  1242. package/dist/tenant-Bg4PDLkG.d.ts +17 -0
  1243. package/dist/tenant-DnMqeNIM.js +27 -0
  1244. package/dist/tenant-source-bqWpSr86.js +8 -0
  1245. package/dist/testing/index.d.ts +606 -267
  1246. package/dist/testing/index.js +665 -210
  1247. package/dist/timeline-0_hTBH0-.js +52 -0
  1248. package/dist/timeline-DUUsPLv5.d.ts +152 -0
  1249. package/dist/timing-C5NzaEgy.js +95 -0
  1250. package/dist/topic-CPOmMgkf.js +643 -0
  1251. package/dist/topic-D9j8G2dw.d.ts +415 -0
  1252. package/dist/ttl-cache-Bhr9swjT.js +32 -0
  1253. package/dist/types-BEDfwXL4.d.ts +251 -0
  1254. package/dist/types-BRJHGhSq.d.ts +177 -0
  1255. package/dist/types-BTK75521.js +8 -0
  1256. package/dist/types-CGUDoF5I.d.ts +624 -0
  1257. package/dist/types-DkPE7yd2.d.ts +194 -0
  1258. package/dist/types-QHeku_6b.d.ts +217 -0
  1259. package/dist/types-uHD9yANu.d.ts +700 -0
  1260. package/dist/undo-B696duxr.d.ts +46 -0
  1261. package/dist/undo-vutx78k8.js +44 -0
  1262. package/dist/upload-claim-D_wgDbi7.js +33 -0
  1263. package/dist/usage-BI1E2940.js +264 -0
  1264. package/dist/usage-DBcVGqnr.d.ts +232 -0
  1265. package/dist/user-change-CSR_prhd.js +133 -0
  1266. package/dist/variants-DL7NpFJ7.js +53 -0
  1267. package/dist/vault-BQTdu4eH.d.ts +62 -0
  1268. package/dist/vercel-connect/index.d.ts +3 -3
  1269. package/dist/vercel-connect/index.js +8 -8
  1270. package/dist/verify-27w0I5C9.js +130 -0
  1271. package/dist/verify-BmuCB4PW.d.ts +146 -0
  1272. package/dist/view-2_I-2ukO.d.ts +90 -0
  1273. package/dist/view-BtgqxQLM.js +108 -0
  1274. package/dist/vue/index.d.ts +70 -28
  1275. package/dist/vue/index.js +68 -22
  1276. package/dist/vue-bind-CFxon-Vs.js +45 -0
  1277. package/dist/vue-bind-TPkbLl4z.d.ts +11 -0
  1278. package/dist/vue-controller-WtbuT-Ux.js +13 -0
  1279. package/dist/watch-CfMT6vX7.js +139 -0
  1280. package/dist/watch-DziJudwj.d.ts +93 -0
  1281. package/dist/watch-topic-CIT3UlAh.d.ts +31 -0
  1282. package/dist/watch-topic-CuaWfCuv.js +57 -0
  1283. package/dist/wire-Bizdxvp-.js +66 -0
  1284. package/dist/work-items-Cnntm8ij.d.ts +238 -0
  1285. package/dist/workflow-builder-2q1iqHYG.js +699 -0
  1286. package/dist/workflow-sdk/builder/index.d.ts +51 -37
  1287. package/dist/workflow-sdk/builder/index.js +30 -24
  1288. package/dist/workflow-sdk/index.d.ts +24 -15
  1289. package/dist/workflow-sdk/index.js +9 -6
  1290. package/dist/workflow-sdk/world/index.d.ts +56 -24
  1291. package/dist/workflow-sdk/world/index.js +47 -24
  1292. package/dist/workflow-sdk-BTYWQQg9.d.ts +163 -0
  1293. package/dist/workflow-sdk-_pqDUwNK.js +242 -0
  1294. package/dist/workflow-sdk-world-BIwGVy6S.js +2401 -0
  1295. package/dist/workflows-D8U7KyXJ.d.ts +258 -0
  1296. package/dist/workflows-VJBSV-QR.js +285 -0
  1297. package/dist/yjs/index.d.ts +39 -12
  1298. package/dist/yjs/index.js +63 -21
  1299. package/package.json +216 -3
  1300. package/schemas/cli-commands-v1.json +18 -0
  1301. package/schemas/config-v1.json +742 -35
  1302. package/schemas/design-v1.json +351 -0
  1303. package/schemas/doctor-report-v1.json +5 -1
  1304. package/schemas/snapshot-v2.json +25 -0
  1305. package/skills/better-supabase/SKILL.md +6 -5
  1306. package/skills/better-supabase/references/frontend.md +3 -2
  1307. package/skills/better-supabase/references/troubleshooting.md +18 -18
  1308. package/skills/better-supabase/references/ui-recipes.md +12686 -8024
  1309. package/skills/better-supabase-api/SKILL.md +1 -1
  1310. package/skills/better-supabase-api/references/adapters.md +3 -6
  1311. package/skills/better-supabase-api/references/expo.md +1 -0
  1312. package/skills/better-supabase-api/references/powersync.md +8 -1
  1313. package/skills/better-supabase-testing/SKILL.md +2 -3
  1314. package/dist/access-sql-CTJPHjCL.js +0 -201
  1315. package/dist/actor-BAhb-d1S.d.ts +0 -104
  1316. package/dist/actor-CAL8mMih.js +0 -151
  1317. package/dist/adapter-CRNH2aX_.js +0 -2107
  1318. package/dist/agents-CGP2AQge.d.ts +0 -111
  1319. package/dist/ai-cache-BdeJKlrV.d.ts +0 -70
  1320. package/dist/ai-cache-CLninP-F.js +0 -84
  1321. package/dist/ai-chat-D-2MH1sU.d.ts +0 -608
  1322. package/dist/ai-files-ChFDkMLN.js +0 -339
  1323. package/dist/ai-tasks-ZvPnNudQ.d.ts +0 -157
  1324. package/dist/announcements-BNxTW5HJ.js +0 -128
  1325. package/dist/api-C43_FYDp.js +0 -680
  1326. package/dist/api-DoWK3dTw.d.ts +0 -411
  1327. package/dist/api-keys-AgDXbcql.d.ts +0 -205
  1328. package/dist/api-keys-BSXwI2jF.js +0 -318
  1329. package/dist/app-tables-BRjMcWhW.js +0 -819
  1330. package/dist/app-tables-BrMBjyuq.d.ts +0 -35
  1331. package/dist/approvals-CyX709B-.d.ts +0 -124
  1332. package/dist/assistant-DZsHsYIx.d.ts +0 -148
  1333. package/dist/attachments-CK8D8bIV.js +0 -270
  1334. package/dist/attributes-D4mA7WhI.js +0 -38
  1335. package/dist/audit-log-ovUlF4Mk.js +0 -786
  1336. package/dist/auth-CdBKt0CS.js +0 -20
  1337. package/dist/auth-link-BjFPqwLz.d.ts +0 -97
  1338. package/dist/auth-link-DrDX9KOT.js +0 -114
  1339. package/dist/auth-module-DbZv2WrR.js +0 -10
  1340. package/dist/auth-reply-Daq72lY4.js +0 -31
  1341. package/dist/authorization-ClWBcXJi.d.ts +0 -1456
  1342. package/dist/authorization-hooks-WDQMKIsc.d.ts +0 -214
  1343. package/dist/authorizer-B3yyCVUF.js +0 -126
  1344. package/dist/authorizer-eiOjo-3l.d.ts +0 -73
  1345. package/dist/base64-D4aqdnDR.js +0 -42
  1346. package/dist/before-route-B98js9m_.js +0 -30
  1347. package/dist/bind-Bfo40o63.d.ts +0 -70
  1348. package/dist/block-env-CBd_SoL5.js +0 -29
  1349. package/dist/block-env-Dxl7rsI0.d.ts +0 -10
  1350. package/dist/block-events-DD9Q_NUz.js +0 -96
  1351. package/dist/block-fields-Bv1hV855.js +0 -139
  1352. package/dist/block-fields-DnaDbgZS.d.ts +0 -55
  1353. package/dist/block-helpers-CjcQM1yA.d.ts +0 -37
  1354. package/dist/block-helpers-DkVZNDrj.js +0 -264
  1355. package/dist/block-hooks-C22vuIUd.js +0 -114
  1356. package/dist/block-hooks-DcPJHztl.d.ts +0 -107
  1357. package/dist/block-transport-DezJPPA0.d.ts +0 -70
  1358. package/dist/block-transport-J7ZepTq2.js +0 -85
  1359. package/dist/blocks-D2WQ63PI.js +0 -84
  1360. package/dist/bookings-DQ7P888X.js +0 -181
  1361. package/dist/bucket-BbePDVwc.d.ts +0 -598
  1362. package/dist/build-C-D_vn0U.js +0 -694
  1363. package/dist/build-CT6SPZkI.js +0 -1815
  1364. package/dist/calendar-eqyuQAoy.js +0 -801
  1365. package/dist/channel-D-LHCY11.d.ts +0 -78
  1366. package/dist/channels-C-GCoNLd.js +0 -114
  1367. package/dist/claims-0KZVT804.js +0 -61
  1368. package/dist/claims-PqzCxaTD.js +0 -85
  1369. package/dist/cli/add-BcOHumvq.js +0 -75
  1370. package/dist/cli/add-DnAyR9w_.js +0 -1
  1371. package/dist/cli/add-TT72pQk6.js +0 -651
  1372. package/dist/cli/adopt-BuS-DC7_.js +0 -1
  1373. package/dist/cli/adopt-mbB1bcIG.js +0 -412
  1374. package/dist/cli/agent-CCrTYK3W.js +0 -176
  1375. package/dist/cli/apply-CiBFOFGw.js +0 -326
  1376. package/dist/cli/blocks-5-JGzwXX.js +0 -124
  1377. package/dist/cli/blocks-DeLQOlUK.js +0 -1
  1378. package/dist/cli/cache-DQwgb3rg.js +0 -507
  1379. package/dist/cli/catalog-Cm6BtquM.js +0 -188
  1380. package/dist/cli/codemod-BzAMX4el.js +0 -985
  1381. package/dist/cli/command-dfdVhU_2.js +0 -891
  1382. package/dist/cli/completion-4lLjtI49.js +0 -1
  1383. package/dist/cli/completion-D4InNrxw.js +0 -30
  1384. package/dist/cli/completion-zsp5s0zI.js +0 -205
  1385. package/dist/cli/config-CCyweX7Y.js +0 -1
  1386. package/dist/cli/config-DI6ielsx.js +0 -39
  1387. package/dist/cli/config-edit-Ct1lXe8a.js +0 -603
  1388. package/dist/cli/config-yZ55rsKZ.js +0 -1463
  1389. package/dist/cli/db-DT1bGB02.js +0 -78
  1390. package/dist/cli/db-TRymMyAW.js +0 -90
  1391. package/dist/cli/design-edit-0U9iCTiS.js +0 -202
  1392. package/dist/cli/detect-DQsVeBHg.js +0 -84
  1393. package/dist/cli/dist-D_VbPAMR.js +0 -129
  1394. package/dist/cli/doctor-DOfy6kjt.js +0 -3732
  1395. package/dist/cli/emit-56LAG_Px.js +0 -1067
  1396. package/dist/cli/env-B7TWPEt0.js +0 -1
  1397. package/dist/cli/env-C8R7Nf0a.js +0 -1088
  1398. package/dist/cli/env-Cmu99uKR.js +0 -1
  1399. package/dist/cli/env-Dh5K5t2U.js +0 -143
  1400. package/dist/cli/errors-Caiz_0so.js +0 -98
  1401. package/dist/cli/files-DDvAwTko.js +0 -963
  1402. package/dist/cli/fresh-import-BeYf9I3x.js +0 -40
  1403. package/dist/cli/gen-D3sC5jDn.js +0 -304
  1404. package/dist/cli/init-DNomoycJ.js +0 -394
  1405. package/dist/cli/introspect-kYX06Q2g.js +0 -51
  1406. package/dist/cli/io-BiPX-_J1.js +0 -37
  1407. package/dist/cli/keys-B8dIJwwi.js +0 -106
  1408. package/dist/cli/live-CkV3d3yp.js +0 -329
  1409. package/dist/cli/mcp-DrxB2Wuw.js +0 -237
  1410. package/dist/cli/metadata-BGkle6WM.js +0 -138
  1411. package/dist/cli/migration-safety-DjVpz2D6.js +0 -206
  1412. package/dist/cli/module-migration-CPhuiY8C.js +0 -592
  1413. package/dist/cli/moved-BMQu1YNY.js +0 -152
  1414. package/dist/cli/parse-QzDvMpXH.js +0 -170
  1415. package/dist/cli/preset-CfIs24cc.js +0 -129
  1416. package/dist/cli/prompts-Bvg_DBpe.js +0 -1137
  1417. package/dist/cli/redact-PjNswZOs.js +0 -35
  1418. package/dist/cli/run-Bck-p0MI.js +0 -63
  1419. package/dist/cli/run-BhJKAanr.js +0 -1528
  1420. package/dist/cli/run-DRZ10srj.js +0 -694
  1421. package/dist/cli/scaffold-DoURlDEI.js +0 -898
  1422. package/dist/cli/scaffold-mzy3OsN5.js +0 -1
  1423. package/dist/cli/seed-C5q4UUIL.js +0 -1
  1424. package/dist/cli/seed-CIdg6s7m.js +0 -114
  1425. package/dist/cli/shared-DKLuA1Tp.js +0 -145
  1426. package/dist/cli/skills-D3zwIlGA.js +0 -121
  1427. package/dist/cli/snapshot-BBKFojqM.js +0 -347
  1428. package/dist/cli/source-args-Cwo7zwvq.js +0 -53
  1429. package/dist/cli/spec-DOgQUZwM.js +0 -1
  1430. package/dist/cli/spec-DZeIP9ta.js +0 -7501
  1431. package/dist/cli/sql-CL_Lbhwl.js +0 -2
  1432. package/dist/cli/sql-DLOvvnBV.js +0 -326
  1433. package/dist/cli/stack-env-_uWWNHWq.js +0 -87
  1434. package/dist/cli/stack-status-_NUgd-g5.js +0 -496
  1435. package/dist/cli/style-2JfIPVMQ.js +0 -29
  1436. package/dist/cli/supabase-toml-BC5sNVKU.js +0 -1153
  1437. package/dist/cli/sync-DBvknfOK.js +0 -88
  1438. package/dist/cli/topics-BBE1-Vrg.js +0 -30
  1439. package/dist/cli/typegen--TfvOPLh.js +0 -494
  1440. package/dist/cli/validate-BfWNKvxy.js +0 -7522
  1441. package/dist/cli/version-B7akdvDv.js +0 -4
  1442. package/dist/cli/write-VZljwoTB.js +0 -198
  1443. package/dist/client-B9CqzgPO.js +0 -75
  1444. package/dist/client-BAOZuBhz.d.ts +0 -101
  1445. package/dist/client-BDO6i2Oe.js +0 -128
  1446. package/dist/client-BGnJ5WJi.js +0 -438
  1447. package/dist/client-BJN0IMEp.d.ts +0 -34
  1448. package/dist/client-BMcjLG0V.d.ts +0 -263
  1449. package/dist/client-BN_fXOs7.d.ts +0 -39
  1450. package/dist/client-BONsuFYf.d.ts +0 -100
  1451. package/dist/client-BPn9XhAM.d.ts +0 -218
  1452. package/dist/client-BfgwocyT.js +0 -155
  1453. package/dist/client-BpS8a6Fm.js +0 -51
  1454. package/dist/client-BtC-r4hE.d.ts +0 -52
  1455. package/dist/client-BuneNd-C.d.ts +0 -419
  1456. package/dist/client-BzCv4kKE.js +0 -65
  1457. package/dist/client-C-2ajnhM.js +0 -89
  1458. package/dist/client-C5mUEb2n.js +0 -55
  1459. package/dist/client-CFKONrrU.js +0 -1051
  1460. package/dist/client-CHR8IBNG.js +0 -318
  1461. package/dist/client-CHwNV8Kz.d.ts +0 -455
  1462. package/dist/client-CLQHsa-2.d.ts +0 -131
  1463. package/dist/client-CMxxwT3N.d.ts +0 -122
  1464. package/dist/client-CU7aNN_B.d.ts +0 -277
  1465. package/dist/client-CYEdJKjk.d.ts +0 -157
  1466. package/dist/client-CYhSGlCN.d.ts +0 -107
  1467. package/dist/client-C_-NZRrg.js +0 -120
  1468. package/dist/client-CcPxbHeT.js +0 -288
  1469. package/dist/client-CosiUrUb.js +0 -98
  1470. package/dist/client-D3gRTNSi.d.ts +0 -68
  1471. package/dist/client-D7T7OLiw.js +0 -169
  1472. package/dist/client-DB34f_7i.d.ts +0 -58
  1473. package/dist/client-DCawyopp.d.ts +0 -65
  1474. package/dist/client-DNq8xYb-.js +0 -52
  1475. package/dist/client-Dqa4XyJ5.d.ts +0 -108
  1476. package/dist/client-Dr5h2r9r.d.ts +0 -34
  1477. package/dist/client-DrTqKgvy.d.ts +0 -155
  1478. package/dist/client-DyfWYU8S.js +0 -84
  1479. package/dist/client-Dz1jWDA2.js +0 -209
  1480. package/dist/client-DzTtOVRR.js +0 -137
  1481. package/dist/client-Ezlbskjq.js +0 -60
  1482. package/dist/client-GCCRI9ge.d.ts +0 -135
  1483. package/dist/client-P6v3h7vh.d.ts +0 -130
  1484. package/dist/client-P8l8ncxV.d.ts +0 -103
  1485. package/dist/client-UnM3e32l.js +0 -133
  1486. package/dist/client-WgrPIHH-.js +0 -213
  1487. package/dist/client-ZTtSV3l8.js +0 -40
  1488. package/dist/client-arq4daO_.js +0 -104
  1489. package/dist/client-ckXfdy1k.js +0 -38
  1490. package/dist/client-eCDPjOMo.js +0 -438
  1491. package/dist/client-iaFm0aVf.js +0 -67
  1492. package/dist/client-kWg4OqIr.d.ts +0 -162
  1493. package/dist/client-pxjbgOz6.js +0 -376
  1494. package/dist/client-tvG258_1.d.ts +0 -59
  1495. package/dist/client-wKmX-f3r.d.ts +0 -388
  1496. package/dist/clone-dN9XOL1K.js +0 -29
  1497. package/dist/cloud-event-CTh9Sr5w.js +0 -60
  1498. package/dist/cloud-event-DXkNoI6v.d.ts +0 -64
  1499. package/dist/codecs-D-rpDifG.js +0 -358
  1500. package/dist/codecs-RwFNK8Jh.d.ts +0 -215
  1501. package/dist/codegen-C64C0NZG.d.ts +0 -1665
  1502. package/dist/comments-CV5O8q50.js +0 -230
  1503. package/dist/compiler-D_Gjpw_O.d.ts +0 -14
  1504. package/dist/compose-CP0ss-cQ.js +0 -53
  1505. package/dist/composite-1kPAxXto.js +0 -130
  1506. package/dist/composite-DzvBL5nb.d.ts +0 -67
  1507. package/dist/config-DHhQmmuD.js +0 -3917
  1508. package/dist/config-NQmw_wsk.js +0 -558
  1509. package/dist/connector-D9NMNkv0.d.ts +0 -107
  1510. package/dist/connectors-BwPNt-ZG.d.ts +0 -141
  1511. package/dist/context-B8_p3MXo.js +0 -11
  1512. package/dist/context-BiwgsycK.js +0 -41
  1513. package/dist/context-C-bHOtoD.js +0 -5
  1514. package/dist/context-Cv3KlxWY.d.ts +0 -377
  1515. package/dist/context-D6ZMKc2L.js +0 -19
  1516. package/dist/context-wDKxSl9x.js +0 -9
  1517. package/dist/controller-BZhiIb-N.d.ts +0 -46
  1518. package/dist/controller-D6NyNrlZ.js +0 -79
  1519. package/dist/cron-BHdXZFsJ.js +0 -145
  1520. package/dist/cron-route-mTvWhork.js +0 -24
  1521. package/dist/csv-CVfXqaAu.js +0 -89
  1522. package/dist/csv-D3eKxV1T.d.ts +0 -28
  1523. package/dist/db-exception-CnWcYPxL.js +0 -15
  1524. package/dist/define-Bu1v781m.js +0 -1962
  1525. package/dist/define-DYZnvAbs.d.ts +0 -1058
  1526. package/dist/define-block-B6Gjs57G.js +0 -52
  1527. package/dist/define-block-BHxLHLys.d.ts +0 -256
  1528. package/dist/delegation-B7uNnz6z.js +0 -140
  1529. package/dist/delivery-B1mKaOen.js +0 -30
  1530. package/dist/delivery-BeHgwS3k.d.ts +0 -69
  1531. package/dist/documents-CqtVr2fg.d.ts +0 -96
  1532. package/dist/email-BcmbIWOX.d.ts +0 -42
  1533. package/dist/embeddings-CKhygw4C.d.ts +0 -78
  1534. package/dist/embeddings-CVeOoufZ.js +0 -128
  1535. package/dist/ended-De6H52nX.d.ts +0 -70
  1536. package/dist/entitlements-C8UvF1Rz.js +0 -45
  1537. package/dist/entitlements-CtBGXb3B.d.ts +0 -53
  1538. package/dist/envelope-C4Z55LKW.js +0 -90
  1539. package/dist/errors-BV1SKTVs.js +0 -315
  1540. package/dist/errors-D3BR8iUk.js +0 -44
  1541. package/dist/escape-like-B339PlP-.d.ts +0 -15
  1542. package/dist/eve-B6ru2Bt4.d.ts +0 -151
  1543. package/dist/event-calendar-DJXXMJ3x.d.ts +0 -217
  1544. package/dist/event-map-Dy2vKHai.js +0 -19
  1545. package/dist/events-P3raDX2E.d.ts +0 -800
  1546. package/dist/events-xbpHkcK9.js +0 -82
  1547. package/dist/executor-BWgJNbGh.d.ts +0 -95
  1548. package/dist/executor-BiB0wMBA.js +0 -735
  1549. package/dist/executor-BnMC0lj3.d.ts +0 -272
  1550. package/dist/executor-CvsNcQsa.d.ts +0 -174
  1551. package/dist/executor-CxGQiQN_.js +0 -206
  1552. package/dist/executor-D1hECPGG.d.ts +0 -39
  1553. package/dist/executor-D3K3tycZ.js +0 -147
  1554. package/dist/field-errors-DZVRWRkf.js +0 -13
  1555. package/dist/field-errors-Z-sgsdoN.d.ts +0 -113
  1556. package/dist/field-formats-Cif5gr7c.js +0 -102
  1557. package/dist/field-formats-DCvOQlOy.d.ts +0 -39
  1558. package/dist/filter-evaluate-BJcaL3o1.d.ts +0 -34
  1559. package/dist/filter-evaluate-C0ULNfS7.js +0 -214
  1560. package/dist/filter-query-B3lhckKX.js +0 -518
  1561. package/dist/filter-query-Bc_Qa8V_.d.ts +0 -121
  1562. package/dist/flags-6KK6Vqkr.d.ts +0 -230
  1563. package/dist/flags-aUR7Rod6.js +0 -279
  1564. package/dist/form-definition-GVZTILhS.js +0 -311
  1565. package/dist/form-definition-sagoefQr.d.ts +0 -95
  1566. package/dist/format-CNwSjXUU.d.ts +0 -70
  1567. package/dist/framework-BQhTsLX-.d.ts +0 -26
  1568. package/dist/framework-C6PKBgme.js +0 -51
  1569. package/dist/function-contract-DWqFl_QO.d.ts +0 -21
  1570. package/dist/function-contract-DmkBg19r.js +0 -5
  1571. package/dist/gateway-Bq_tWwxE.d.ts +0 -109
  1572. package/dist/gateway-options-ClvvfuuU.d.ts +0 -29
  1573. package/dist/gateway-options-DcLcWL5_.js +0 -27
  1574. package/dist/graph-Cs28bOlK.js +0 -360
  1575. package/dist/hmac-BgpThYQW.js +0 -23
  1576. package/dist/http-C7trc6uN.js +0 -25
  1577. package/dist/http-Cv4T29xh.js +0 -40
  1578. package/dist/http-DdYadv-o.js +0 -126
  1579. package/dist/image-url-pIVlO6R1.js +0 -41
  1580. package/dist/impersonation-D5chOkrO.d.ts +0 -25
  1581. package/dist/impersonation-DxU6yHJV.js +0 -62
  1582. package/dist/inbox-Du5aPwKB.d.ts +0 -400
  1583. package/dist/index-1Vsg-7YV.d.ts +0 -58
  1584. package/dist/index-BJLPQr2s.d.ts +0 -377
  1585. package/dist/index-BpFYMsi0.d.ts +0 -53
  1586. package/dist/index-BpyBH5O2.d.ts +0 -227
  1587. package/dist/index-C-_fs7EI.d.ts +0 -258
  1588. package/dist/index-CXFf-c-j.d.ts +0 -131
  1589. package/dist/index-Cm2-g_4H.d.ts +0 -722
  1590. package/dist/index-CxmVzT-3.d.ts +0 -86
  1591. package/dist/index-DTQSeHx2.d.ts +0 -97
  1592. package/dist/index-Hc4tetmB.d.ts +0 -245
  1593. package/dist/index-QWTq2o31.d.ts +0 -138
  1594. package/dist/index-XcTBR4Gb.d.ts +0 -206
  1595. package/dist/index-k-rrfG1g.d.ts +0 -202
  1596. package/dist/index-wTnPJUhv.d.ts +0 -58
  1597. package/dist/invalidate-BBqhpxyB.d.ts +0 -19
  1598. package/dist/iso4217-A8ev-CNW.js +0 -176
  1599. package/dist/json-CEnpTHlZ.js +0 -16
  1600. package/dist/json-schema-CpYINXG8.js +0 -548
  1601. package/dist/jwks-cache-C4rA69hD.js +0 -49
  1602. package/dist/jws-35a8VhFV.d.ts +0 -60
  1603. package/dist/jws-CwBB5QAT.js +0 -193
  1604. package/dist/kit-De-EVRhw.d.ts +0 -66
  1605. package/dist/kit-LTbHrWWD.js +0 -104
  1606. package/dist/knowledge-B5zdpDD-.d.ts +0 -187
  1607. package/dist/knowledge-BbdXOJvY.js +0 -272
  1608. package/dist/list-query-CBXNfJt4.js +0 -549
  1609. package/dist/list-query-aXr2WkGA.d.ts +0 -194
  1610. package/dist/live-DwDreq1n.js +0 -239
  1611. package/dist/management-D1gG89z2.d.ts +0 -53
  1612. package/dist/message-B0fNJgq8.d.ts +0 -93
  1613. package/dist/messages-D5nIfCCf.js +0 -493
  1614. package/dist/metric-definition-95HFoW1V.d.ts +0 -70
  1615. package/dist/mfa-YzkRjNad.d.ts +0 -30
  1616. package/dist/model-lUafmeBQ.d.ts +0 -311
  1617. package/dist/model-messages-CIdqdUtk.js +0 -206
  1618. package/dist/model-messages-D4GZllOD.d.ts +0 -34
  1619. package/dist/money-95Rff2vT.js +0 -185
  1620. package/dist/money-DFpWzQvk.d.ts +0 -76
  1621. package/dist/money-codec-C21MWw50.js +0 -41
  1622. package/dist/node-headers-AO06VhqH.d.ts +0 -24
  1623. package/dist/onboarding-Du6kCmhF.js +0 -68
  1624. package/dist/operations-CsIfMED7.js +0 -29
  1625. package/dist/operations-DQCWqkt3.d.ts +0 -6
  1626. package/dist/optional-peer-Dx8TaYXw.js +0 -29
  1627. package/dist/options-BAW2ZlZ8.js +0 -8
  1628. package/dist/options-C1HR4UZd.js +0 -13
  1629. package/dist/options-Dh4wu9Ks.js +0 -15
  1630. package/dist/options-QKP9FFcK.js +0 -8
  1631. package/dist/options-XgfTctbI.js +0 -5
  1632. package/dist/options-ZQzNKKBS.d.ts +0 -52
  1633. package/dist/options-vXMBEWSH.js +0 -5
  1634. package/dist/organizations-CO2qg44D.js +0 -398
  1635. package/dist/outbox-B1hZ7PPY.d.ts +0 -181
  1636. package/dist/payments-CzjCdIcz.js +0 -16
  1637. package/dist/pg-error-BV_X8Isq.js +0 -26
  1638. package/dist/plugin-D-95Q0w0.d.ts +0 -190
  1639. package/dist/plugin-tfXW1-qO.js +0 -45
  1640. package/dist/pool-cM3rpOQr.d.ts +0 -117
  1641. package/dist/pool-errors-CGqvTQOC.js +0 -27
  1642. package/dist/ports-BCDIbC_U.d.ts +0 -86
  1643. package/dist/ports-P0A5wo_-.d.ts +0 -285
  1644. package/dist/ports-aALjot-D.js +0 -137
  1645. package/dist/postgrest-CjnO1hbr.d.ts +0 -53
  1646. package/dist/preset-Cf0T9GRt.js +0 -691
  1647. package/dist/problem-DCDIQiTA.d.ts +0 -76
  1648. package/dist/problem-JRCohp1j.js +0 -159
  1649. package/dist/provider-C-Ti38J6.js +0 -57
  1650. package/dist/provider-DXgx5oSA.d.ts +0 -113
  1651. package/dist/push-token-y1Gnz5bQ.d.ts +0 -24
  1652. package/dist/query-Ctz-qKRx.js +0 -303
  1653. package/dist/rank-result-BcYfDA0x.d.ts +0 -14
  1654. package/dist/rank-result-DtQuIvob.js +0 -18
  1655. package/dist/rate-limit-DVZ7qIzW.js +0 -49
  1656. package/dist/rate-limit-I3AncmM8.js +0 -325
  1657. package/dist/rate-limit-c6c1mB6R.d.ts +0 -41
  1658. package/dist/ratelimit-headers-Bsxx0Tj2.js +0 -62
  1659. package/dist/react-4ZqkP8da.js +0 -79
  1660. package/dist/react-DzukE6Wp.js +0 -410
  1661. package/dist/react-controller-Xn-IU44p.js +0 -40
  1662. package/dist/react-env-Cc7Vf6eb.js +0 -13
  1663. package/dist/read-set-DeesfeL_.js +0 -314
  1664. package/dist/realtime-status-D2dw1hOE.js +0 -12
  1665. package/dist/realtime-status-DcsO00Gw.d.ts +0 -8
  1666. package/dist/refusal-C7geIBRl.d.ts +0 -18
  1667. package/dist/refusal-CFpfmjcS.js +0 -61
  1668. package/dist/resolve-AtncaPTU.js +0 -877
  1669. package/dist/resolve-Ceft-18-.d.ts +0 -270
  1670. package/dist/resource-Bdkqi8jo.js +0 -463
  1671. package/dist/resource-DO4gbVi5.js +0 -91
  1672. package/dist/resource-DYEtc-KN.d.ts +0 -106
  1673. package/dist/resource-execute-Bxvgmx-n.d.ts +0 -12
  1674. package/dist/resource-schemas-BJ518zFH.js +0 -79
  1675. package/dist/resource-types-LW1i5-h3.d.ts +0 -141
  1676. package/dist/resources-Ck7itNeX.js +0 -64
  1677. package/dist/resources-D3_FAz_H.d.ts +0 -7
  1678. package/dist/respond-BSL36dQp.d.ts +0 -93
  1679. package/dist/respond-Bhp3G__q.js +0 -95
  1680. package/dist/result-BREt7qOh.d.ts +0 -312
  1681. package/dist/result-DIeYscA3.js +0 -134
  1682. package/dist/rrule-Cw4x4Pf_.js +0 -290
  1683. package/dist/rules-BiQgmZ_U.js +0 -287
  1684. package/dist/run-watch-CQRdpy-f.js +0 -53
  1685. package/dist/runtime-BOXURhEW.js +0 -45
  1686. package/dist/sales-lines-C6gafAwg.d.ts +0 -28
  1687. package/dist/sales-lines-CQ1iC6QM.js +0 -41
  1688. package/dist/sales-shared-CDSytDEn.js +0 -22
  1689. package/dist/search-BtoWY6n_.js +0 -9
  1690. package/dist/search-ZP13UTT4.js +0 -106
  1691. package/dist/server-types-fLdep4gb.d.ts +0 -757
  1692. package/dist/session-DObioXpX.d.ts +0 -95
  1693. package/dist/settings-BiHDFglz.js +0 -90
  1694. package/dist/shared-BmMcMoW9.js +0 -89
  1695. package/dist/shared-C9zvURqC.js +0 -14
  1696. package/dist/shared-D5Djh43x.js +0 -60
  1697. package/dist/shared-DDSjEGDR.d.ts +0 -11
  1698. package/dist/sign-in-BCV5S2WZ.d.ts +0 -49
  1699. package/dist/sign-in-z2BaBdps.js +0 -367
  1700. package/dist/signatures-BXlDXV3D.d.ts +0 -43
  1701. package/dist/signatures-CeIoAelK.js +0 -145
  1702. package/dist/signers-BwKV-9S6.d.ts +0 -385
  1703. package/dist/signing-keys-v2MRYkDF.d.ts +0 -105
  1704. package/dist/solid-controller-CWotGxcG.d.ts +0 -11
  1705. package/dist/solid-controller-DLsmrczT.js +0 -33
  1706. package/dist/spec-pins-Dqpml2dZ.d.ts +0 -84
  1707. package/dist/spec-pins-S4PymRxp.js +0 -60
  1708. package/dist/sql-BPKRNutj.js +0 -422
  1709. package/dist/sql-CT1Jnwp8.js +0 -88660
  1710. package/dist/sso-BaU_6ePE.js +0 -217
  1711. package/dist/sso-Bu0mVh0V.d.ts +0 -131
  1712. package/dist/standard-B1BigegP.js +0 -25
  1713. package/dist/standard-BcUQuUgu.d.ts +0 -7
  1714. package/dist/stats-Di5VAsYU.js +0 -1128
  1715. package/dist/store-B18bIvKc.d.ts +0 -68
  1716. package/dist/store-BdH5ruDx.js +0 -66
  1717. package/dist/stripe-NVcNOhHy.d.ts +0 -140
  1718. package/dist/stripe-XZrSmDTf.js +0 -32
  1719. package/dist/subject-readers-BUChuOxL.d.ts +0 -21
  1720. package/dist/subject-readers-BpwUFJtp.js +0 -46
  1721. package/dist/subjects-DP-fvFkk.d.ts +0 -77
  1722. package/dist/subscribers-Cq--DL1E.js +0 -34
  1723. package/dist/supabase-mcp-C6tMoEjn.d.ts +0 -43
  1724. package/dist/supabase-mcp-DomZ-amK.js +0 -28
  1725. package/dist/support-C2wPYwD7.js +0 -522
  1726. package/dist/support-view-Bj_lZ8Wr.d.ts +0 -17
  1727. package/dist/svelte-controller-CDAujo-_.js +0 -50
  1728. package/dist/svelte-controller-sS4X66yL.d.ts +0 -10
  1729. package/dist/table-schema-pQlER3jj.js +0 -283
  1730. package/dist/tags-B99_U9Pp.js +0 -39
  1731. package/dist/tags-BqgaxCnv.js +0 -84
  1732. package/dist/tags-BrGopDVG.d.ts +0 -30
  1733. package/dist/tax-DMWDUzKt.d.ts +0 -273
  1734. package/dist/tax-wm9g2mD2.js +0 -140
  1735. package/dist/tee-Cw-iJAWL.js +0 -101
  1736. package/dist/template-Dw3dTmKe.js +0 -123
  1737. package/dist/temporal-CB5Fpo5d.js +0 -79
  1738. package/dist/temporal-required-nfZ87U-0.js +0 -20
  1739. package/dist/tenant-B-fiItlJ.js +0 -27
  1740. package/dist/tenant-DZMLVuyQ.d.ts +0 -17
  1741. package/dist/tenant-naming-Bsj3Uvap.js +0 -27
  1742. package/dist/timing-BMCWgpdZ.js +0 -92
  1743. package/dist/topic-DAY_HOX2.d.ts +0 -387
  1744. package/dist/topic-mee21pux.js +0 -629
  1745. package/dist/ttl-Hr34gRu8.js +0 -12
  1746. package/dist/ttl-cache-XzZ-Q2eX.js +0 -29
  1747. package/dist/types-BA1eTvy4.d.ts +0 -162
  1748. package/dist/types-BEEFkNFY.d.ts +0 -564
  1749. package/dist/types-BRTSpOIh.js +0 -5
  1750. package/dist/types-Bels39_u.d.ts +0 -649
  1751. package/dist/types-BrpW5ixT.d.ts +0 -370
  1752. package/dist/types-DOC7wnh6.d.ts +0 -249
  1753. package/dist/types-D_2rClz-.d.ts +0 -205
  1754. package/dist/undo-B5LgpGLy.js +0 -44
  1755. package/dist/undo-BsdYRox7.d.ts +0 -43
  1756. package/dist/upload-claim-BBFCZbBF.js +0 -33
  1757. package/dist/usage-C504GF55.d.ts +0 -220
  1758. package/dist/usage-DdqT13_X.js +0 -261
  1759. package/dist/user-change-XzvgafU4.js +0 -130
  1760. package/dist/vault-ClkzMGTP.d.ts +0 -50
  1761. package/dist/verify-DU4p9-Ve.d.ts +0 -142
  1762. package/dist/verify-DnU-uWU2.js +0 -126
  1763. package/dist/version-DSWxci83.js +0 -4
  1764. package/dist/view-CYX1wsgp.js +0 -105
  1765. package/dist/view-KQhe6eNc.d.ts +0 -90
  1766. package/dist/vue-controller-BUo1oove.d.ts +0 -11
  1767. package/dist/vue-controller-C9tFzqAc.js +0 -32
  1768. package/dist/watch-5btote1y.d.ts +0 -84
  1769. package/dist/watch-BAuIzC2r.js +0 -139
  1770. package/dist/watch-topic-C79ZW5-R.d.ts +0 -28
  1771. package/dist/watch-topic-miuymrli.js +0 -57
  1772. package/dist/wire-BCJxCtHS.js +0 -45
  1773. package/dist/workflow-builder-CynLqc6H.js +0 -697
  1774. package/dist/workflow-sdk-CWdCWj7M.d.ts +0 -161
  1775. package/dist/workflow-sdk-QnnzIQRc.js +0 -243
  1776. package/dist/workflow-sdk-world-QzcxaaCD.js +0 -2103
  1777. package/dist/workflows-DQBCzrHC.d.ts +0 -243
  1778. package/dist/workflows-H9qJge3f.js +0 -282
@@ -1,2107 +0,0 @@
1
- import { c as mapDbError, n as dbError, o as isDbError, r as dbErrorOf } from "./errors-BV1SKTVs.js";
2
- import { t as temporal } from "./temporal-required-nfZ87U-0.js";
3
- import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-DIeYscA3.js";
4
- import { n as isRecord } from "./guards-6F2bCtQR.js";
5
- import { a as postgrestExecutor, n as StatsRecorder } from "./stats-Di5VAsYU.js";
6
- import { o as problemResponse } from "./problem-JRCohp1j.js";
7
- import { loadEnv } from "./env/index.js";
8
- import { i as userContext, t as actClaim } from "./impersonation-DxU6yHJV.js";
9
- import { t as fromPgError } from "./pg-error-BV_X8Isq.js";
10
- import { i as forwardBlockEvents, t as DEFAULT_TYPE_PREFIX } from "./cloud-event-CTh9Sr5w.js";
11
- import { a as replicaState, i as primaryCookieWrite, o as routedExecutor, r as pinnedUntil, s as withPrimaryPin } from "./replicas-BvIL4_jL.js";
12
- import { t as authContext } from "./context-BiwgsycK.js";
13
- import { a as narrowCap, i as delegatedClaims, r as contextClaims } from "./delegation-B7uNnz6z.js";
14
- import { d as parseCookies, h as sessionCookieName, m as serializeCookie, n as prefetchJwks, r as resolveAuth, s as AUTH_CACHE_HEADERS, u as clearSessionAtScopes } from "./resolve-AtncaPTU.js";
15
- import { t as credentialProviderOf } from "./provider-C-Ti38J6.js";
16
- import { a as respond, n as defaultPrefetchJwks, r as guard, t as defaultExpose } from "./respond-Bhp3G__q.js";
17
- import { createClient } from "@supabase/supabase-js";
18
- import { defineMiddleware, getEnv, pipeline, seedContext } from "@supabase/middleware";
19
- import { PostgrestClient } from "@supabase/postgrest-js";
20
- //#region src/server/delete-account.ts
21
- const REMOVE_BATCH = 1e3;
22
- /** Maps an `AuthApiError` from `auth.admin.deleteUser` to a `DbError`. */
23
- function fromAuthError(raw) {
24
- if (isDbError(raw)) return raw;
25
- const failure = typeof raw === "object" && raw !== null ? raw : {};
26
- const message = failure.message ?? "Auth request failed";
27
- const base = {
28
- table: "auth.users",
29
- ...failure.code ? { code: failure.code } : {}
30
- };
31
- if (failure.code === "user_not_found" || failure.status === 404) return dbError("not_found", message, base);
32
- if (/database error deleting user/i.test(message)) return dbError("conflict", message, {
33
- ...base,
34
- hint: "A foreign key to auth.users without on delete cascade or set null blocks the delete (doctor BS406)"
35
- });
36
- if (failure.status === 401) return dbError("unauthorized", message, base);
37
- if (failure.status === 403) return dbError("forbidden", message, base);
38
- return failure.name === "AuthRetryableFetchError" || (failure.status ?? 0) >= 500 ? dbError("network", message, base) : dbError("unexpected", message, base);
39
- }
40
- const UUID$2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
41
- const PROBE = "better_supabase.delete_account_probe";
42
- /**
43
- * The database error that refuses deleting `userId`, from the delete and its
44
- * deferred checks run in a `do` block that always fails, so nothing is
45
- * deleted. Undefined when the delete itself would pass.
46
- */
47
- async function databaseRefusal(sql, userId) {
48
- if (!UUID$2.test(userId)) return;
49
- try {
50
- await sql.queryRaw(`do $$
51
- begin
52
- delete from auth.users where id = '${userId}';
53
- set constraints all immediate;
54
- raise exception '${PROBE}';
55
- end;
56
- $$`);
57
- } catch (cause) {
58
- const raw = isDbError(cause) ? void 0 : fromPgError(cause);
59
- const error = isDbError(cause) ? cause : raw && mapDbError(raw);
60
- if (!error || error.message === PROBE) return;
61
- return {
62
- ...error,
63
- table: "auth.users"
64
- };
65
- }
66
- }
67
- /**
68
- * Deletes the Auth user, then removes their Storage objects, then announces
69
- * the delete. Rows referencing `auth.users` follow their foreign keys. The
70
- * objects are listed first and removed only once the user is gone, so a
71
- * delete the database refuses leaves them in place.
72
- *
73
- * `server.deleteAccount` calls it with the server's service client. Apps on
74
- * the `@supabase/server` pipeline call it with theirs:
75
- * `deleteAccount(betterSupabase, ctx.supabaseAdmin, userId)`.
76
- */
77
- function deleteAccount(betterSupabase, service, userId, options = {}) {
78
- return AsyncResult.from(async () => {
79
- const client = typeof service === "function" ? service() : service;
80
- const listedPaths = [];
81
- for (const bucket of options.buckets ?? []) {
82
- const param = bucket.owner;
83
- if (!param) continue;
84
- options.signal?.throwIfAborted();
85
- const listed = await bucket.connect(client, { allTenants: true }).list({ [param]: userId }, options.signal ? { signal: options.signal } : {});
86
- if (!listed.ok) return listed;
87
- listedPaths.push([bucket, listed.data.map((object) => object.path).filter((path) => {
88
- return bucket.match(path)?.[param] === userId;
89
- })]);
90
- }
91
- options.signal?.throwIfAborted();
92
- let alreadyGone = false;
93
- try {
94
- const { error } = await client.auth.admin.deleteUser(userId);
95
- const failure = error ? fromAuthError(error) : void 0;
96
- if (failure?.kind === "not_found") alreadyGone = true;
97
- else if (failure) {
98
- const refusal = options.sql && (failure.kind === "conflict" || failure.kind === "network" || failure.kind === "unexpected") ? await databaseRefusal(options.sql, userId) : void 0;
99
- return err(refusal ?? failure);
100
- }
101
- } catch (cause) {
102
- return err(fromAuthError(cause));
103
- }
104
- const removed = {};
105
- for (const [bucket, paths] of listedPaths) {
106
- const storage = bucket.connect(client, { allTenants: true });
107
- for (let start = 0; start < paths.length; start += REMOVE_BATCH) {
108
- const batch = await storage.remove(paths.slice(start, start + REMOVE_BATCH));
109
- if (!batch.ok) return batch;
110
- }
111
- removed[bucket.id] = paths.length;
112
- }
113
- if (alreadyGone) return ok({
114
- userId,
115
- removed
116
- });
117
- const context = options.context ?? {};
118
- betterSupabase.events.emit("mutation", {
119
- table: "auth.users",
120
- kind: "delete",
121
- rows: [{ id: userId }],
122
- context
123
- });
124
- for (const table of options.cascades ?? []) betterSupabase.events.emit("mutation", {
125
- table,
126
- kind: "delete",
127
- rows: [],
128
- context
129
- });
130
- return ok({
131
- userId,
132
- removed
133
- });
134
- });
135
- }
136
- //#endregion
137
- //#region src/server/suspend-account.ts
138
- const UUID$1 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
139
- const FOREVER = "876000h";
140
- const END_SESSIONS = `with ended as (
141
- delete from auth.sessions where user_id = $1::uuid returning id
142
- ), tokens as (
143
- delete from auth.refresh_tokens where user_id = $1::text
144
- )
145
- select count(*)::int as ended from ended`;
146
- function invalidUser(userId) {
147
- return dbError("invalid_request", `"${userId}" is not a user id`, { table: "auth.users" });
148
- }
149
- function fromSqlError(cause) {
150
- const known = dbErrorOf(cause);
151
- if (known) return known;
152
- const raw = fromPgError(cause);
153
- if (raw) return {
154
- ...mapDbError(raw),
155
- table: "auth.sessions"
156
- };
157
- return dbError("unexpected", cause instanceof Error ? cause.message : "Ending the sessions failed", { table: "auth.sessions" });
158
- }
159
- async function deleteSessions(sql, userId) {
160
- const [row] = await sql.queryRaw(END_SESSIONS, [userId]);
161
- return row?.ended ?? 0;
162
- }
163
- function endSessions(sql, userId) {
164
- return AsyncResult.from(async () => {
165
- if (!UUID$1.test(userId)) return err(invalidUser(userId));
166
- try {
167
- return ok({
168
- userId,
169
- ended: await deleteSessions(sql, userId)
170
- });
171
- } catch (cause) {
172
- return err(fromSqlError(cause));
173
- }
174
- });
175
- }
176
- const LAST_SIGN_INS = `select user_id, last_sign_in_at
177
- from better_supabase.last_sign_ins($1::uuid[])`;
178
- /**
179
- * The last sign-in of each user, in one query (`better_supabase.last_sign_ins`
180
- * from the `sessions` module, which only the service role may call). Users
181
- * that don't exist are missing from the map.
182
- */
183
- function lastSignIns(sql, userIds) {
184
- return AsyncResult.from(async () => {
185
- const invalid = userIds.find((userId) => !UUID$1.test(userId));
186
- if (invalid !== void 0) return err(invalidUser(invalid));
187
- if (userIds.length === 0) return ok(/* @__PURE__ */ new Map());
188
- try {
189
- const rows = await sql.queryRaw(LAST_SIGN_INS, [[...new Set(userIds)]]);
190
- return ok(new Map(rows.map((row) => [row.user_id, {
191
- userId: row.user_id,
192
- lastSignInAt: row.last_sign_in_at === null ? null : temporal().Instant.from(row.last_sign_in_at instanceof Date ? row.last_sign_in_at.toISOString() : row.last_sign_in_at)
193
- }])));
194
- } catch (cause) {
195
- return err(fromSqlError(cause));
196
- }
197
- });
198
- }
199
- async function ban(client, userId, duration) {
200
- try {
201
- const { error } = await client.auth.admin.updateUserById(userId, { ban_duration: duration });
202
- return error ? fromAuthError(error) : void 0;
203
- } catch (cause) {
204
- return fromAuthError(cause);
205
- }
206
- }
207
- function suspendAccount(service, sql, userId, options) {
208
- return AsyncResult.from(async () => {
209
- if (!UUID$1.test(userId)) return err(invalidUser(userId));
210
- const client = typeof service === "function" ? service() : service;
211
- const { suspended } = options;
212
- if (suspended) {
213
- const refused = await ban(client, userId, options.duration ?? FOREVER);
214
- if (refused) return err(refused);
215
- if (options.endSessions !== true) return ok({
216
- userId,
217
- suspended,
218
- ended: 0
219
- });
220
- }
221
- let ended;
222
- try {
223
- ended = await deleteSessions(sql, userId);
224
- } catch (cause) {
225
- return err(fromSqlError(cause));
226
- }
227
- if (!suspended) {
228
- const refused = await ban(client, userId, "none");
229
- if (refused) return err(refused);
230
- }
231
- return ok({
232
- userId,
233
- suspended,
234
- ended
235
- });
236
- });
237
- }
238
- //#endregion
239
- //#region src/server/audit.ts
240
- /** The CloudEvents `source` of the events the server sends to its `audit` sink. */
241
- const SERVER_EVENT_SOURCE = "/better-supabase/server";
242
- const OFF = { account: () => void 0 };
243
- /**
244
- * The server's audit trail: account actions are sent to `sink` as CloudEvents
245
- * typed `dev.better-supabase.account.*` with subject `users/<id>`, and
246
- * `support.denied` block events are forwarded to it.
247
- */
248
- function serverAudit(betterSupabase, sink) {
249
- if (sink === void 0) return OFF;
250
- const { events } = betterSupabase;
251
- forwardBlockEvents(betterSupabase, sink, {
252
- source: SERVER_EVENT_SOURCE,
253
- types: ["support.denied"]
254
- });
255
- const report = (cause) => {
256
- events.logger.error("audit sink failed", { cause });
257
- };
258
- return { account(type, userId, data) {
259
- const event = {
260
- specversion: "1.0",
261
- id: crypto.randomUUID(),
262
- source: SERVER_EVENT_SOURCE,
263
- type: `${DEFAULT_TYPE_PREFIX}.${type}`,
264
- subject: `users/${userId}`,
265
- time: (/* @__PURE__ */ new Date()).toISOString(),
266
- datacontenttype: "application/json",
267
- data: {
268
- userId,
269
- ...data
270
- }
271
- };
272
- try {
273
- events.track(Promise.resolve(sink.send([event])).catch(report));
274
- } catch (cause) {
275
- report(cause);
276
- }
277
- } };
278
- }
279
- //#endregion
280
- //#region src/core/contracts/authorization-hooks.ts
281
- /** Types `hooks` and freezes it; better-supabase never mutates a provider. */
282
- function defineAuthorizationHooks(hooks) {
283
- return Object.freeze(hooks);
284
- }
285
- /**
286
- * The error for hooks built for another API version, or `undefined` for
287
- * version 1.
288
- */
289
- function hooksApiProblem(hooks) {
290
- if (hooks.apiVersion === 1) return;
291
- return `authorization hooks "${typeof hooks.name === "string" ? hooks.name : "provider"}" target API ${String(hooks.apiVersion)}; this better-supabase supports 1.`;
292
- }
293
- //#endregion
294
- //#region src/server/clients.ts
295
- const STATELESS = {
296
- persistSession: false,
297
- autoRefreshToken: false,
298
- detectSessionInUrl: false
299
- };
300
- /** The Supabase and PostgREST clients of one server: shared service and anon clients, per-request user clients. */
301
- function createClients(input) {
302
- const { options, env, definitionExecutor, lite, createClient } = input;
303
- let adminClient;
304
- let anonClient;
305
- const secretKey = () => {
306
- const key = env().secretKey;
307
- if (!key) throw new TypeError("admin() needs SUPABASE_SECRET_KEY; it is not set");
308
- return key;
309
- };
310
- const customFetch = options.fetch ? { fetch: options.fetch } : void 0;
311
- const urlLengthLimit = options.db?.urlLengthLimit ?? definitionExecutor.urlLengthLimit;
312
- const db = {
313
- ...options.db?.timeout === void 0 ? {} : { timeout: options.db.timeout },
314
- ...options.db?.retry === void 0 ? {} : { retry: options.db.retry },
315
- ...urlLengthLimit === void 0 ? {} : { urlLengthLimit }
316
- };
317
- const dbOptions = Object.keys(db).length > 0 ? { db } : {};
318
- const sharedGlobal = {
319
- ...customFetch ? { global: customFetch } : {},
320
- ...dbOptions
321
- };
322
- /** postgrest-js options a bare `PostgrestClient` takes; `timeout` is the executor's. */
323
- const restOptions = {
324
- ...db.retry === void 0 ? {} : { retry: db.retry },
325
- ...urlLengthLimit === void 0 ? {} : { urlLengthLimit }
326
- };
327
- const rpcUnavailable = lite?.rpcUnavailable;
328
- const executorOptions = {
329
- ...definitionExecutor,
330
- ...urlLengthLimit === void 0 ? {} : { urlLengthLimit },
331
- ...db.timeout === void 0 ? {} : { timeout: db.timeout },
332
- ...db.retry === void 0 ? {} : { retry: db.retry },
333
- ...rpcUnavailable === void 0 ? {} : { rpcUnavailable }
334
- };
335
- /** Set when `db` options or the backend need an executor built with them. */
336
- const tunedExecutor = options.db !== void 0 || rpcUnavailable !== void 0;
337
- const serviceClient = () => {
338
- adminClient ??= createClient(env().url, secretKey(), {
339
- auth: STATELESS,
340
- ...sharedGlobal
341
- });
342
- return adminClient;
343
- };
344
- const readUrl = () => options.readUrl === false ? void 0 : options.readUrl?.replace(/\/+$/, "") ?? env().readUrl;
345
- const apiKeyClient = () => {
346
- throw new TypeError("ctx.supabase and ctx.db.$client are not available for an API key: ctx.db and ctx.sql run over direct Postgres with the key's claims");
347
- };
348
- /** Clients for the primary share the service and anon clients; others don't. */
349
- const supabaseAt = (url, auth, headers = {}) => {
350
- const custom = Object.keys(headers).length > 0;
351
- const global = custom ? {
352
- global: {
353
- headers,
354
- ...customFetch
355
- },
356
- ...dbOptions
357
- } : sharedGlobal;
358
- const shared = !custom && url === env().url;
359
- switch (auth.kind) {
360
- case "user": return createClient(url, env().publishableKey, {
361
- accessToken: () => Promise.resolve(auth.token),
362
- ...global
363
- });
364
- case "service": return shared ? serviceClient() : createClient(url, secretKey(), {
365
- auth: STATELESS,
366
- ...global
367
- });
368
- case "anon":
369
- case "invalid":
370
- if (!shared) return createClient(url, env().publishableKey, {
371
- auth: STATELESS,
372
- ...global
373
- });
374
- anonClient ??= createClient(url, env().publishableKey, {
375
- auth: STATELESS,
376
- ...sharedGlobal
377
- });
378
- return anonClient;
379
- case "apiKey": return apiKeyClient();
380
- default: return auth;
381
- }
382
- };
383
- const supabaseFor = (auth, headers = {}) => supabaseAt(env().url, auth, headers);
384
- const restUrls = /* @__PURE__ */ new Map();
385
- const restUrl = (url) => {
386
- let rest = restUrls.get(url);
387
- if (rest === void 0) {
388
- rest = new URL("rest/v1", url.endsWith("/") ? url : `${url}/`).href;
389
- restUrls.set(url, rest);
390
- }
391
- return rest;
392
- };
393
- /**
394
- * The client queries run on. Requests need only PostgREST, so they skip
395
- * building Realtime, Storage and Auth clients per request; the shared
396
- * service and anon clients for the primary are built once anyway.
397
- */
398
- const restAt = (url, auth, headers = {}) => {
399
- let key;
400
- let bearer;
401
- switch (auth.kind) {
402
- case "user":
403
- key = env().publishableKey;
404
- bearer = auth.token;
405
- break;
406
- case "service":
407
- case "anon":
408
- case "invalid":
409
- if (Object.keys(headers).length === 0 && url === env().url) return supabaseAt(url, auth, headers);
410
- key = auth.kind === "service" ? secretKey() : env().publishableKey;
411
- bearer = key;
412
- break;
413
- case "apiKey": return apiKeyClient();
414
- default: return auth;
415
- }
416
- return new PostgrestClient(restUrl(url), {
417
- headers: {
418
- ...headers,
419
- apikey: key,
420
- Authorization: `Bearer ${bearer}`
421
- },
422
- ...customFetch,
423
- ...restOptions
424
- });
425
- };
426
- return {
427
- executorOptions,
428
- tunedExecutor,
429
- serviceClient,
430
- readUrl,
431
- apiKeyClient,
432
- supabaseFor,
433
- restAt
434
- };
435
- }
436
- //#endregion
437
- //#region src/server/entries/core.ts
438
- const cores = /* @__PURE__ */ new WeakMap();
439
- /** Records the core behind `server`, so `serverCore` finds it on copies too. */
440
- function registerCore(server, core) {
441
- cores.set(server, core);
442
- }
443
- /** Copies the registration from `from` to `to` (`extendServer` builds a new object). */
444
- function shareCore(from, to) {
445
- const core = cores.get(from);
446
- if (core) cores.set(to, core);
447
- }
448
- /** The core of a server built by `createServer` or one of the adapter factories. */
449
- function serverCore(server) {
450
- const core = cores.get(server);
451
- if (!core) throw new TypeError("better-supabase: this server was not built by createServer(); pass the definition or a server from createServer");
452
- return core;
453
- }
454
- const CALL = Symbol("better-supabase.call");
455
- const supportLookups = /* @__PURE__ */ new WeakMap();
456
- /**
457
- * Starts the support lookup for a signed-in caller, so `withTenant` can run
458
- * the tenant resolver while the support store answers. Other callers never
459
- * have a support session, so they skip it.
460
- */
461
- function startSupportLookup(core, request, session) {
462
- if (session.auth.kind !== "user" || supportLookups.has(session)) return;
463
- const lookup = core.support(request, session.auth);
464
- lookup.catch(() => void 0);
465
- supportLookups.set(session, lookup);
466
- }
467
- /** The support session of a resolved request: the started lookup, else a new one. */
468
- function supportLookup(core, request, session) {
469
- return supportLookups.get(session) ?? core.support(request, session.auth);
470
- }
471
- /** The call state on a context seeded by `server.context()`, if any. */
472
- function callOf(ctx) {
473
- return ctx[CALL];
474
- }
475
- //#endregion
476
- //#region src/server/entries/context.ts
477
- /**
478
- * Entry contributing `ctx.bs`, the request's `ServerContext`: `auth`, `db`,
479
- * `sql`, `supabase`, `replica`, `stats()` and the rest, each built on first
480
- * read. In a support session `auth`, `db` and `sql` are the target's.
481
- */
482
- function withServerContext(core) {
483
- return defineMiddleware({
484
- key: "bs",
485
- run: () => (request, ctx) => {
486
- const options = callOf(ctx)?.options ?? {};
487
- const bs = core.context(ctx.session, request, ctx.support ? {
488
- ...options,
489
- support: ctx.support
490
- } : options, ctx.tenant);
491
- return Promise.resolve({ bs });
492
- }
493
- })();
494
- }
495
- //#endregion
496
- //#region src/server/refresh.ts
497
- /** A router or browser prefetch, by its request headers. */
498
- function isPrefetch(request) {
499
- const h = request.headers;
500
- return h.has("next-router-prefetch") || h.get("purpose") === "prefetch" || (h.get("sec-purpose")?.includes("prefetch") ?? false);
501
- }
502
- const FORM_TYPES = ["application/x-www-form-urlencoded", "multipart/form-data"];
503
- /**
504
- * Whether a request should refresh an expired session cookie: page loads,
505
- * client navigations (`rsc`, `x-sveltekit-*`, `_data` loaders), form posts
506
- * and Server Actions. Prefetches, assets and `fetch` calls from scripts
507
- * read the session as it is, so a burst of parallel requests never races
508
- * on the single-use refresh token.
509
- */
510
- function shouldRefresh(request) {
511
- const h = request.headers;
512
- if (request.method !== "GET" && request.method !== "HEAD") {
513
- if (h.has("next-action") || h.has("x-sveltekit-action")) return true;
514
- if (h.get("sec-fetch-dest") === "document") return true;
515
- const type = h.get("content-type") ?? "";
516
- return FORM_TYPES.some((form) => type.startsWith(form));
517
- }
518
- if (isPrefetch(request)) return false;
519
- if (h.get("rsc") === "1") return true;
520
- const dest = h.get("sec-fetch-dest");
521
- if (dest) return dest === "document";
522
- return h.get("accept")?.includes("text/html") ?? false;
523
- }
524
- /**
525
- * Whether a request should ask the Auth server if the session still exists
526
- * (`checkSession`): full page loads, and `paths` you list for client
527
- * navigations. Never prefetches or mutations.
528
- */
529
- function shouldCheckSession(request, paths) {
530
- if (request.method !== "GET" && request.method !== "HEAD") return false;
531
- if (isPrefetch(request)) return false;
532
- if (request.headers.get("sec-fetch-dest") === "document") return true;
533
- return paths?.includes(new URL(request.url).pathname) ?? false;
534
- }
535
- /** `policy` for one request. */
536
- function refreshFor(policy, request) {
537
- if (policy === void 0 || typeof policy === "boolean") return policy;
538
- return policy === "navigation" ? shouldRefresh(request) : policy(request);
539
- }
540
- //#endregion
541
- //#region src/server/entries/session.ts
542
- function checkFor(policy, request) {
543
- if (policy === void 0 || typeof policy === "boolean") return policy ?? false;
544
- return policy === "navigation" ? shouldCheckSession(request) : policy(request);
545
- }
546
- /**
547
- * Runs `hook` for a resolution with an outage and returns its response when
548
- * the session couldn't be kept.
549
- */
550
- async function outageResponse(hook, resolution, request, logger) {
551
- const outage = resolution.outage;
552
- if (!hook || !outage) return;
553
- try {
554
- const response = await hook(outage, request);
555
- return outage.kept || !(response instanceof Response) ? void 0 : response;
556
- } catch (cause) {
557
- logger.warn("onAuthOutage threw", { cause });
558
- return;
559
- }
560
- }
561
- /** Appends `Max-Age=0` writes for the session cookie at the old scopes, and the no-store headers. */
562
- function clearOldScopes(response, request, name, scopes) {
563
- const writes = clearSessionAtScopes(parseCookies(request.headers.get("cookie")), name, scopes);
564
- if (writes.length === 0) return response;
565
- const headers = new Headers(response.headers);
566
- for (const write of writes) headers.append("set-cookie", serializeCookie(write));
567
- for (const [key, value] of Object.entries(AUTH_CACHE_HEADERS)) headers.set(key, value);
568
- return new Response(response.body, {
569
- status: response.status,
570
- statusText: response.statusText,
571
- headers
572
- });
573
- }
574
- /**
575
- * Entry contributing `ctx.session`, the request's `AuthResolution`: a bearer
576
- * token first, the session cookie second. It is the only entry with a
577
- * response seam for cookies: on the way out it adds the refreshed session
578
- * cookies and the no-store headers, and hands pending event sends to
579
- * `waitUntil`.
580
- */
581
- function withSession(core, config = {}) {
582
- return defineMiddleware({
583
- key: "session",
584
- run: () => async function* run(request, ctx) {
585
- const call = callOf(ctx)?.options;
586
- const refresh = call ? call.refresh ?? false : refreshFor(config.refresh, request);
587
- const cookies = call ? call.cookies : config.cookies;
588
- const checkSession = !call && checkFor(config.checkSession, request);
589
- const session = await core.resolve(request, {
590
- ...refresh === void 0 ? {} : { refresh },
591
- ...cookies === void 0 ? {} : { cookies },
592
- ...checkSession ? { checkSession } : {},
593
- ...config.encode === void 0 ? {} : { encode: config.encode }
594
- });
595
- const outage = await outageResponse(config.onAuthOutage, session, request, core.events.logger);
596
- if (outage) return session.apply(outage);
597
- try {
598
- const response = yield { session };
599
- const applied = session.apply(response);
600
- return config.cookieScopes?.length ? clearOldScopes(applied, request, core.sessionCookie(), config.cookieScopes) : applied;
601
- } finally {
602
- if (config.waitUntil && core.events.pending) config.waitUntil(core.events.settled());
603
- }
604
- }
605
- })();
606
- }
607
- //#endregion
608
- //#region src/server/entries/support.ts
609
- /**
610
- * Entry contributing `ctx.support`: the support session ("view as user") the
611
- * request's support cookie names, when `ServerOptions.support` is set and
612
- * the caller is the admin who started it. `undefined` otherwise.
613
- */
614
- function withSupport(core) {
615
- return defineMiddleware({
616
- key: "support",
617
- run: () => async (request, ctx) => {
618
- return { support: callOf(ctx)?.options.support ?? await supportLookup(core, request, ctx.session) };
619
- }
620
- })();
621
- }
622
- //#endregion
623
- //#region src/server/entries/tenant.ts
624
- /**
625
- * Entry contributing `ctx.tenant`: the active tenant from
626
- * `ServerOptions.tenant` (a URL slug, a header), or `undefined`. It becomes
627
- * `context.tenant` for the `tenant()` plugin, the `better_supabase.tenant`
628
- * setting over Postgres and the `x-bs-tenant` header over PostgREST. It
629
- * starts the support lookup that `withSupport` awaits, so both run at once.
630
- */
631
- function withTenant(core) {
632
- return defineMiddleware({
633
- key: "tenant",
634
- run: () => async (request, ctx) => {
635
- const options = callOf(ctx)?.options;
636
- if (options?.support === void 0) startSupportLookup(core, request, ctx.session);
637
- return { tenant: options?.tenant ?? await core.tenant(request, ctx.session.auth) };
638
- }
639
- })();
640
- }
641
- //#endregion
642
- //#region src/server/lite.ts
643
- /** Lite's default driver, the one `lite init` scaffolds. */
644
- const DEFAULT_LITE_DRIVER = "sqlite-postgres";
645
- /** Whether the driver stores data in SQLite, where Lite has no database functions. */
646
- function isSqliteDriver(driver) {
647
- switch (driver) {
648
- case "sqlite-postgres":
649
- case "sqlite": return true;
650
- case "pglite":
651
- case "postgres": return false;
652
- default: return driver;
653
- }
654
- }
655
- function liteRpcUnavailable(driver) {
656
- return `rpc() is not available on Supabase Lite with the ${driver} driver. Set [db] driver = "pglite" or "postgres" in supabase/config.toml, or call an HTTP endpoint instead.`;
657
- }
658
- /** What `backend: "lite"` changes in `createServer`; `undefined` for Supabase. */
659
- function liteBackend(options, env) {
660
- if (options.backend !== "lite") return;
661
- const driver = options.liteDriver ?? DEFAULT_LITE_DRIVER;
662
- if (options.postgres && driver !== "postgres") throw new TypeError(`Supabase Lite with the ${driver} driver has no Postgres connection for ctx.sql. Remove the postgres option, or run Lite with [db] driver = "postgres".`);
663
- return {
664
- auth() {
665
- if (options.auth?.jwtSecret !== void 0) return options.auth;
666
- const jwtSecret = env().jwtSecret;
667
- if (jwtSecret === void 0) throw new TypeError("backend: \"lite\" needs SUPABASE_JWT_SECRET, the auth.jwt_secret Supabase Lite signs user tokens with");
668
- return {
669
- ...options.auth,
670
- jwtSecret
671
- };
672
- },
673
- rpcUnavailable: isSqliteDriver(driver) ? liteRpcUnavailable(driver) : void 0
674
- };
675
- }
676
- //#endregion
677
- //#region src/server/refusing-executor.ts
678
- /**
679
- * An executor for credentials that did not verify: every query, function
680
- * call and batch answers `error`, so a handler that skips the route guard
681
- * gets a 401 `Result` and never queries as anon.
682
- */
683
- function refusingExecutor(error) {
684
- const refuse = () => err(error);
685
- return {
686
- name: "refused",
687
- functionSources: true,
688
- execute: () => Promise.resolve(refuse()),
689
- rpc: () => Promise.resolve(refuse()),
690
- batch: (ops) => Promise.resolve(ops.map(() => refuse()))
691
- };
692
- }
693
- //#endregion
694
- //#region src/server/request-ids.ts
695
- const REQUEST_ID_PATTERN = /^[A-Za-z0-9._:;,@/+=-]{1,128}$/;
696
- function requestIdOrUndefined(value) {
697
- return typeof value === "string" && REQUEST_ID_PATTERN.test(value) ? value : void 0;
698
- }
699
- function sessionWith(ids, tenant, readOnly = false) {
700
- const settings = {
701
- ...ids.requestId === void 0 ? {} : { "better_supabase.request_id": ids.requestId },
702
- ...ids.correlationId === void 0 ? {} : { "better_supabase.correlation_id": ids.correlationId },
703
- ...tenant === void 0 ? {} : { "better_supabase.tenant": tenant }
704
- };
705
- const hasSettings = Object.keys(settings).length > 0;
706
- if (!hasSettings && !readOnly) return;
707
- return {
708
- ...readOnly ? { readOnly: true } : {},
709
- ...hasSettings ? { settings } : {}
710
- };
711
- }
712
- function requestIdPolicy(options = {}) {
713
- const on = options !== false;
714
- const settings = on ? options : {};
715
- const requestHeader = (settings.requestHeader ?? "x-request-id").toLowerCase();
716
- const correlationHeader = (settings.correlationHeader ?? "x-correlation-id").toLowerCase();
717
- const incoming = on && (settings.incoming ?? true);
718
- const generate = on && (settings.generate ?? true);
719
- const generated = /* @__PURE__ */ new WeakMap();
720
- const fromHeader = (request, name) => incoming && request ? requestIdOrUndefined(request.headers.get(name)) : void 0;
721
- const generatedFor = (request) => {
722
- if (!generate || !request) return;
723
- const known = generated.get(request);
724
- if (known !== void 0) return known;
725
- const id = crypto.randomUUID();
726
- generated.set(request, id);
727
- return id;
728
- };
729
- return {
730
- forRequest(request, explicit) {
731
- const requestId = requestIdOrUndefined(explicit.requestId) ?? fromHeader(request, requestHeader) ?? generatedFor(request);
732
- const correlationId = requestIdOrUndefined(explicit.correlationId) ?? fromHeader(request, correlationHeader) ?? requestId;
733
- return {
734
- ...requestId === void 0 ? {} : { requestId },
735
- ...correlationId === void 0 ? {} : { correlationId }
736
- };
737
- },
738
- headers: (ids) => ({
739
- ...ids.requestId === void 0 ? {} : { [requestHeader]: ids.requestId },
740
- ...ids.correlationId === void 0 ? {} : { [correlationHeader]: ids.correlationId }
741
- })
742
- };
743
- }
744
- //#endregion
745
- //#region src/server/server-types.ts
746
- /** The header `current_tenant_id()` reads over the Data API. */
747
- const TENANT_HEADER = "x-bs-tenant";
748
- //#endregion
749
- //#region src/auth/support-cookie.ts
750
- /** The cookie that carries the support session id. */
751
- const SUPPORT_COOKIE = "bs-support";
752
- /** Seconds until the session expires, rounded up so the cookie never outlives it by less than a second. */
753
- function supportCookieMaxAge(session, now = Date.now()) {
754
- return Math.max(0, Math.ceil((session.expiresAt.epochMilliseconds - now) / 1e3));
755
- }
756
- /** `Set-Cookie` for a session: HttpOnly, SameSite=Lax, gone when the session expires. */
757
- function supportCookie(session, options = {}, now = Date.now()) {
758
- return cookieLine(options, encodeURIComponent(session.id), supportCookieMaxAge(session, now));
759
- }
760
- /** `Set-Cookie` that removes the support cookie. */
761
- function clearSupportCookie(options = {}) {
762
- return cookieLine(options, "", 0);
763
- }
764
- function cookieLine(options, value, maxAge) {
765
- return [
766
- `${options.name ?? "bs-support"}=${value}`,
767
- `Path=${options.path ?? "/"}`,
768
- `Max-Age=${String(maxAge)}`,
769
- "HttpOnly",
770
- "SameSite=Lax",
771
- ...options.secure === false ? [] : ["Secure"]
772
- ].join("; ");
773
- }
774
- /** The support session id in a `Cookie` header, or `undefined`. */
775
- function supportCookieValue(cookieHeader, name = SUPPORT_COOKIE) {
776
- if (!cookieHeader) return;
777
- for (const part of cookieHeader.split(";")) {
778
- const index = part.indexOf("=");
779
- if (index === -1 || part.slice(0, index).trim() !== name) continue;
780
- let value;
781
- try {
782
- value = decodeURIComponent(part.slice(index + 1).trim());
783
- } catch {
784
- return;
785
- }
786
- return value === "" ? void 0 : value;
787
- }
788
- }
789
- //#endregion
790
- //#region src/server/support-off.ts
791
- const NOT_CONFIGURED = "Support sessions need createServer(betterSupabase, { support: supportSessions({ store }) })";
792
- const notConfigured = () => AsyncResult.err(dbError("unexpected", NOT_CONFIGURED));
793
- /** `bs.support` without `ServerOptions.support`: every call fails. */
794
- const supportOff = {
795
- start: notConfigured,
796
- request: notConfigured,
797
- approve: notConfigured,
798
- stop: notConfigured,
799
- revoke: notConfigured,
800
- current: () => Promise.resolve(void 0),
801
- resolve: () => Promise.resolve(void 0),
802
- list: notConfigured,
803
- expire: notConfigured,
804
- expireRoute: () => () => Promise.resolve(problemResponse(dbError("unexpected", NOT_CONFIGURED))),
805
- sessionIdOf: () => void 0,
806
- clearCookie: () => clearSupportCookie()
807
- };
808
- //#endregion
809
- //#region src/server/support-storage.ts
810
- const VISIBLE_OBJECT = "select exists (select 1 from storage.objects o where o.bucket_id = $1 and o.name = $2) as visible";
811
- const VISIBLE_OBJECTS = `select n.path from unnest($2::text[]) as n(path)
812
- where exists (select 1 from storage.objects o where o.bucket_id = $1 and o.name = n.path)`;
813
- const OBJECT_INFO = "select to_jsonb(o) as object from storage.objects o where o.bucket_id = $1 and o.name = $2";
814
- const SEARCH = `select s.name, s.id::text as id, s.updated_at, s.created_at, s.last_accessed_at, s.metadata
815
- from storage.search($1::text, $2::text, $3::int, $4::int, $5::int, $6::text, $7::text, $8::text) s`;
816
- const SEARCH_V2 = `select s.key, s.name, s.id::text as id, s.updated_at, s.created_at, s.last_accessed_at, s.metadata
817
- from storage.search_v2($1::text, $2::text, $3::int, $4::int, $5::text, $6::text, $7::text, $8::text) s`;
818
- const SAVEPOINT = "better_supabase_support_write";
819
- const INSERT_OBJECT = `insert into storage.objects (bucket_id, name, owner, owner_id, user_metadata)
820
- values ($1, $2, $3::uuid, $4, $5::jsonb)`;
821
- const CURRENT_VERSION_INDEX = `select exists (select 1 from pg_indexes
822
- where schemaname = 'storage' and tablename = 'objects' and indexname = 'idx_objects_current_version') as versioned`;
823
- const upsertObject = (versioned) => `${INSERT_OBJECT}
824
- on conflict ${versioned ? "(bucket_id, name collate \"C\") where archived_at is null" : "(bucket_id, name)"} do update
825
- set owner = excluded.owner, owner_id = excluded.owner_id, user_metadata = excluded.user_metadata`;
826
- const SOURCE_OBJECT = "select name, owner_id from storage.objects where bucket_id = $1 and name = $2";
827
- const MOVE_OBJECT = `update storage.objects
828
- set bucket_id = $3, name = $4, owner = $5::uuid, owner_id = $6
829
- where bucket_id = $1 and name = $2
830
- returning name`;
831
- const ALLOW_DELETE = "select set_config('storage.allow_delete_query', 'true', true)";
832
- const DELETE_OBJECTS = "delete from storage.objects where bucket_id = $1 and name = any($2::text[]) returning name";
833
- const OWN_UPLOAD = `update storage.objects set owner = $3::uuid, owner_id = $4
834
- where bucket_id = $1 and name = $2 and user_metadata ->> 'supportSessionId' = $5`;
835
- const OWN_COPY = `update storage.objects
836
- set owner = $3::uuid, owner_id = $4, user_metadata = coalesce(user_metadata, '{}'::jsonb) || $5::jsonb
837
- where bucket_id = $1 and name = $2 and owner_id is null`;
838
- const OWN_SIGNED_UPLOAD = `${OWN_COPY}
839
- returning name`;
840
- const OWN_MOVE = `update storage.objects
841
- set owner = $3::uuid, owner_id = $4, user_metadata = coalesce(user_metadata, '{}'::jsonb) || $5::jsonb
842
- where bucket_id = $1 and name = $2 and owner_id is not distinct from $6`;
843
- const UUID = /^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/i;
844
- const OWNED = {
845
- name: "StorageApiError",
846
- message: "The object belongs to another user",
847
- status: 403,
848
- statusCode: "403",
849
- code: "AccessDenied"
850
- };
851
- const HIDDEN_URL = "Either the object does not exist or you do not have access to it";
852
- const LIST_SORT_COLUMNS = /* @__PURE__ */ new Set([
853
- "name",
854
- "updated_at",
855
- "created_at",
856
- "last_accessed_at"
857
- ]);
858
- const LIST_V2_SORT_COLUMNS = /* @__PURE__ */ new Set([
859
- "name",
860
- "updated_at",
861
- "created_at"
862
- ]);
863
- const FLAT_SORT_COLUMNS = /* @__PURE__ */ new Set(["updated_at", "created_at"]);
864
- const SORT_ORDERS = /* @__PURE__ */ new Set(["asc", "desc"]);
865
- const CURSOR_PARTS = {
866
- l: "startAfter",
867
- o: "sortOrder",
868
- c: "sortColumn",
869
- a: "sortColumnAfter"
870
- };
871
- const isCursorKey = (key) => Object.hasOwn(CURSOR_PARTS, key);
872
- /** The path storage-js sends for an upload: no leading or trailing `/`, and no empty folders. */
873
- function normalizePath(path) {
874
- return path.replaceAll(/^\/|\/$/g, "").replaceAll(/\/+/g, "/");
875
- }
876
- /** `undefined` for an empty string, which storage-api treats as absent. */
877
- const filled = (value) => value === "" ? void 0 : value;
878
- /** `LIKE` escaping as storage-api applies it. */
879
- function escapeLike(text) {
880
- return text.replaceAll("\\", "\\\\").replaceAll(/([%_])/g, "\\$1");
881
- }
882
- function iso(value) {
883
- if (value instanceof Date) return value.toISOString();
884
- if (typeof value !== "string") return value;
885
- const time = Date.parse(value);
886
- return Number.isNaN(time) ? value : new Date(time).toISOString();
887
- }
888
- /** storage-api's continuation token: `key:value` lines, base64 encoded. */
889
- function encodeCursor(cursor) {
890
- const text = Object.entries(CURSOR_PARTS).flatMap(([key, part]) => cursor[part] ? [`${key}:${cursor[part]}`] : []).join("\n");
891
- let binary = "";
892
- for (const byte of new TextEncoder().encode(text)) binary += String.fromCodePoint(byte);
893
- return btoa(binary);
894
- }
895
- function decodeCursor(token) {
896
- let text;
897
- try {
898
- text = new TextDecoder().decode(Uint8Array.from(atob(token), (char) => char.codePointAt(0) ?? 0));
899
- } catch {
900
- return;
901
- }
902
- const cursor = {
903
- startAfter: "",
904
- sortOrder: "asc"
905
- };
906
- for (const part of text.split("\n")) {
907
- const match = /^(\S):(.*)/.exec(part);
908
- const key = match?.[1];
909
- if (!key || !isCursorKey(key)) return;
910
- cursor[CURSOR_PARTS[key]] = match[2] ?? "";
911
- }
912
- return cursor;
913
- }
914
- const apiError = (status, message, code) => ({
915
- name: "StorageApiError",
916
- message,
917
- status,
918
- statusCode: String(status),
919
- code
920
- });
921
- const ownerOf = (userId) => UUID.test(userId) ? userId : null;
922
- const stampOf = (session) => ({
923
- supportSessionId: session.id,
924
- supportAdminId: session.adminId
925
- });
926
- const failed = (error) => ({
927
- data: null,
928
- error
929
- });
930
- /** Storage answers a hidden object like a missing one: HTTP 400 with `statusCode` 404. */
931
- const NOT_FOUND = {
932
- name: "StorageApiError",
933
- message: "Object not found",
934
- status: 400,
935
- statusCode: "404",
936
- code: "NoSuchKey"
937
- };
938
- const invalid = (message) => apiError(400, message, "InvalidRequest");
939
- /** A database failure as a Storage `error` that `fromStorageError` passes through unchanged. */
940
- function sqlFailure(cause) {
941
- const raw = fromPgError(cause);
942
- return {
943
- name: "DbError",
944
- ...raw ? mapDbError(raw) : toDbError(cause)
945
- };
946
- }
947
- /** An RLS or duplicate failure of a dry run, as Storage reports it for the target's own request. */
948
- function refusedWrite(cause) {
949
- const raw = fromPgError(cause);
950
- if (raw?.code === "42501") return apiError(403, raw.message === void 0 || raw.message.includes("row-level security") ? "new row violates row-level security policy" : raw.message, "AccessDenied");
951
- if (raw?.code === "23505") return apiError(409, "The resource already exists", "Duplicate");
952
- }
953
- async function settled(run) {
954
- try {
955
- return await run();
956
- } catch (cause) {
957
- return failed(sqlFailure(cause));
958
- }
959
- }
960
- function listProblem(options) {
961
- const { limit, offset, sortBy } = options;
962
- if (limit !== void 0 && (!Number.isInteger(limit) || limit < 1)) return "body/limit must be an integer of at least 1";
963
- if (offset !== void 0 && (!Number.isInteger(offset) || offset < 0)) return "body/offset must be an integer of at least 0";
964
- if (sortBy?.column !== void 0 && !LIST_SORT_COLUMNS.has(sortBy.column)) return "body/sortBy/column must be name, updated_at, created_at or last_accessed_at";
965
- if (sortBy?.order !== void 0 && !SORT_ORDERS.has(sortBy.order)) return "body/sortBy/order must be asc or desc";
966
- }
967
- function listV2Problem(options) {
968
- const { limit, sortBy } = options;
969
- if (limit !== void 0 && (!Number.isInteger(limit) || limit < 1)) return "body/limit must be an integer of at least 1";
970
- if (sortBy !== void 0 && !LIST_V2_SORT_COLUMNS.has(sortBy.column)) return "body/sortBy/column must be name, updated_at or created_at";
971
- if (sortBy?.order !== void 0 && !SORT_ORDERS.has(sortBy.order)) return "body/sortBy/order must be asc or desc";
972
- }
973
- /** The query storage-api runs for a `list-v2` page without a delimiter. */
974
- function flatPage(bucket, prefix, maxKeys, cursor, column, order) {
975
- const values = [bucket, maxKeys];
976
- const conditions = ["bucket_id = $1"];
977
- const sortColumn = column && FLAT_SORT_COLUMNS.has(column) ? column : void 0;
978
- const sortOrder = order && SORT_ORDERS.has(order) ? order : "asc";
979
- const operator = sortOrder === "asc" ? ">" : "<";
980
- const param = () => `$${String(values.length)}`;
981
- if (prefix) {
982
- values.push(`${escapeLike(prefix)}%`);
983
- conditions.push(`name like ${param()}`);
984
- }
985
- const startAfter = cursor?.startAfter;
986
- if (startAfter && sortColumn && cursor.sortColumnAfter) {
987
- values.push(cursor.sortColumnAfter);
988
- const afterParam = param();
989
- values.push(startAfter);
990
- conditions.push(`row(date_trunc('milliseconds', ${sortColumn}), name collate "C") ${operator} row(coalesce(nullif(${afterParam}, '')::timestamptz, 'epoch'::timestamptz), ${param()})`);
991
- } else if (startAfter) {
992
- values.push(startAfter);
993
- conditions.push(`name collate "C" ${operator} ${param()}`);
994
- }
995
- return {
996
- text: `select id::text as id, name, metadata, updated_at, created_at, last_accessed_at
997
- from storage.objects
998
- where ${conditions.join(" and ")}
999
- order by ${sortColumn ? `${sortColumn} ${sortOrder}, ` : ""}name collate "C" ${sortOrder}
1000
- limit $2::int`,
1001
- values
1002
- };
1003
- }
1004
- /** Groups the entries below the next delimiter into folders, as storage-api does. */
1005
- function delimited(entries, prefix) {
1006
- const grouped = [];
1007
- let previous = "";
1008
- for (const entry of entries) {
1009
- const name = String(entry["name"]);
1010
- const index = name.replace(prefix, "").indexOf("/");
1011
- if (index === -1) {
1012
- grouped.push(entry);
1013
- continue;
1014
- }
1015
- const folder = name.slice(0, prefix.length + index + 1);
1016
- if (folder === previous) continue;
1017
- previous = folder;
1018
- grouped.push({
1019
- id: null,
1020
- name: folder
1021
- });
1022
- }
1023
- return grouped;
1024
- }
1025
- const text = (value) => typeof value === "string" ? value : void 0;
1026
- const metadataOf = (value) => isRecord(value) ? value : null;
1027
- function listEntryOf(row) {
1028
- return {
1029
- name: String(row["name"]),
1030
- id: text(row["id"]) ?? null,
1031
- updated_at: text(iso(row["updated_at"])) ?? null,
1032
- created_at: text(iso(row["created_at"])) ?? null,
1033
- last_accessed_at: text(iso(row["last_accessed_at"])) ?? null,
1034
- metadata: metadataOf(row["metadata"])
1035
- };
1036
- }
1037
- function folderOf(row) {
1038
- const name = String(row["name"]);
1039
- const key = text(row["key"]);
1040
- return {
1041
- name: name.endsWith("/") ? name : `${name}/`,
1042
- ...key === void 0 ? {} : { key }
1043
- };
1044
- }
1045
- function objectOf(row) {
1046
- const key = text(row["key"]);
1047
- const lastAccessed = text(iso(row["last_accessed_at"]));
1048
- return {
1049
- name: String(row["name"]),
1050
- ...key === void 0 ? {} : { key },
1051
- id: text(row["id"]) ?? "",
1052
- updated_at: text(iso(row["updated_at"])) ?? "",
1053
- created_at: text(iso(row["created_at"])) ?? "",
1054
- ...lastAccessed === void 0 ? {} : { last_accessed_at: lastAccessed },
1055
- metadata: metadataOf(row["metadata"])
1056
- };
1057
- }
1058
- function infoOf(row) {
1059
- const metadata = isRecord(row["metadata"]) ? row["metadata"] : {};
1060
- const size = metadata["size"];
1061
- const contentType = text(metadata["mimetype"]);
1062
- const cacheControl = text(metadata["cacheControl"]);
1063
- const etag = text(metadata["eTag"]);
1064
- const lastModified = text(iso(row["updated_at"]));
1065
- const userMetadata = row["user_metadata"];
1066
- const archivedAt = row["archived_at"];
1067
- const deleteMarker = row["is_delete_marker"];
1068
- const versioned = row["is_versioned"];
1069
- return {
1070
- id: text(row["id"]) ?? "",
1071
- name: text(row["name"]) ?? "",
1072
- version: text(row["version"]) ?? "",
1073
- bucketId: text(row["bucket_id"]) ?? "",
1074
- createdAt: text(iso(row["created_at"])) ?? "",
1075
- ...typeof size === "number" ? { size } : {},
1076
- ...contentType === void 0 ? {} : { contentType },
1077
- ...cacheControl === void 0 ? {} : { cacheControl },
1078
- ...etag === void 0 ? {} : { etag },
1079
- ...lastModified === void 0 ? {} : { lastModified },
1080
- ...isRecord(userMetadata) ? { metadata: userMetadata } : {},
1081
- ...archivedAt === void 0 ? {} : { archivedAt: text(iso(archivedAt)) ?? null },
1082
- ...typeof deleteMarker === "boolean" ? { isDeleteMarker: deleteMarker } : {},
1083
- ...typeof versioned === "boolean" ? { isVersioned: versioned } : {}
1084
- };
1085
- }
1086
- /**
1087
- * Storage for a support session, with the same `from(bucket)` file API as
1088
- * `supabase.storage`, so `bucket.connect()` and the blocks take it.
1089
- *
1090
- * Storage policies read `auth.uid()` from the request's token, and there is
1091
- * no token for the target, so reads go through Postgres as the target.
1092
- * `exists`, `info`, `list` and `listV2` run entirely there: the listings
1093
- * call the invoker-rights `storage.search` functions storage-api calls, so
1094
- * RLS filters each page as it would for the target's own request.
1095
- * `download` and the signed URLs first check there that the target may see
1096
- * the object, then the service client serves it. A hidden object answers
1097
- * like a missing one. `getPublicUrl` is built without a check, as it is
1098
- * built without a request.
1099
- *
1100
- * In a writable session, `upload`, `update`, `remove`, `copy` and `move`
1101
- * first run the row change Storage would make as the target, inside a
1102
- * savepoint that is rolled back, so the policies on `storage.objects`
1103
- * decide as for the target's own request. Then the service client writes,
1104
- * the admin connection makes the target the owner of the stored object,
1105
- * and its `user_metadata` records the session id and the admin's id. A
1106
- * refused dry run resolves to Storage's `403`.
1107
- *
1108
- * `createSignedUploadUrl` runs the same dry run as `upload` before the
1109
- * service client signs the URL. The object a browser uploads there has no
1110
- * owner, so `claimSignedUpload(bucket, path)` finishes the upload: it checks again
1111
- * that the target may insert at the path, then makes the target the owner
1112
- * of an object without one and stamps the session on its `user_metadata`.
1113
- * An object another user owns is refused with a `403`. `uploadToSignedUrl`
1114
- * claims what it stores. Every write in a read-only session resolves to a
1115
- * `403` `SUPPORT_READ_ONLY` error, and without `adminSql`, `session` or a
1116
- * `sql` client with `transaction` to a `403` `SUPPORT_STORAGE_WRITES` error.
1117
- */
1118
- function supportStorage(options) {
1119
- const readOnly = options.readOnly ?? true;
1120
- const { adminSql, session, sql } = options;
1121
- const writer = !readOnly && adminSql && session && sql.transaction ? {
1122
- adminSql,
1123
- session
1124
- } : void 0;
1125
- const refusal = readOnly ? apiError(403, "The support session is read-only", "SUPPORT_READ_ONLY") : apiError(403, "Storage writes in a support session need adminSql, session and a sql client with transaction", "SUPPORT_STORAGE_WRITES");
1126
- const refuse = () => Promise.resolve(failed(refusal));
1127
- const rows = (query, values) => sql.queryRaw(query, values);
1128
- let versioned;
1129
- const upsertStatement = () => (versioned ??= rows(CURRENT_VERSION_INDEX, []).then(([row]) => row?.["versioned"] === true).catch((cause) => {
1130
- versioned = void 0;
1131
- throw cause;
1132
- })).then(upsertObject);
1133
- const rehearse = async (run) => {
1134
- if (!sql.transaction) return refusal;
1135
- try {
1136
- return await sql.transaction(async (client) => {
1137
- await client.queryRaw(`savepoint ${SAVEPOINT}`);
1138
- try {
1139
- return await run(client);
1140
- } finally {
1141
- await client.queryRaw(`rollback to savepoint ${SAVEPOINT}`);
1142
- }
1143
- });
1144
- } catch (cause) {
1145
- const refused = refusedWrite(cause);
1146
- if (refused) return refused;
1147
- throw cause;
1148
- }
1149
- };
1150
- const rehearseStore = (bucket, active, name, statement, metadata) => rehearse(async (client) => {
1151
- await client.queryRaw(statement, [
1152
- bucket,
1153
- name,
1154
- ownerOf(active.targetUserId),
1155
- active.targetUserId,
1156
- JSON.stringify(metadata)
1157
- ]);
1158
- return null;
1159
- });
1160
- const claimFor = async (bucket, { adminSql: ownerSql, session: active }, name) => {
1161
- const [claimed] = await ownerSql.queryRaw(OWN_SIGNED_UPLOAD, [
1162
- bucket,
1163
- name,
1164
- ownerOf(active.targetUserId),
1165
- active.targetUserId,
1166
- JSON.stringify(stampOf(active))
1167
- ]);
1168
- if (claimed) return {
1169
- data: { path: name },
1170
- error: null
1171
- };
1172
- const [found] = await ownerSql.queryRaw(SOURCE_OBJECT, [bucket, name]);
1173
- if (!found) return failed(NOT_FOUND);
1174
- return found["owner_id"] === active.targetUserId ? {
1175
- data: { path: name },
1176
- error: null
1177
- } : failed(OWNED);
1178
- };
1179
- const claimSignedUpload = (bucket, path) => {
1180
- if (!writer) return refuse();
1181
- return settled(async () => {
1182
- const name = normalizePath(path);
1183
- const active = writer.session;
1184
- const refused = await rehearse(async (client) => {
1185
- try {
1186
- await client.queryRaw(INSERT_OBJECT, [
1187
- bucket,
1188
- name,
1189
- ownerOf(active.targetUserId),
1190
- active.targetUserId,
1191
- JSON.stringify(stampOf(active))
1192
- ]);
1193
- } catch (cause) {
1194
- if (fromPgError(cause)?.code === "23505") return null;
1195
- throw cause;
1196
- }
1197
- return NOT_FOUND;
1198
- });
1199
- if (refused) return failed(refused);
1200
- return claimFor(bucket, writer, name);
1201
- });
1202
- };
1203
- return {
1204
- claimSignedUpload,
1205
- from(bucket) {
1206
- const admin = () => options.admin.from(bucket);
1207
- const visible = async (path) => {
1208
- const [row] = await rows(VISIBLE_OBJECT, [bucket, path]);
1209
- return row?.["visible"] === true;
1210
- };
1211
- const checked = (path, read) => settled(async () => {
1212
- const name = normalizePath(path);
1213
- if (!await visible(name)) return failed(NOT_FOUND);
1214
- return read(name);
1215
- });
1216
- const list = (path, listOptions = {}) => settled(async () => {
1217
- const problem = listProblem(listOptions);
1218
- if (problem) return failed(invalid(problem));
1219
- let prefix = path ?? "";
1220
- if (prefix.length > 0 && !prefix.endsWith("/")) prefix = `${prefix}/`;
1221
- const column = listOptions.sortBy?.column ?? "name";
1222
- const escape = column !== "name";
1223
- const safePrefix = escape ? escapeLike(prefix) : prefix;
1224
- const search = listOptions.search ?? "";
1225
- const safeSearch = escape ? escapeLike(search) : search;
1226
- return {
1227
- data: (await rows(SEARCH, [
1228
- safePrefix,
1229
- bucket,
1230
- listOptions.limit ?? 100,
1231
- (safePrefix + safeSearch).split("/").length,
1232
- listOptions.offset ?? 0,
1233
- safeSearch,
1234
- column,
1235
- listOptions.sortBy?.order ?? "asc"
1236
- ])).map(listEntryOf),
1237
- error: null
1238
- };
1239
- });
1240
- const listV2 = (listOptions = {}) => settled(async () => {
1241
- const problem = listV2Problem(listOptions);
1242
- if (problem) return failed(invalid(problem));
1243
- const limit = Math.min(listOptions.limit ?? 1e3, 1e3);
1244
- const prefix = listOptions.prefix ?? "";
1245
- const cursor = listOptions.cursor ? decodeCursor(listOptions.cursor) : void 0;
1246
- if (listOptions.cursor && !cursor) return failed(apiError(400, "Invalid continuation token", "InvalidParameter"));
1247
- const sortOrder = filled(cursor?.sortOrder) ?? listOptions.sortBy?.order;
1248
- const sortColumn = filled(cursor?.sortColumn) ?? listOptions.sortBy?.column;
1249
- let found;
1250
- if (listOptions.with_delimiter) found = await rows(SEARCH_V2, [
1251
- prefix,
1252
- bucket,
1253
- limit + 1,
1254
- prefix ? prefix.split("/").length : 1,
1255
- cursor?.startAfter ?? "",
1256
- sortOrder ?? "asc",
1257
- sortColumn ?? "name",
1258
- filled(cursor?.sortColumnAfter) ?? null
1259
- ]);
1260
- else {
1261
- const page = flatPage(bucket, listOptions.prefix, limit + 1, cursor, sortColumn, sortOrder);
1262
- found = await rows(page.text, page.values);
1263
- }
1264
- const entries = listOptions.with_delimiter ? delimited(found, prefix) : found;
1265
- const hasNext = entries.length > limit;
1266
- const count = hasNext ? limit : entries.length;
1267
- const folders = [];
1268
- const objects = [];
1269
- for (const entry of entries.slice(0, count)) if (entry["id"] === null || entry["id"] === void 0) folders.push(folderOf(entry));
1270
- else objects.push(objectOf(entry));
1271
- const last = entries[count - 1];
1272
- const after = last && sortColumn && sortColumn !== "name" ? iso(last[sortColumn]) : void 0;
1273
- const nextCursor = hasNext && last ? encodeCursor({
1274
- startAfter: String(last["name"]),
1275
- ...sortOrder ? { sortOrder } : {},
1276
- ...sortColumn ? { sortColumn } : {},
1277
- ...typeof after === "string" ? { sortColumnAfter: new Date(after).toISOString() } : {}
1278
- }) : void 0;
1279
- return {
1280
- data: {
1281
- hasNext,
1282
- ...nextCursor === void 0 ? {} : { nextCursor },
1283
- folders,
1284
- objects
1285
- },
1286
- error: null
1287
- };
1288
- });
1289
- const createSignedUploadUrl = (path, uploadOptions) => {
1290
- if (!writer) return refuse();
1291
- return settled(async () => {
1292
- const name = normalizePath(path);
1293
- const statement = uploadOptions?.upsert === true ? await upsertStatement() : INSERT_OBJECT;
1294
- const refused = await rehearseStore(bucket, writer.session, name, statement, stampOf(writer.session));
1295
- if (refused) return failed(refused);
1296
- return admin().createSignedUploadUrl(name, uploadOptions);
1297
- });
1298
- };
1299
- const uploadToSignedUrl = (path, token, body, fileOptions = {}) => {
1300
- if (!writer) return refuse();
1301
- return settled(async () => {
1302
- const name = normalizePath(path);
1303
- const metadata = {
1304
- ...fileOptions.metadata,
1305
- ...stampOf(writer.session)
1306
- };
1307
- const statement = fileOptions.upsert === true ? await upsertStatement() : INSERT_OBJECT;
1308
- const refused = await rehearseStore(bucket, writer.session, name, statement, metadata);
1309
- if (refused) return failed(refused);
1310
- const reply = await admin().uploadToSignedUrl(name, token, body, {
1311
- ...fileOptions,
1312
- metadata
1313
- });
1314
- if (reply.error) return reply;
1315
- try {
1316
- const claimed = await claimFor(bucket, writer, name);
1317
- return claimed.error ? claimed : reply;
1318
- } catch (cause) {
1319
- await admin().remove([name]);
1320
- return failed(sqlFailure(cause));
1321
- }
1322
- });
1323
- };
1324
- const store = (method) => (path, body, fileOptions = {}) => {
1325
- if (!writer) return refuse();
1326
- const { adminSql: ownerSql, session: active } = writer;
1327
- return settled(async () => {
1328
- const name = normalizePath(path);
1329
- const owner = ownerOf(active.targetUserId);
1330
- const metadata = {
1331
- ...fileOptions.metadata,
1332
- ...stampOf(active)
1333
- };
1334
- const statement = method === "update" || fileOptions.upsert === true ? await upsertStatement() : INSERT_OBJECT;
1335
- const refused = await rehearseStore(bucket, active, name, statement, metadata);
1336
- if (refused) return failed(refused);
1337
- const reply = await admin()[method](name, body, {
1338
- ...fileOptions,
1339
- metadata
1340
- });
1341
- if (reply.error) return reply;
1342
- try {
1343
- await ownerSql.queryRaw(OWN_UPLOAD, [
1344
- bucket,
1345
- name,
1346
- owner,
1347
- active.targetUserId,
1348
- active.id
1349
- ]);
1350
- } catch (cause) {
1351
- await admin().remove([name]);
1352
- return failed(sqlFailure(cause));
1353
- }
1354
- return reply;
1355
- });
1356
- };
1357
- const relocate = (method) => (from, to, destination = {}) => {
1358
- if (!writer) return refuse();
1359
- const { adminSql: ownerSql, session: active } = writer;
1360
- return settled(async () => {
1361
- const source = normalizePath(from);
1362
- const name = normalizePath(to);
1363
- const target = destination.destinationBucket ?? bucket;
1364
- const owner = ownerOf(active.targetUserId);
1365
- const stamp = JSON.stringify(stampOf(active));
1366
- let previousOwner = null;
1367
- const refused = await rehearse(async (client) => {
1368
- const [found] = await client.queryRaw(SOURCE_OBJECT, [bucket, source]);
1369
- if (!found) return NOT_FOUND;
1370
- previousOwner = text(found["owner_id"]) ?? null;
1371
- if (method === "copy") {
1372
- await client.queryRaw(INSERT_OBJECT, [
1373
- target,
1374
- name,
1375
- owner,
1376
- active.targetUserId,
1377
- stamp
1378
- ]);
1379
- return null;
1380
- }
1381
- const [moved] = await client.queryRaw(MOVE_OBJECT, [
1382
- bucket,
1383
- source,
1384
- target,
1385
- name,
1386
- owner,
1387
- active.targetUserId
1388
- ]);
1389
- return moved ? null : NOT_FOUND;
1390
- });
1391
- if (refused) return failed(refused);
1392
- const reply = await admin()[method](source, name, destination);
1393
- if (reply.error) return reply;
1394
- try {
1395
- await (method === "copy" ? ownerSql.queryRaw(OWN_COPY, [
1396
- target,
1397
- name,
1398
- owner,
1399
- active.targetUserId,
1400
- stamp
1401
- ]) : ownerSql.queryRaw(OWN_MOVE, [
1402
- target,
1403
- name,
1404
- owner,
1405
- active.targetUserId,
1406
- stamp,
1407
- previousOwner
1408
- ]));
1409
- } catch (cause) {
1410
- const written = options.admin.from(target);
1411
- await (method === "copy" ? written.remove([name]) : written.move(name, source, { destinationBucket: bucket }));
1412
- return failed(sqlFailure(cause));
1413
- }
1414
- return reply;
1415
- });
1416
- };
1417
- const remove = (paths) => {
1418
- if (!writer) return refuse();
1419
- return settled(async () => {
1420
- const entries = paths.map((entry) => typeof entry === "string" ? normalizePath(entry) : {
1421
- ...entry,
1422
- path: normalizePath(entry.path)
1423
- });
1424
- const names = entries.map((entry) => typeof entry === "string" ? entry : entry.path);
1425
- const removable = /* @__PURE__ */ new Set();
1426
- const refused = await rehearse(async (client) => {
1427
- await client.queryRaw(ALLOW_DELETE);
1428
- const deleted = await client.queryRaw(DELETE_OBJECTS, [bucket, [...new Set(names)]]);
1429
- for (const row of deleted) removable.add(String(row["name"]));
1430
- return null;
1431
- });
1432
- if (refused) return failed(refused);
1433
- const permitted = entries.filter((_, index) => removable.has(names[index] ?? ""));
1434
- if (permitted.length === 0) return {
1435
- data: [],
1436
- error: null
1437
- };
1438
- return admin().remove(permitted);
1439
- });
1440
- };
1441
- return {
1442
- exists: (path) => settled(async () => ({
1443
- data: await visible(normalizePath(path)),
1444
- error: null
1445
- })).then((reply) => reply.error === null ? reply : {
1446
- data: false,
1447
- error: reply.error
1448
- }),
1449
- info: (path, infoOptions) => settled(async () => {
1450
- const versionId = infoOptions?.versionId;
1451
- const name = normalizePath(path);
1452
- const [row] = await rows(versionId === void 0 ? OBJECT_INFO : `${OBJECT_INFO} and o.version = $3`, versionId === void 0 ? [bucket, name] : [
1453
- bucket,
1454
- name,
1455
- versionId
1456
- ]);
1457
- const object = row?.["object"];
1458
- return isRecord(object) ? {
1459
- data: infoOf(object),
1460
- error: null
1461
- } : failed(NOT_FOUND);
1462
- }),
1463
- download: (path, downloadOptions, parameters) => checked(path, (name) => admin().download(name, downloadOptions, parameters)),
1464
- createSignedUrl: (path, expiresIn, urlOptions) => checked(path, (name) => admin().createSignedUrl(name, expiresIn, urlOptions)),
1465
- createSignedUrls: (paths, expiresIn, urlOptions) => settled(async () => {
1466
- const names = paths.map(normalizePath);
1467
- const seen = new Set((await rows(VISIBLE_OBJECTS, [bucket, names])).map((row) => String(row["path"])));
1468
- const shown = [...new Set(names.filter((name) => seen.has(name)))];
1469
- const signed = /* @__PURE__ */ new Map();
1470
- if (shown.length > 0) {
1471
- const reply = await admin().createSignedUrls(shown, expiresIn, urlOptions);
1472
- if (reply.error) return failed(reply.error);
1473
- for (const entry of reply.data) if (entry.path !== null) signed.set(entry.path, entry);
1474
- }
1475
- return {
1476
- data: names.map((name) => signed.get(name) ?? {
1477
- error: HIDDEN_URL,
1478
- path: name,
1479
- signedUrl: null
1480
- }),
1481
- error: null
1482
- };
1483
- }),
1484
- getPublicUrl: (path, urlOptions) => admin().getPublicUrl(path, urlOptions),
1485
- list,
1486
- listV2,
1487
- upload: store("upload"),
1488
- update: store("update"),
1489
- createSignedUploadUrl,
1490
- uploadToSignedUrl,
1491
- remove,
1492
- copy: relocate("copy"),
1493
- move: relocate("move"),
1494
- purgeCache: (path, cacheOptions, parameters) => writer ? checked(path, (name) => admin().purgeCache(name, cacheOptions, parameters)) : refuse()
1495
- };
1496
- }
1497
- };
1498
- }
1499
- //#endregion
1500
- //#region src/server/server.ts
1501
- /** The header `better_supabase.acting_member()` reads for a service caller. */
1502
- const ACTOR_HEADER = "x-bs-actor";
1503
- /** The environment as `getEnv` resolves it, one variable at a time. */
1504
- const RUNTIME_ENV = new Proxy({}, { get: (_target, key) => typeof key === "string" ? getEnv(key) : void 0 });
1505
- /**
1506
- * `options.env` as given when it is loaded already, parsed when it is a
1507
- * variable map (never merged with the runtime's), else the runtime's.
1508
- */
1509
- function envOf(env) {
1510
- if (env === void 0) return loadEnv(RUNTIME_ENV);
1511
- return isLoadedEnv(env) ? env : loadEnv(env);
1512
- }
1513
- /** An `EnvSource` holds only strings, so a `URL` in `jwksUrl` means a loaded env. */
1514
- function isLoadedEnv(env) {
1515
- return env.jwksUrl instanceof URL;
1516
- }
1517
- const needsPostgres = (method) => dbError("invalid_request", `${method} needs createServer(betterSupabase, { postgres: createPostgres() })`);
1518
- /**
1519
- * A framework adapter's server: `server` plus the adapter's own methods,
1520
- * without reading the lazy `env` getter. `extra` can't replace a
1521
- * `BetterServer` method.
1522
- */
1523
- function extendServer(server, extra) {
1524
- const extended = Object.defineProperties({}, {
1525
- ...Object.getOwnPropertyDescriptors(server),
1526
- ...Object.getOwnPropertyDescriptors(extra)
1527
- });
1528
- shareCore(server, extended);
1529
- return extended;
1530
- }
1531
- /**
1532
- * Server-side entry point for APIs, jobs, MCP servers and framework
1533
- * adapters. Holds the secrets; `betterSupabase` stays isomorphic.
1534
- */
1535
- function createServer(betterSupabase, options = {}) {
1536
- const credentials = options.credentials === void 0 ? {} : { credentials: credentialProviderOf(options.credentials) };
1537
- let loaded;
1538
- const env = () => loaded ??= envOf(options.env);
1539
- const lite = liteBackend(options, env);
1540
- if (lite === void 0 && (options.prefetchJwks ?? defaultPrefetchJwks()) && options.auth?.jwks === void 0) try {
1541
- prefetchJwks({
1542
- ...options.auth,
1543
- env: env()
1544
- });
1545
- } catch {}
1546
- const { executorOptions, tunedExecutor, serviceClient, readUrl, apiKeyClient, supabaseFor, restAt } = createClients({
1547
- options,
1548
- env,
1549
- definitionExecutor: betterSupabase.executorOptions(),
1550
- lite,
1551
- createClient
1552
- });
1553
- /** `$client` stays the full Supabase client, built when first read. */
1554
- const withLazyClient = (db, client) => Object.defineProperty(db, "$client", {
1555
- get: client,
1556
- enumerable: true,
1557
- configurable: true
1558
- });
1559
- const dbFor = (auth, context = {}) => {
1560
- let supabase;
1561
- const rest = restAt(env().url, auth);
1562
- const storage = { from: (bucket) => (supabase ??= supabaseFor(auth)).storage.from(bucket) };
1563
- const db = betterSupabase.connect(rest, {
1564
- ...authContext(auth),
1565
- ...context
1566
- }, auth.kind === "invalid" ? {
1567
- executor: refusingExecutor(auth.error),
1568
- storage
1569
- } : tunedExecutor ? {
1570
- executor: postgrestExecutor(rest, executorOptions),
1571
- storage
1572
- } : { storage });
1573
- return withLazyClient(db, () => supabase ??= supabaseFor(auth));
1574
- };
1575
- const sqlFor = (claims, context, stats, session, storage) => {
1576
- if (!options.postgres) throw new TypeError("Direct Postgres access needs createServer(betterSupabase, { postgres: createPostgres() })");
1577
- return betterSupabase.connect(session ? options.postgres.executorFor(claims, session) : options.postgres.executorFor(claims), context, {
1578
- ...stats ? { stats } : {},
1579
- ...storage ? { storage } : {}
1580
- });
1581
- };
1582
- /** `ServerOptions.tenant` outside `context()`, where it can't be awaited. */
1583
- const syncTenant = (request, auth) => {
1584
- const tenant = options.tenant?.(request, auth);
1585
- if (tenant !== void 0 && typeof tenant !== "string") throw new TypeError("ServerOptions.tenant returned a promise: use context(request), or pass { tenant } to contextFromResolution");
1586
- return tenant;
1587
- };
1588
- const pinMs = options.replicas?.pinMs ?? 5e3;
1589
- const idPolicy = requestIdPolicy(options.requestIds);
1590
- if (options.support && !options.postgres) throw new TypeError("Support sessions need createServer(betterSupabase, { postgres: createPostgres(), support })");
1591
- const hooksProblem = options.authorization === void 0 ? void 0 : hooksApiProblem(options.authorization);
1592
- if (hooksProblem !== void 0) throw new TypeError(hooksProblem);
1593
- const audit = serverAudit(betterSupabase, options.audit);
1594
- const support = options.support ? options.support.create(betterSupabase.events, options.auth?.claims ?? betterSupabase.claimsSchema, betterSupabase.temporal, options.authorization) : supportOff;
1595
- /**
1596
- * The target's context in a support session. Queries run over direct
1597
- * Postgres with the target's claims plus `act`, read-only unless the
1598
- * session allows writes; nothing reaches Supabase with the admin's token.
1599
- */
1600
- const supportContextFor = (resolution, active, parent, tenant, ids) => {
1601
- const { session, claims } = active;
1602
- const record = (key) => {
1603
- const value = claims[key];
1604
- return typeof value === "object" && value !== null && !Array.isArray(value) ? Object.fromEntries(Object.entries(value)) : void 0;
1605
- };
1606
- const appMetadata = record("app_metadata");
1607
- const userMetadata = record("user_metadata");
1608
- const user = {
1609
- id: session.targetUserId,
1610
- role: typeof claims["role"] === "string" ? claims["role"] : "authenticated",
1611
- ...typeof claims["email"] === "string" ? { email: claims["email"] } : {},
1612
- ...appMetadata ? { appMetadata } : {},
1613
- ...userMetadata ? { userMetadata } : {}
1614
- };
1615
- const auth = {
1616
- kind: "user",
1617
- token: "",
1618
- claims,
1619
- user,
1620
- source: "support",
1621
- expiresAt: Math.floor(session.expiresAt.epochMilliseconds / 1e3)
1622
- };
1623
- const scope = tenant ?? session.tenant;
1624
- const base = userContext(user, claims);
1625
- const context = scope === void 0 ? base : {
1626
- ...base,
1627
- tenant: scope
1628
- };
1629
- const sessionOptions = sessionWith(ids, scope, session.readOnly);
1630
- const recorder = new StatsRecorder(parent);
1631
- const sqlClaims = claims;
1632
- const unavailable = () => {
1633
- throw new TypeError("ctx.supabase and ctx.db.$client are not available in a support session; ctx.db and ctx.sql run as the target");
1634
- };
1635
- let db;
1636
- let sql;
1637
- let storage;
1638
- const targetStorage = () => {
1639
- const postgres = options.postgres;
1640
- if (!postgres) throw new TypeError("Support sessions need createServer(betterSupabase, { postgres: createPostgres(), support })");
1641
- let asTarget;
1642
- const target = () => asTarget ??= postgres.asUser(sqlClaims, sessionOptions);
1643
- storage ??= supportStorage({
1644
- admin: { from: (bucket) => serviceClient().storage.from(bucket) },
1645
- sql: {
1646
- queryRaw: (text, params) => target().queryRaw(text, params),
1647
- transaction: (fn) => target().transaction?.(fn) ?? Promise.reject(/* @__PURE__ */ new TypeError("The target's SQL client has no transaction"))
1648
- },
1649
- adminSql: postgres.admin,
1650
- session,
1651
- readOnly: session.readOnly
1652
- });
1653
- return storage;
1654
- };
1655
- return {
1656
- ...credentials,
1657
- ...ids,
1658
- auth,
1659
- resolution,
1660
- support: active,
1661
- get storage() {
1662
- return targetStorage();
1663
- },
1664
- get supabase() {
1665
- return unavailable();
1666
- },
1667
- get db() {
1668
- db ??= Object.defineProperty(sqlFor(sqlClaims, context, recorder, sessionOptions, targetStorage()), "$client", {
1669
- get: unavailable,
1670
- enumerable: true,
1671
- configurable: true
1672
- });
1673
- return db;
1674
- },
1675
- get sql() {
1676
- sql ??= sqlFor(sqlClaims, context, recorder, sessionOptions, targetStorage());
1677
- return sql;
1678
- },
1679
- replica: void 0,
1680
- stats: () => recorder.snapshot(),
1681
- apply: (response) => resolution.apply(response),
1682
- cookies: () => resolution.cookies
1683
- };
1684
- };
1685
- /**
1686
- * An API key's context. There is no JWT for PostgREST, so `ctx.db` and
1687
- * `ctx.sql` run over direct Postgres with the key's synthesized claims,
1688
- * scoped to its organization unless the tenant option names another.
1689
- */
1690
- const apiKeyContextFor = (resolution, auth, parent, tenant, ids) => {
1691
- const scope = tenant ?? auth.organizationId;
1692
- const base = authContext(auth);
1693
- const context = scope === void 0 ? base : {
1694
- ...base,
1695
- tenant: scope
1696
- };
1697
- const session = sessionWith(ids, scope);
1698
- const recorder = new StatsRecorder(parent);
1699
- let db;
1700
- let sql;
1701
- return {
1702
- ...credentials,
1703
- ...ids,
1704
- auth: resolution.auth,
1705
- resolution,
1706
- get supabase() {
1707
- return apiKeyClient();
1708
- },
1709
- get db() {
1710
- db ??= Object.defineProperty(sqlFor(auth.claims, context, recorder, session), "$client", {
1711
- get: apiKeyClient,
1712
- enumerable: true,
1713
- configurable: true
1714
- });
1715
- return db;
1716
- },
1717
- get sql() {
1718
- sql ??= sqlFor(auth.claims, context, recorder, session);
1719
- return sql;
1720
- },
1721
- replica: void 0,
1722
- stats: () => recorder.snapshot(),
1723
- apply: (response) => resolution.apply(response),
1724
- cookies: () => resolution.cookies
1725
- };
1726
- };
1727
- /** Clients and repositories are built on first access: most scopes use one of them. */
1728
- const contextFor = (resolution, requestHeaders, parent, until = 0, tenant, active, ids = {}) => {
1729
- if (active) return supportContextFor(resolution, active, parent, tenant, ids);
1730
- const { auth } = resolution;
1731
- if (auth.kind === "apiKey") return apiKeyContextFor(resolution, auth, parent, tenant, ids);
1732
- const context = tenant === void 0 ? authContext(auth) : {
1733
- ...authContext(auth),
1734
- tenant
1735
- };
1736
- const clientHeaders = tenant === void 0 ? requestHeaders : {
1737
- ...requestHeaders,
1738
- [TENANT_HEADER]: tenant
1739
- };
1740
- const headers = {
1741
- ...idPolicy.headers(ids),
1742
- ...clientHeaders
1743
- };
1744
- const sharesClient = auth.kind !== "user";
1745
- const session = sessionWith(ids, tenant);
1746
- const recorder = new StatsRecorder(parent);
1747
- let supabase;
1748
- let db;
1749
- let sql;
1750
- const sqlClaims = auth.kind === "user" ? auth.claims : auth.kind === "anon" ? { role: "anon" } : void 0;
1751
- const client = () => supabase ??= supabaseFor(auth, sharesClient ? clientHeaders : headers);
1752
- let replica;
1753
- const replicaUrl = () => {
1754
- const url = readUrl();
1755
- if (url) replica ??= replicaState(until);
1756
- return url;
1757
- };
1758
- return {
1759
- ...credentials,
1760
- ...ids,
1761
- auth,
1762
- resolution,
1763
- get supabase() {
1764
- return client();
1765
- },
1766
- get db() {
1767
- if (db) return db;
1768
- const url = replicaUrl();
1769
- const rest = (sharesClient ? void 0 : supabase) ?? restAt(env().url, auth, headers);
1770
- const connected = betterSupabase.connect(rest, context, {
1771
- stats: recorder,
1772
- storage: { from: (bucket) => client().storage.from(bucket) },
1773
- ...auth.kind === "invalid" ? { executor: refusingExecutor(auth.error) } : url && replica ? { executor: routedExecutor(postgrestExecutor(rest, executorOptions), postgrestExecutor(restAt(url, auth, headers), executorOptions), replica) } : tunedExecutor ? { executor: postgrestExecutor(rest, executorOptions) } : {}
1774
- });
1775
- db = withLazyClient(connected, client);
1776
- return db;
1777
- },
1778
- get replica() {
1779
- replicaUrl();
1780
- return replica;
1781
- },
1782
- get sql() {
1783
- if (!options.postgres || !sqlClaims) return;
1784
- sql ??= sqlFor(sqlClaims, context, recorder, session);
1785
- return sql;
1786
- },
1787
- stats: () => recorder.snapshot(),
1788
- apply: (response) => withPrimaryPin(resolution.apply(response), replica, pinMs),
1789
- cookies: () => {
1790
- const pin = primaryCookieWrite(replica, pinMs);
1791
- return pin ? [...resolution.cookies, pin] : resolution.cookies;
1792
- }
1793
- };
1794
- };
1795
- const fromResolution = (resolution, request, contextOptions, tenant) => contextFor(resolution, options.headers?.(request) ?? {}, contextOptions.stats, contextOptions.pinnedUntil ?? (readUrl() ? pinnedUntil(resolution.requestCookies) : 0), tenant, contextOptions.support, idPolicy.forRequest(request, contextOptions));
1796
- const resolve = async (request, resolveOptions = {}) => {
1797
- const claims = options.auth?.claims ?? betterSupabase.claimsSchema;
1798
- const userMetadata = betterSupabase.userMetadataSchema;
1799
- const resolution = await resolveAuth(request, {
1800
- logger: betterSupabase.events.logger,
1801
- ...lite ? lite.auth() : options.auth,
1802
- ...claims ? { claims } : {},
1803
- ...userMetadata ? { userMetadata } : {},
1804
- env: env(),
1805
- ...resolveOptions.refresh === void 0 ? {} : { refresh: resolveOptions.refresh },
1806
- ...resolveOptions.cookies === void 0 ? {} : { cookies: resolveOptions.cookies },
1807
- ...resolveOptions.checkSession ? { checkSession: true } : {},
1808
- ...resolveOptions.encode === void 0 ? {} : { cookie: {
1809
- ...options.auth?.cookie,
1810
- encode: resolveOptions.encode
1811
- } },
1812
- onRefresh: (event) => {
1813
- options.auth?.onRefresh?.(event);
1814
- betterSupabase.events.emit("refresh", event);
1815
- }
1816
- });
1817
- if (betterSupabase.events.has("auth")) {
1818
- const { auth } = resolution;
1819
- betterSupabase.events.emit("auth", {
1820
- source: auth.kind === "user" ? auth.source === "cookie" ? "cookie" : "bearer" : auth.kind === "service" || auth.kind === "apiKey" ? "bearer" : "none",
1821
- ok: auth.kind !== "invalid",
1822
- ...auth.kind === "user" ? {
1823
- userId: auth.user.id,
1824
- rawSource: auth.source
1825
- } : {},
1826
- ...auth.kind === "anon" || auth.kind === "invalid" ? { reason: auth.reason } : {}
1827
- });
1828
- }
1829
- return resolution;
1830
- };
1831
- /** One context per request and `refresh`/`cookies` pair: Server Components ask repeatedly. */
1832
- const contextMemo = /* @__PURE__ */ new WeakMap();
1833
- const server = {
1834
- get env() {
1835
- return env();
1836
- },
1837
- events: betterSupabase.events,
1838
- authorizer: options.authorizer,
1839
- authorization: options.authorization,
1840
- resolve,
1841
- supabaseFor,
1842
- dbFor: (auth, context, dbOptions) => dbOptions?.support ? supportContextFor({
1843
- auth,
1844
- cookies: [],
1845
- headers: {},
1846
- requestCookies: [],
1847
- apply: (response) => response
1848
- }, dbOptions.support, void 0, context?.tenant, {}).db : dbFor(auth, context),
1849
- contextFor: (auth, contextOptions = {}) => contextFor({
1850
- auth,
1851
- cookies: [],
1852
- headers: {},
1853
- requestCookies: [],
1854
- apply: (response) => response
1855
- }, {}, contextOptions.stats, contextOptions.pinnedUntil, contextOptions.tenant, contextOptions.support, idPolicy.forRequest(void 0, contextOptions)),
1856
- context(request, contextOptions = {}) {
1857
- const { refresh, cookies, ...rest } = contextOptions;
1858
- const key = Object.keys(rest).length === 0 ? `${String(refresh ?? false)}:${String(cookies ?? true)}` : void 0;
1859
- let byOptions = key ? contextMemo.get(request) : void 0;
1860
- const known = key ? byOptions?.get(key) : void 0;
1861
- if (known) return known;
1862
- const resolving = (async () => {
1863
- const call = { options: contextOptions };
1864
- await fold(request, {
1865
- ...seedContext(),
1866
- [CALL]: call
1867
- });
1868
- return call.context;
1869
- })();
1870
- if (key) {
1871
- if (!byOptions) {
1872
- byOptions = /* @__PURE__ */ new Map();
1873
- contextMemo.set(request, byOptions);
1874
- }
1875
- const memo = byOptions;
1876
- memo.set(key, resolving);
1877
- resolving.catch(() => {
1878
- if (memo.get(key) === resolving) memo.delete(key);
1879
- });
1880
- }
1881
- return resolving;
1882
- },
1883
- contextFromResolution: (resolution, request, contextOptions = {}) => fromResolution(resolution, request, contextOptions, contextOptions.tenant ?? syncTenant(request, resolution.auth)),
1884
- admin: (context = {}, adminOptions = {}) => {
1885
- const client = adminOptions.as === void 0 ? serviceClient() : supabaseFor({
1886
- kind: "service",
1887
- keyName: "secret"
1888
- }, { [ACTOR_HEADER]: adminOptions.as });
1889
- const db = betterSupabase.connect(client, {
1890
- actor: {
1891
- id: "service",
1892
- kind: "service",
1893
- role: "service_role"
1894
- },
1895
- claims: { role: "service_role" },
1896
- ...context
1897
- }, tunedExecutor ? { executor: postgrestExecutor(client, executorOptions) } : {});
1898
- return Object.defineProperty(db, "$authAdmin", { get: () => client.auth.admin });
1899
- },
1900
- support,
1901
- deleteAccount: (userId, deleteOptions) => deleteAccount(betterSupabase, serviceClient, userId, {
1902
- ...options.postgres ? { sql: options.postgres.admin } : {},
1903
- ...deleteOptions
1904
- }).map((deleted) => {
1905
- audit.account("account.deleted", userId, { removed: deleted.removed });
1906
- return deleted;
1907
- }),
1908
- endSessions: (userId) => options.postgres ? endSessions(options.postgres.admin, userId).map((ended) => {
1909
- audit.account("account.sessions_ended", userId, { ended: ended.ended });
1910
- return ended;
1911
- }) : AsyncResult.err(needsPostgres("endSessions")),
1912
- suspendAccount: (userId, suspendOptions) => options.postgres ? suspendAccount(serviceClient, options.postgres.admin, userId, suspendOptions).map((suspended) => {
1913
- audit.account(suspended.suspended ? "account.suspended" : "account.unsuspended", userId, {
1914
- ended: suspended.ended,
1915
- ...suspendOptions.duration === void 0 ? {} : { duration: suspendOptions.duration }
1916
- });
1917
- return suspended;
1918
- }) : AsyncResult.err(needsPostgres("suspendAccount")),
1919
- actingAs: (userId, claims = {}, impersonation) => {
1920
- const full = {
1921
- role: "authenticated",
1922
- ...claims,
1923
- sub: userId,
1924
- ...impersonation ? { act: actClaim(impersonation) } : {}
1925
- };
1926
- return sqlFor(full, {
1927
- actor: {
1928
- id: userId,
1929
- kind: "user",
1930
- role: full.role ?? "authenticated",
1931
- ...impersonation ? { impersonator: impersonation.actor } : {}
1932
- },
1933
- claims: full
1934
- });
1935
- },
1936
- forContext: (context, forOptions = {}) => AsyncResult.from(async () => {
1937
- const subject = await ticketSubject(context, forOptions.ticket ?? options.authorization?.tickets?.subject);
1938
- if (!subject.ok) return subject;
1939
- const target = subject.data;
1940
- const { tenant } = target;
1941
- const checked = contextClaims(target);
1942
- if (!checked.ok) return err(dbError("forbidden", checked.message));
1943
- if (!options.postgres) return err(dbError("invalid_request", "Direct Postgres access needs createServer(betterSupabase, { postgres: createPostgres() })"));
1944
- const userId = checked.claims.sub;
1945
- const extra = await options.claimsFor?.(userId, target) ?? {};
1946
- const permissions = narrowCap(await delegationCap(target, userId, options.authorization?.delegation?.permissions), forOptions.permissions);
1947
- const built = contextClaims(target, {
1948
- extra,
1949
- ...forOptions.reason === void 0 ? {} : { reason: forOptions.reason },
1950
- ...permissions === void 0 ? {} : { permissions }
1951
- });
1952
- if (!built.ok) return err(dbError("forbidden", built.message));
1953
- const { claims, impersonator, readOnly } = built;
1954
- const session = sessionWith({}, tenant, readOnly);
1955
- return ok(sqlFor(claims, {
1956
- actor: {
1957
- id: userId,
1958
- kind: "user",
1959
- role: "authenticated",
1960
- ...impersonator ? { impersonator } : {}
1961
- },
1962
- claims,
1963
- ...tenant === void 0 ? {} : { tenant }
1964
- }, void 0, session));
1965
- })
1966
- };
1967
- const core = {
1968
- events: betterSupabase.events,
1969
- pinMs,
1970
- resolve,
1971
- sessionCookie: () => options.auth?.cookie?.name ?? sessionCookieName(env().url),
1972
- tenant: (request, auth) => options.tenant?.(request, auth),
1973
- support: (request, auth) => support.current(request, auth),
1974
- context: (resolution, request, contextOptions, tenant) => fromResolution(resolution, request, contextOptions, tenant)
1975
- };
1976
- registerCore(server, core);
1977
- const fold = pipeline([
1978
- withSession(core),
1979
- withTenant(core),
1980
- withSupport(core),
1981
- withServerContext(core)
1982
- ], (_request, ctx) => {
1983
- const call = callOf(ctx);
1984
- if (call) call.context = ctx.bs;
1985
- return Promise.resolve(new Response(null, { status: 204 }));
1986
- });
1987
- return server;
1988
- }
1989
- /**
1990
- * The permission keys the provider's `delegation.permissions` hook grants a
1991
- * delegated context, `undefined` for a context that is not delegated or
1992
- * without the hook. A throw or an answer that is not a list of strings
1993
- * grants nothing.
1994
- */
1995
- async function delegationCap(context, userId, permissions) {
1996
- if (permissions === void 0) return;
1997
- const delegated = delegatedClaims(context.claims ?? {});
1998
- if (!delegated.ok || delegated.delegation === void 0) return;
1999
- const { client_id, scope, authorization_details } = delegated.delegation;
2000
- try {
2001
- const keys = await permissions({
2002
- userId,
2003
- ...context.tenant === void 0 ? {} : { tenant: context.tenant },
2004
- ...client_id === void 0 ? {} : { clientId: client_id },
2005
- scopes: scope === void 0 ? [] : scope.split(" "),
2006
- ...authorization_details === void 0 ? {} : { authorizationDetails: authorization_details }
2007
- });
2008
- return Array.isArray(keys) && keys.every((key) => typeof key === "string") ? keys : [];
2009
- } catch {
2010
- return [];
2011
- }
2012
- }
2013
- /**
2014
- * The context `forContext` runs as: `context` itself, or for a context
2015
- * with a ticket, the context `resolve` returns for it. A ticket without a
2016
- * resolver, a `null` answer and a throw are `forbidden`; none of them fall
2017
- * back to the recorded actor.
2018
- */
2019
- async function ticketSubject(context, resolve) {
2020
- const ticket = context["ticket"];
2021
- if (ticket === void 0) return ok(context);
2022
- if (typeof ticket !== "string" || ticket === "") return err(dbError("forbidden", "forContext got an invalid ticket"));
2023
- if (resolve === void 0) return err(dbError("forbidden", "forContext got a ticket but no ticket resolver: pass { ticket } or authorization.tickets.subject"));
2024
- let resolved;
2025
- try {
2026
- resolved = await resolve(ticket);
2027
- } catch {
2028
- resolved = null;
2029
- }
2030
- if (typeof resolved !== "object" || resolved === null) return err(dbError("forbidden", "The ticket resolver refused the ticket"));
2031
- return ok(resolved);
2032
- }
2033
- //#endregion
2034
- //#region src/server/adapter.ts
2035
- /** Hands event sink sends still running to `waitUntil`; a no-op without either. */
2036
- function flushEvents(server, waitUntil) {
2037
- if (waitUntil && server.events.pending) waitUntil(server.events.settled());
2038
- }
2039
- /** Runs `run`, then hands pending event sink sends to `waitUntil` even when it throws. */
2040
- async function withFlush(server, waitUntil, run) {
2041
- try {
2042
- return await run();
2043
- } finally {
2044
- flushEvents(server, waitUntil);
2045
- }
2046
- }
2047
- /** The 500 for an error a handler threw; the message only when `expose` is set. */
2048
- function unexpectedResponse(cause, options) {
2049
- return problemResponse(dbError("unexpected", options.expose && cause instanceof Error ? cause.message : "Internal server error"), options);
2050
- }
2051
- /**
2052
- * Runs `run` as the request's caller, the way every built-in adapter does:
2053
- * resolves the context, applies the guard (401/403 Problem Details), turns
2054
- * the return value into a response with `respond()`, turns other thrown
2055
- * errors into a 500, adds the context's cookies with `ctx.apply()` and
2056
- * hands pending event sink sends to `waitUntil`.
2057
- *
2058
- * ```ts
2059
- * export default { fetch: (request, env, ctx) =>
2060
- * handle(server, request, (c) => c.db.notes.findMany(), { waitUntil: (p) => ctx.waitUntil(p) }) }
2061
- * ```
2062
- */
2063
- async function handle(server, request, run, options = {}) {
2064
- const expose = options.expose ?? defaultExpose();
2065
- const instance = options.instance ?? new URL(request.url).pathname;
2066
- const ctx = await server.context(request, {
2067
- ...options.context,
2068
- refresh: refreshFor(options.refresh, request) ?? false
2069
- });
2070
- const denied = guard(ctx.auth, options.allow, options.aal, options.scopes);
2071
- try {
2072
- let response;
2073
- try {
2074
- response = denied ? problemResponse(denied, {
2075
- instance,
2076
- expose
2077
- }) : await respond(() => run(ctx), {
2078
- instance,
2079
- expose,
2080
- ...options.status === void 0 ? {} : { status: options.status }
2081
- });
2082
- } catch (cause) {
2083
- options.rethrow?.(cause);
2084
- response = unexpectedResponse(cause, {
2085
- instance,
2086
- expose
2087
- });
2088
- }
2089
- return ctx.apply(response);
2090
- } finally {
2091
- flushEvents(server, options.waitUntil);
2092
- }
2093
- }
2094
- /** A request carrying only `token` as a bearer, for resolvers that read headers. */
2095
- function bearerRequest(token) {
2096
- return new Request("http://localhost/", { headers: token ? { authorization: `Bearer ${token}` } : {} });
2097
- }
2098
- /**
2099
- * Verifies a bare access token (an MCP transport's, a WebSocket's) without
2100
- * cookies or a refresh. An empty token resolves to `anon`.
2101
- */
2102
- async function resolveToken(server, token) {
2103
- const { auth } = await server.resolve(bearerRequest(token), { cookies: false });
2104
- return auth;
2105
- }
2106
- //#endregion
2107
- export { suspendAccount as A, shouldRefresh as C, SERVER_EVENT_SOURCE as D, defineAuthorizationHooks as E, endSessions as O, shouldCheckSession as S, serverCore as T, withSupport as _, unexpectedResponse as a, isPrefetch as b, extendServer as c, clearSupportCookie as d, supportCookie as f, withTenant as g, TENANT_HEADER as h, resolveToken as i, deleteAccount as j, lastSignIns as k, supportStorage as l, supportCookieValue as m, flushEvents as n, withFlush as o, supportCookieMaxAge as p, handle as r, createServer as s, bearerRequest as t, SUPPORT_COOKIE as u, outageResponse as v, withServerContext as w, refreshFor as x, withSession as y };