better-supabase 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1374) hide show
  1. package/README.md +144 -83
  2. package/bin/better-supabase.js +14 -2
  3. package/dist/access-sql-DUSSMaC3.js +201 -0
  4. package/dist/actor-BAhb-d1S.d.ts +104 -0
  5. package/dist/actor-KHDOKGb1.js +151 -0
  6. package/dist/adapter-CEjmtazZ.js +1984 -0
  7. package/dist/agents-BCNhIxVZ.d.ts +111 -0
  8. package/dist/ai-cache-Dps7aRu1.d.ts +70 -0
  9. package/dist/ai-cache-zeUL94pB.js +84 -0
  10. package/dist/ai-chat-3GBSlFR4.d.ts +608 -0
  11. package/dist/ai-files-D2_9YLjF.js +331 -0
  12. package/dist/ai-sdk/agents/index.d.ts +154 -10
  13. package/dist/ai-sdk/agents/index.js +172 -17
  14. package/dist/ai-sdk/batches/index.d.ts +4 -4
  15. package/dist/ai-sdk/batches/index.js +5 -5
  16. package/dist/ai-sdk/cache/index.d.ts +2 -2
  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 +7 -6
  20. package/dist/ai-sdk/embeddings/index.d.ts +3 -3
  21. package/dist/ai-sdk/embeddings/index.js +1 -2
  22. package/dist/ai-sdk/files/index.d.ts +2 -2
  23. package/dist/ai-sdk/files/index.js +4 -4
  24. package/dist/ai-sdk/index.d.ts +7 -6
  25. package/dist/ai-sdk/index.js +4 -3
  26. package/dist/ai-sdk/mcp/index.d.ts +4 -4
  27. package/dist/ai-sdk/mcp/index.js +6 -6
  28. package/dist/ai-sdk/memory/index.d.ts +5 -2
  29. package/dist/ai-sdk/memory/index.js +2 -2
  30. package/dist/ai-sdk/react/index.js +1 -2
  31. package/dist/ai-sdk/workflow/index.d.ts +5 -4
  32. package/dist/ai-sdk/workflow/index.js +8 -8
  33. package/dist/ai-tasks-Ih5oHfyj.d.ts +157 -0
  34. package/dist/announcements-BHCzraR6.js +128 -0
  35. package/dist/api-CFjuYKFY.js +680 -0
  36. package/dist/api-TG3jE5aO.d.ts +411 -0
  37. package/dist/api-keys-BEQatEUW.js +318 -0
  38. package/dist/api-keys-BYoGCM9p.d.ts +205 -0
  39. package/dist/app-tables-BGl5_U2x.js +584 -0
  40. package/dist/approvals-a2KmioBh.d.ts +124 -0
  41. package/dist/arazzo/index.d.ts +5 -5
  42. package/dist/arazzo/index.js +6 -6
  43. package/dist/assistant-Bf2cA6RO.d.ts +148 -0
  44. package/dist/astro/index.d.ts +9 -8
  45. package/dist/astro/index.js +10 -7
  46. package/dist/asyncapi/index.d.ts +4 -4
  47. package/dist/asyncapi/index.js +6 -6
  48. package/dist/attachments-DAj2Yp95.js +264 -0
  49. package/dist/attributes-D4mA7WhI.js +38 -0
  50. package/dist/audit-log-BMMuGPdP.js +786 -0
  51. package/dist/auth-CdBKt0CS.js +20 -0
  52. package/dist/auth-reply-DUCwb8YO.js +31 -0
  53. package/dist/auth-reply-Dj124sbX.d.ts +11 -0
  54. package/dist/authorization-DpRfs6Wx.d.ts +1412 -0
  55. package/dist/authorization-hooks-DkmrnDX7.d.ts +214 -0
  56. package/dist/authorizer-DH7DjkL3.js +126 -0
  57. package/dist/base64-BmeCBgGo.js +42 -0
  58. package/dist/batch-limit-DKVQDz4o.js +5 -0
  59. package/dist/before-route-B98js9m_.js +30 -0
  60. package/dist/better-result/index.d.ts +5 -5
  61. package/dist/better-result/index.js +1 -1
  62. package/dist/bind-a7sUgvf4.d.ts +70 -0
  63. package/dist/block-env-CBd_SoL5.js +29 -0
  64. package/dist/block-env-Dxl7rsI0.d.ts +10 -0
  65. package/dist/block-events-DD9Q_NUz.js +96 -0
  66. package/dist/block-fields-5UA84ZUg.d.ts +55 -0
  67. package/dist/block-fields-ffD6Gxe4.js +139 -0
  68. package/dist/block-helpers-C86hPEjI.d.ts +37 -0
  69. package/dist/block-helpers-CfG_MvDR.js +264 -0
  70. package/dist/block-hooks-BLPWD3Jt.d.ts +107 -0
  71. package/dist/block-hooks-BsXncUlZ.js +114 -0
  72. package/dist/block-transport-DaGGXjIw.d.ts +70 -0
  73. package/dist/block-transport-G4t1umrR.js +85 -0
  74. package/dist/blocks/access-requests/index.d.ts +98 -0
  75. package/dist/blocks/access-requests/index.js +99 -0
  76. package/dist/blocks/agents/index.d.ts +21 -3
  77. package/dist/blocks/agents/index.js +64 -18
  78. package/dist/blocks/ai-cache/index.d.ts +7 -2
  79. package/dist/blocks/ai-cache/index.js +15 -3
  80. package/dist/blocks/ai-chat/index.d.ts +22 -3
  81. package/dist/blocks/ai-chat/index.js +29 -3
  82. package/dist/blocks/ai-chat/react/index.d.ts +12 -46
  83. package/dist/blocks/ai-chat/react/index.js +43 -335
  84. package/dist/blocks/ai-chat/solid/index.d.ts +34 -0
  85. package/dist/blocks/ai-chat/solid/index.js +41 -0
  86. package/dist/blocks/ai-chat/svelte/index.d.ts +34 -0
  87. package/dist/blocks/ai-chat/svelte/index.js +41 -0
  88. package/dist/blocks/ai-chat/vue/index.d.ts +34 -0
  89. package/dist/blocks/ai-chat/vue/index.js +41 -0
  90. package/dist/blocks/ai-files/index.d.ts +10 -3
  91. package/dist/blocks/ai-files/index.js +16 -3
  92. package/dist/blocks/ai-providers/index.d.ts +18 -3
  93. package/dist/blocks/ai-providers/index.js +40 -15
  94. package/dist/blocks/ai-tasks/index.d.ts +9 -2
  95. package/dist/blocks/ai-tasks/index.js +70 -21
  96. package/dist/blocks/announcements/index.d.ts +18 -3
  97. package/dist/blocks/announcements/index.js +27 -3
  98. package/dist/blocks/announcements/react/index.d.ts +4 -14
  99. package/dist/blocks/announcements/react/index.js +22 -70
  100. package/dist/blocks/announcements/solid/index.d.ts +13 -0
  101. package/dist/blocks/announcements/solid/index.js +14 -0
  102. package/dist/blocks/announcements/svelte/index.d.ts +13 -0
  103. package/dist/blocks/announcements/svelte/index.js +14 -0
  104. package/dist/blocks/announcements/vue/index.d.ts +13 -0
  105. package/dist/blocks/announcements/vue/index.js +14 -0
  106. package/dist/blocks/api-keys/index.d.ts +24 -7
  107. package/dist/blocks/api-keys/index.js +29 -294
  108. package/dist/blocks/api-keys/react/index.d.ts +29 -0
  109. package/dist/blocks/api-keys/react/index.js +43 -0
  110. package/dist/blocks/api-keys/react/server.d.ts +7 -0
  111. package/dist/blocks/api-keys/react/server.js +7 -0
  112. package/dist/blocks/api-keys/solid/index.d.ts +13 -0
  113. package/dist/blocks/api-keys/solid/index.js +14 -0
  114. package/dist/blocks/api-keys/svelte/index.d.ts +13 -0
  115. package/dist/blocks/api-keys/svelte/index.js +14 -0
  116. package/dist/blocks/api-keys/vue/index.d.ts +13 -0
  117. package/dist/blocks/api-keys/vue/index.js +14 -0
  118. package/dist/blocks/approvals/index.d.ts +22 -0
  119. package/dist/blocks/approvals/index.js +189 -0
  120. package/dist/blocks/attachments/index.d.ts +18 -227
  121. package/dist/blocks/attachments/index.js +26 -242
  122. package/dist/blocks/audit/index.d.ts +72 -365
  123. package/dist/blocks/audit/index.js +91 -714
  124. package/dist/blocks/audit/react/index.d.ts +26 -0
  125. package/dist/blocks/audit/react/index.js +44 -0
  126. package/dist/blocks/audit/react/server.d.ts +7 -0
  127. package/dist/blocks/audit/react/server.js +7 -0
  128. package/dist/blocks/audit/solid/index.d.ts +13 -0
  129. package/dist/blocks/audit/solid/index.js +14 -0
  130. package/dist/blocks/audit/svelte/index.d.ts +13 -0
  131. package/dist/blocks/audit/svelte/index.js +14 -0
  132. package/dist/blocks/audit/vue/index.d.ts +13 -0
  133. package/dist/blocks/audit/vue/index.js +14 -0
  134. package/dist/blocks/billing/index.d.ts +37 -12
  135. package/dist/blocks/billing/index.js +43 -12
  136. package/dist/blocks/billing/react/index.d.ts +34 -0
  137. package/dist/blocks/billing/react/index.js +36 -0
  138. package/dist/blocks/billing/react/server.d.ts +7 -0
  139. package/dist/blocks/billing/react/server.js +7 -0
  140. package/dist/blocks/billing/solid/index.d.ts +15 -0
  141. package/dist/blocks/billing/solid/index.js +14 -0
  142. package/dist/blocks/billing/svelte/index.d.ts +15 -0
  143. package/dist/blocks/billing/svelte/index.js +14 -0
  144. package/dist/blocks/billing/vue/index.d.ts +15 -0
  145. package/dist/blocks/billing/vue/index.js +14 -0
  146. package/dist/blocks/bookings/index.d.ts +36 -0
  147. package/dist/blocks/bookings/index.js +28 -0
  148. package/dist/blocks/bookings/react/index.d.ts +31 -0
  149. package/dist/blocks/bookings/react/index.js +59 -0
  150. package/dist/blocks/bookings/react/server.d.ts +6 -0
  151. package/dist/blocks/bookings/react/server.js +7 -0
  152. package/dist/blocks/bookings/solid/index.d.ts +13 -0
  153. package/dist/blocks/bookings/solid/index.js +14 -0
  154. package/dist/blocks/bookings/svelte/index.d.ts +13 -0
  155. package/dist/blocks/bookings/svelte/index.js +14 -0
  156. package/dist/blocks/bookings/vue/index.d.ts +13 -0
  157. package/dist/blocks/bookings/vue/index.js +14 -0
  158. package/dist/blocks/bulk/index.d.ts +142 -0
  159. package/dist/blocks/bulk/index.js +154 -0
  160. package/dist/blocks/calendar/index.d.ts +20 -0
  161. package/dist/blocks/calendar/index.js +33 -0
  162. package/dist/blocks/calendar/react/index.d.ts +26 -0
  163. package/dist/blocks/calendar/react/index.js +58 -0
  164. package/dist/blocks/calendar/react/server.d.ts +6 -0
  165. package/dist/blocks/calendar/react/server.js +7 -0
  166. package/dist/blocks/calendar/solid/index.d.ts +13 -0
  167. package/dist/blocks/calendar/solid/index.js +14 -0
  168. package/dist/blocks/calendar/svelte/index.d.ts +13 -0
  169. package/dist/blocks/calendar/svelte/index.js +14 -0
  170. package/dist/blocks/calendar/vue/index.d.ts +13 -0
  171. package/dist/blocks/calendar/vue/index.js +14 -0
  172. package/dist/blocks/catalog/index.d.ts +224 -0
  173. package/dist/blocks/catalog/index.js +292 -0
  174. package/dist/blocks/collections/index.d.ts +184 -0
  175. package/dist/blocks/collections/index.js +208 -0
  176. package/dist/blocks/comments/index.d.ts +19 -166
  177. package/dist/blocks/comments/index.js +26 -207
  178. package/dist/blocks/comments/react/index.d.ts +27 -0
  179. package/dist/blocks/comments/react/index.js +45 -0
  180. package/dist/blocks/comments/react/server.d.ts +7 -0
  181. package/dist/blocks/comments/react/server.js +7 -0
  182. package/dist/blocks/comments/solid/index.d.ts +13 -0
  183. package/dist/blocks/comments/solid/index.js +14 -0
  184. package/dist/blocks/comments/svelte/index.d.ts +13 -0
  185. package/dist/blocks/comments/svelte/index.js +14 -0
  186. package/dist/blocks/comments/vue/index.d.ts +13 -0
  187. package/dist/blocks/comments/vue/index.js +14 -0
  188. package/dist/blocks/connectors/index.d.ts +21 -3
  189. package/dist/blocks/connectors/index.js +53 -18
  190. package/dist/blocks/custom-fields/index.d.ts +62 -0
  191. package/dist/blocks/custom-fields/index.js +85 -0
  192. package/dist/blocks/data-lifecycle/index.d.ts +114 -9
  193. package/dist/blocks/data-lifecycle/index.js +98 -12
  194. package/dist/blocks/deals/index.d.ts +262 -0
  195. package/dist/blocks/deals/index.js +380 -0
  196. package/dist/blocks/documents/index.d.ts +17 -0
  197. package/dist/blocks/documents/index.js +118 -0
  198. package/dist/blocks/domains/index.d.ts +117 -0
  199. package/dist/blocks/domains/index.js +118 -0
  200. package/dist/blocks/drive/index.d.ts +296 -0
  201. package/dist/blocks/drive/index.js +483 -0
  202. package/dist/blocks/employees/index.d.ts +205 -0
  203. package/dist/blocks/employees/index.js +289 -0
  204. package/dist/blocks/engagements/index.d.ts +125 -0
  205. package/dist/blocks/engagements/index.js +143 -0
  206. package/dist/blocks/entitlements/index.d.ts +40 -4
  207. package/dist/blocks/entitlements/index.js +14 -24
  208. package/dist/blocks/entitlements/react/index.d.ts +24 -0
  209. package/dist/blocks/entitlements/react/index.js +35 -0
  210. package/dist/blocks/entitlements/react/server.d.ts +6 -0
  211. package/dist/blocks/entitlements/react/server.js +7 -0
  212. package/dist/blocks/entitlements/solid/index.d.ts +13 -0
  213. package/dist/blocks/entitlements/solid/index.js +14 -0
  214. package/dist/blocks/entitlements/svelte/index.d.ts +13 -0
  215. package/dist/blocks/entitlements/svelte/index.js +14 -0
  216. package/dist/blocks/entitlements/vue/index.d.ts +13 -0
  217. package/dist/blocks/entitlements/vue/index.js +14 -0
  218. package/dist/blocks/flags/index.d.ts +61 -187
  219. package/dist/blocks/flags/index.js +65 -253
  220. package/dist/blocks/forms/index.d.ts +302 -0
  221. package/dist/blocks/forms/index.js +341 -0
  222. package/dist/blocks/forms/react/index.d.ts +16 -0
  223. package/dist/blocks/forms/react/index.js +25 -0
  224. package/dist/blocks/forms/react/server.d.ts +6 -0
  225. package/dist/blocks/forms/react/server.js +7 -0
  226. package/dist/blocks/forms/solid/index.d.ts +13 -0
  227. package/dist/blocks/forms/solid/index.js +14 -0
  228. package/dist/blocks/forms/svelte/index.d.ts +13 -0
  229. package/dist/blocks/forms/svelte/index.js +14 -0
  230. package/dist/blocks/forms/vue/index.d.ts +13 -0
  231. package/dist/blocks/forms/vue/index.js +14 -0
  232. package/dist/blocks/hiring/index.d.ts +154 -0
  233. package/dist/blocks/hiring/index.js +180 -0
  234. package/dist/blocks/identities/index.d.ts +83 -0
  235. package/dist/blocks/identities/index.js +103 -0
  236. package/dist/blocks/imports/index.d.ts +91 -0
  237. package/dist/blocks/imports/index.js +123 -0
  238. package/dist/blocks/inbox/index.d.ts +22 -3
  239. package/dist/blocks/inbox/index.js +77 -4
  240. package/dist/blocks/inbox/react/index.d.ts +3 -2
  241. package/dist/blocks/inbox/react/index.js +55 -199
  242. package/dist/blocks/inbox/react/server.d.ts +2 -1
  243. package/dist/blocks/inbox/solid/index.d.ts +27 -0
  244. package/dist/blocks/inbox/solid/index.js +32 -0
  245. package/dist/blocks/inbox/svelte/index.d.ts +27 -0
  246. package/dist/blocks/inbox/svelte/index.js +32 -0
  247. package/dist/blocks/inbox/vue/index.d.ts +27 -0
  248. package/dist/blocks/inbox/vue/index.js +32 -0
  249. package/dist/blocks/index.d.ts +9 -64
  250. package/dist/blocks/index.js +191 -55
  251. package/dist/blocks/inventory/index.d.ts +181 -0
  252. package/dist/blocks/inventory/index.js +219 -0
  253. package/dist/blocks/invoices/index.d.ts +154 -0
  254. package/dist/blocks/invoices/index.js +216 -0
  255. package/dist/blocks/jobs/index.d.ts +156 -33
  256. package/dist/blocks/jobs/index.js +675 -261
  257. package/dist/blocks/knowledge/index.d.ts +10 -3
  258. package/dist/blocks/knowledge/index.js +17 -3
  259. package/dist/blocks/leave/index.d.ts +241 -0
  260. package/dist/blocks/leave/index.js +209 -0
  261. package/dist/blocks/memory/index.d.ts +9 -4
  262. package/dist/blocks/memory/index.js +48 -12
  263. package/dist/blocks/metrics/index.d.ts +174 -0
  264. package/dist/blocks/metrics/index.js +217 -0
  265. package/dist/blocks/mfa/index.d.ts +7 -0
  266. package/dist/blocks/mfa/index.js +12 -0
  267. package/dist/blocks/mfa/react/index.d.ts +30 -0
  268. package/dist/blocks/mfa/react/index.js +45 -0
  269. package/dist/blocks/mfa/react/server.d.ts +9 -0
  270. package/dist/blocks/mfa/react/server.js +12 -0
  271. package/dist/blocks/mfa/solid/index.d.ts +20 -0
  272. package/dist/blocks/mfa/solid/index.js +23 -0
  273. package/dist/blocks/mfa/svelte/index.d.ts +20 -0
  274. package/dist/blocks/mfa/svelte/index.js +23 -0
  275. package/dist/blocks/mfa/vue/index.d.ts +20 -0
  276. package/dist/blocks/mfa/vue/index.js +23 -0
  277. package/dist/blocks/notifications/index.d.ts +342 -25
  278. package/dist/blocks/notifications/index.js +733 -104
  279. package/dist/blocks/notifications/react/index.d.ts +7 -32
  280. package/dist/blocks/notifications/react/index.js +23 -49
  281. package/dist/blocks/notifications/react/server.d.ts +2 -1
  282. package/dist/blocks/notifications/solid/index.d.ts +13 -0
  283. package/dist/blocks/notifications/solid/index.js +14 -0
  284. package/dist/blocks/notifications/svelte/index.d.ts +13 -0
  285. package/dist/blocks/notifications/svelte/index.js +14 -0
  286. package/dist/blocks/notifications/vue/index.d.ts +13 -0
  287. package/dist/blocks/notifications/vue/index.js +14 -0
  288. package/dist/blocks/number-sequences/index.d.ts +39 -0
  289. package/dist/blocks/number-sequences/index.js +38 -0
  290. package/dist/blocks/oauth-server/index.d.ts +228 -0
  291. package/dist/blocks/oauth-server/index.js +309 -0
  292. package/dist/blocks/onboarding/index.d.ts +8 -3
  293. package/dist/blocks/onboarding/index.js +17 -63
  294. package/dist/blocks/onboarding/react/index.d.ts +3 -12
  295. package/dist/blocks/onboarding/react/index.js +18 -60
  296. package/dist/blocks/onboarding/react/server.d.ts +2 -2
  297. package/dist/blocks/onboarding/react/server.js +2 -2
  298. package/dist/blocks/onboarding/solid/index.d.ts +13 -0
  299. package/dist/blocks/onboarding/solid/index.js +14 -0
  300. package/dist/blocks/onboarding/svelte/index.d.ts +13 -0
  301. package/dist/blocks/onboarding/svelte/index.js +14 -0
  302. package/dist/blocks/onboarding/vue/index.d.ts +13 -0
  303. package/dist/blocks/onboarding/vue/index.js +14 -0
  304. package/dist/blocks/orders/index.d.ts +264 -0
  305. package/dist/blocks/orders/index.js +589 -0
  306. package/dist/blocks/organizations/index.d.ts +31 -238
  307. package/dist/blocks/organizations/index.js +49 -392
  308. package/dist/blocks/organizations/react/index.d.ts +108 -0
  309. package/dist/blocks/organizations/react/index.js +113 -0
  310. package/dist/blocks/organizations/react/server.d.ts +11 -0
  311. package/dist/blocks/organizations/react/server.js +15 -0
  312. package/dist/blocks/organizations/solid/index.d.ts +34 -0
  313. package/dist/blocks/organizations/solid/index.js +32 -0
  314. package/dist/blocks/organizations/svelte/index.d.ts +34 -0
  315. package/dist/blocks/organizations/svelte/index.js +32 -0
  316. package/dist/blocks/organizations/vue/index.d.ts +34 -0
  317. package/dist/blocks/organizations/vue/index.js +32 -0
  318. package/dist/blocks/outbox/index.d.ts +12 -3
  319. package/dist/blocks/outbox/index.js +85 -46
  320. package/dist/blocks/parties/index.d.ts +181 -0
  321. package/dist/blocks/parties/index.js +258 -0
  322. package/dist/blocks/pipelines/index.d.ts +189 -0
  323. package/dist/blocks/pipelines/index.js +204 -0
  324. package/dist/blocks/profiles/index.d.ts +13 -8
  325. package/dist/blocks/profiles/index.js +19 -6
  326. package/dist/blocks/promotions/index.d.ts +125 -0
  327. package/dist/blocks/promotions/index.js +123 -0
  328. package/dist/blocks/push/index.d.ts +48 -28
  329. package/dist/blocks/push/index.js +45 -16
  330. package/dist/blocks/quotes/index.d.ts +152 -0
  331. package/dist/blocks/quotes/index.js +209 -0
  332. package/dist/blocks/rank/index.d.ts +71 -0
  333. package/dist/blocks/rank/index.js +53 -0
  334. package/dist/blocks/reactions/index.d.ts +18 -0
  335. package/dist/blocks/reactions/index.js +26 -0
  336. package/dist/blocks/reactions/react/index.d.ts +23 -0
  337. package/dist/blocks/reactions/react/index.js +46 -0
  338. package/dist/blocks/reactions/react/server.d.ts +6 -0
  339. package/dist/blocks/reactions/react/server.js +7 -0
  340. package/dist/blocks/reactions/solid/index.d.ts +13 -0
  341. package/dist/blocks/reactions/solid/index.js +14 -0
  342. package/dist/blocks/reactions/svelte/index.d.ts +13 -0
  343. package/dist/blocks/reactions/svelte/index.js +14 -0
  344. package/dist/blocks/reactions/vue/index.d.ts +13 -0
  345. package/dist/blocks/reactions/vue/index.js +14 -0
  346. package/dist/blocks/relations/index.d.ts +180 -0
  347. package/dist/blocks/relations/index.js +254 -0
  348. package/dist/blocks/reminders/index.d.ts +177 -0
  349. package/dist/blocks/reminders/index.js +171 -0
  350. package/dist/blocks/reviews/index.d.ts +148 -0
  351. package/dist/blocks/reviews/index.js +139 -0
  352. package/dist/blocks/rules/index.d.ts +103 -0
  353. package/dist/blocks/rules/index.js +54 -0
  354. package/dist/blocks/rules/react/index.d.ts +34 -0
  355. package/dist/blocks/rules/react/index.js +55 -0
  356. package/dist/blocks/rules/react/server.d.ts +6 -0
  357. package/dist/blocks/rules/react/server.js +7 -0
  358. package/dist/blocks/rules/solid/index.d.ts +13 -0
  359. package/dist/blocks/rules/solid/index.js +14 -0
  360. package/dist/blocks/rules/svelte/index.d.ts +13 -0
  361. package/dist/blocks/rules/svelte/index.js +14 -0
  362. package/dist/blocks/rules/vue/index.d.ts +13 -0
  363. package/dist/blocks/rules/vue/index.js +14 -0
  364. package/dist/blocks/saved-views/index.d.ts +17 -0
  365. package/dist/blocks/saved-views/index.js +29 -0
  366. package/dist/blocks/saved-views/react/index.d.ts +34 -0
  367. package/dist/blocks/saved-views/react/index.js +57 -0
  368. package/dist/blocks/saved-views/react/server.d.ts +7 -0
  369. package/dist/blocks/saved-views/react/server.js +7 -0
  370. package/dist/blocks/saved-views/solid/index.d.ts +13 -0
  371. package/dist/blocks/saved-views/solid/index.js +14 -0
  372. package/dist/blocks/saved-views/svelte/index.d.ts +13 -0
  373. package/dist/blocks/saved-views/svelte/index.js +14 -0
  374. package/dist/blocks/saved-views/vue/index.d.ts +13 -0
  375. package/dist/blocks/saved-views/vue/index.js +14 -0
  376. package/dist/blocks/search/index.d.ts +31 -0
  377. package/dist/blocks/search/index.js +61 -0
  378. package/dist/blocks/search/react/index.d.ts +36 -0
  379. package/dist/blocks/search/react/index.js +49 -0
  380. package/dist/blocks/search/react/server.d.ts +7 -0
  381. package/dist/blocks/search/react/server.js +8 -0
  382. package/dist/blocks/search/solid/index.d.ts +13 -0
  383. package/dist/blocks/search/solid/index.js +14 -0
  384. package/dist/blocks/search/svelte/index.d.ts +13 -0
  385. package/dist/blocks/search/svelte/index.js +14 -0
  386. package/dist/blocks/search/vue/index.d.ts +13 -0
  387. package/dist/blocks/search/vue/index.js +14 -0
  388. package/dist/blocks/service-principals/index.d.ts +126 -0
  389. package/dist/blocks/service-principals/index.js +107 -0
  390. package/dist/blocks/sessions/index.d.ts +7 -0
  391. package/dist/blocks/sessions/index.js +14 -0
  392. package/dist/blocks/sessions/react/index.d.ts +31 -0
  393. package/dist/blocks/sessions/react/index.js +51 -0
  394. package/dist/blocks/sessions/react/server.d.ts +9 -0
  395. package/dist/blocks/sessions/react/server.js +11 -0
  396. package/dist/blocks/sessions/solid/index.d.ts +20 -0
  397. package/dist/blocks/sessions/solid/index.js +23 -0
  398. package/dist/blocks/sessions/svelte/index.d.ts +20 -0
  399. package/dist/blocks/sessions/svelte/index.js +23 -0
  400. package/dist/blocks/sessions/vue/index.d.ts +20 -0
  401. package/dist/blocks/sessions/vue/index.js +23 -0
  402. package/dist/blocks/settings/index.d.ts +20 -86
  403. package/dist/blocks/settings/index.js +28 -102
  404. package/dist/blocks/settings/react/index.d.ts +25 -0
  405. package/dist/blocks/settings/react/index.js +37 -0
  406. package/dist/blocks/settings/react/server.d.ts +7 -0
  407. package/dist/blocks/settings/react/server.js +7 -0
  408. package/dist/blocks/settings/solid/index.d.ts +13 -0
  409. package/dist/blocks/settings/solid/index.js +14 -0
  410. package/dist/blocks/settings/svelte/index.d.ts +13 -0
  411. package/dist/blocks/settings/svelte/index.js +14 -0
  412. package/dist/blocks/settings/vue/index.d.ts +13 -0
  413. package/dist/blocks/settings/vue/index.js +14 -0
  414. package/dist/blocks/share-links/index.d.ts +99 -0
  415. package/dist/blocks/share-links/index.js +99 -0
  416. package/dist/blocks/shared-signals/index.d.ts +395 -0
  417. package/dist/blocks/shared-signals/index.js +880 -0
  418. package/dist/blocks/signing-keys/index.d.ts +29 -0
  419. package/dist/blocks/signing-keys/index.js +161 -0
  420. package/dist/blocks/sla/index.d.ts +114 -0
  421. package/dist/blocks/sla/index.js +122 -0
  422. package/dist/blocks/sso/index.d.ts +169 -147
  423. package/dist/blocks/sso/index.js +258 -321
  424. package/dist/blocks/state-machine/index.d.ts +105 -0
  425. package/dist/blocks/state-machine/index.js +116 -0
  426. package/dist/blocks/tags/index.d.ts +20 -0
  427. package/dist/blocks/tags/index.js +28 -0
  428. package/dist/blocks/tags/react/index.d.ts +28 -0
  429. package/dist/blocks/tags/react/index.js +47 -0
  430. package/dist/blocks/tags/react/server.d.ts +7 -0
  431. package/dist/blocks/tags/react/server.js +7 -0
  432. package/dist/blocks/tags/solid/index.d.ts +13 -0
  433. package/dist/blocks/tags/solid/index.js +14 -0
  434. package/dist/blocks/tags/svelte/index.d.ts +13 -0
  435. package/dist/blocks/tags/svelte/index.js +14 -0
  436. package/dist/blocks/tags/vue/index.d.ts +13 -0
  437. package/dist/blocks/tags/vue/index.js +14 -0
  438. package/dist/blocks/targets/index.d.ts +82 -0
  439. package/dist/blocks/targets/index.js +73 -0
  440. package/dist/blocks/teams/index.d.ts +61 -0
  441. package/dist/blocks/teams/index.js +83 -0
  442. package/dist/blocks/templates/index.d.ts +362 -0
  443. package/dist/blocks/templates/index.js +483 -0
  444. package/dist/blocks/time-tracking/index.d.ts +250 -0
  445. package/dist/blocks/time-tracking/index.js +317 -0
  446. package/dist/blocks/trash/index.d.ts +78 -0
  447. package/dist/blocks/trash/index.js +79 -0
  448. package/dist/blocks/undo/index.d.ts +9 -0
  449. package/dist/blocks/undo/index.js +14 -0
  450. package/dist/blocks/undo/react/index.d.ts +17 -0
  451. package/dist/blocks/undo/react/index.js +24 -0
  452. package/dist/blocks/undo/react/server.d.ts +7 -0
  453. package/dist/blocks/undo/react/server.js +7 -0
  454. package/dist/blocks/undo/solid/index.d.ts +13 -0
  455. package/dist/blocks/undo/solid/index.js +14 -0
  456. package/dist/blocks/undo/svelte/index.d.ts +13 -0
  457. package/dist/blocks/undo/svelte/index.js +14 -0
  458. package/dist/blocks/undo/vue/index.d.ts +13 -0
  459. package/dist/blocks/undo/vue/index.js +14 -0
  460. package/dist/blocks/usage/index.d.ts +10 -4
  461. package/dist/blocks/usage/index.js +16 -233
  462. package/dist/blocks/usage/react/index.d.ts +23 -0
  463. package/dist/blocks/usage/react/index.js +38 -0
  464. package/dist/blocks/usage/react/server.d.ts +7 -0
  465. package/dist/blocks/usage/react/server.js +7 -0
  466. package/dist/blocks/usage/solid/index.d.ts +13 -0
  467. package/dist/blocks/usage/solid/index.js +14 -0
  468. package/dist/blocks/usage/svelte/index.d.ts +13 -0
  469. package/dist/blocks/usage/svelte/index.js +14 -0
  470. package/dist/blocks/usage/vue/index.d.ts +13 -0
  471. package/dist/blocks/usage/vue/index.js +14 -0
  472. package/dist/blocks/versions/index.d.ts +165 -0
  473. package/dist/blocks/versions/index.js +283 -0
  474. package/dist/blocks/waitlist/index.d.ts +57 -19
  475. package/dist/blocks/waitlist/index.js +46 -12
  476. package/dist/blocks/webhooks/index.d.ts +269 -137
  477. package/dist/blocks/webhooks/index.js +752 -179
  478. package/dist/blocks/work-items/index.d.ts +208 -0
  479. package/dist/blocks/work-items/index.js +305 -0
  480. package/dist/blocks/workflow-builder/index.d.ts +26 -6
  481. package/dist/blocks/workflow-builder/index.js +30 -5
  482. package/dist/blocks/workflow-builder/react/index.d.ts +4 -19
  483. package/dist/blocks/workflow-builder/react/index.js +45 -89
  484. package/dist/blocks/workflow-builder/solid/index.d.ts +20 -0
  485. package/dist/blocks/workflow-builder/solid/index.js +23 -0
  486. package/dist/blocks/workflow-builder/svelte/index.d.ts +20 -0
  487. package/dist/blocks/workflow-builder/svelte/index.js +23 -0
  488. package/dist/blocks/workflow-builder/vue/index.d.ts +20 -0
  489. package/dist/blocks/workflow-builder/vue/index.js +23 -0
  490. package/dist/blocks/workflows/index.d.ts +20 -3
  491. package/dist/blocks/workflows/index.js +27 -3
  492. package/dist/blocks/workflows/react/index.d.ts +5 -20
  493. package/dist/blocks/workflows/react/index.js +41 -113
  494. package/dist/blocks/workflows/solid/index.d.ts +20 -0
  495. package/dist/blocks/workflows/solid/index.js +23 -0
  496. package/dist/blocks/workflows/svelte/index.d.ts +20 -0
  497. package/dist/blocks/workflows/svelte/index.js +23 -0
  498. package/dist/blocks/workflows/vue/index.d.ts +20 -0
  499. package/dist/blocks/workflows/vue/index.js +23 -0
  500. package/dist/blocks-D2WQ63PI.js +84 -0
  501. package/dist/bookings-0XnhHNLM.js +181 -0
  502. package/dist/build-Cm0T5MVG.js +1815 -0
  503. package/dist/build-Cx08LOT7.js +689 -0
  504. package/dist/calendar-DcFrpSOy.js +801 -0
  505. package/dist/channel-D-LHCY11.d.ts +78 -0
  506. package/dist/channels-C-GCoNLd.js +114 -0
  507. package/dist/chat-sdk/index.d.ts +131 -7
  508. package/dist/chat-sdk/index.js +154 -6
  509. package/dist/chat-sdk/react/index.d.ts +2 -1
  510. package/dist/chat-sdk/react/index.js +1 -2
  511. package/dist/chat-sdk/react/server.d.ts +2 -1
  512. package/dist/chat-sdk/react/server.js +1 -2
  513. package/dist/cli/add-B0zoJUYX.js +651 -0
  514. package/dist/cli/add-Bd5M6uEZ.js +75 -0
  515. package/dist/cli/add-CT6p5psO.js +1 -0
  516. package/dist/cli/adopt-C9jl8z0h.js +1 -0
  517. package/dist/cli/adopt-CebmlHL-.js +393 -0
  518. package/dist/cli/agent-CCt_aXpJ.js +176 -0
  519. package/dist/cli/apply-Dxk8AUNU.js +302 -0
  520. package/dist/cli/bin.js +40 -20
  521. package/dist/cli/blocks-Bzz326nn.js +1 -0
  522. package/dist/cli/blocks-Dq25D80b.js +124 -0
  523. package/dist/cli/cache-Cx6qlRDR.js +502 -0
  524. package/dist/cli/catalog-Di15TkM2.js +187 -0
  525. package/dist/cli/codemod-woL4cVe0.js +985 -0
  526. package/dist/cli/command-CK9Cn8HV.js +836 -0
  527. package/dist/cli/completion-BO5UK6bG.js +1 -0
  528. package/dist/cli/completion-CWoDmFZr.js +205 -0
  529. package/dist/cli/completion-J3dqnNoW.js +30 -0
  530. package/dist/cli/config-C1d-mbUA.js +1 -0
  531. package/dist/cli/config-CLHpTk9Y.js +1421 -0
  532. package/dist/cli/config-MuKY9kUj.js +39 -0
  533. package/dist/cli/config-edit-Ct1lXe8a.js +603 -0
  534. package/dist/cli/db-DT1bGB02.js +78 -0
  535. package/dist/cli/design-edit-B-WsnhUF.js +175 -0
  536. package/dist/cli/detect-DYDUBLU4.js +84 -0
  537. package/dist/cli/dist-D_VbPAMR.js +129 -0
  538. package/dist/cli/dist-DuiMMRbJ.js +1112 -0
  539. package/dist/cli/doctor-SGw36h1D.js +3806 -0
  540. package/dist/cli/emit-ZAYeh4Yn.js +1042 -0
  541. package/dist/cli/env-CVXvJoLP.js +142 -0
  542. package/dist/cli/env-D3gZ-OHj.js +1 -0
  543. package/dist/cli/env-DJ4ZaJpe.js +1 -0
  544. package/dist/cli/env-DMw_MBe5.js +996 -0
  545. package/dist/cli/errors-Caiz_0so.js +98 -0
  546. package/dist/cli/fastest-levenshtein-dhRRvrM2.js +120 -0
  547. package/dist/cli/files-DDvAwTko.js +963 -0
  548. package/dist/cli/gen-B344S1Oy.js +304 -0
  549. package/dist/cli/guards-CUlDNYZs.js +8 -0
  550. package/dist/cli/index.d.ts +258 -129
  551. package/dist/cli/index.js +13 -10
  552. package/dist/cli/init-B1dL-RZL.js +393 -0
  553. package/dist/cli/introspect-BPcFi8ow.js +51 -0
  554. package/dist/cli/io-BiPX-_J1.js +37 -0
  555. package/dist/cli/jsonc-C8M0EhHB.js +1 -0
  556. package/dist/cli/keys-jsxCNJdz.js +106 -0
  557. package/dist/cli/metadata-CxBZo4KM.js +138 -0
  558. package/dist/cli/module-migration-YFFdWC5X.js +592 -0
  559. package/dist/cli/moved-D9OT_Uyy.js +152 -0
  560. package/dist/cli/parse-DE59XyWt.js +170 -0
  561. package/dist/cli/preset-DmcC4nWE.js +129 -0
  562. package/dist/cli/prompts-Bvg_DBpe.js +1137 -0
  563. package/dist/cli/redact-PjNswZOs.js +35 -0
  564. package/dist/cli/rolldown-runtime-kJ_i4yPo.js +26 -0
  565. package/dist/cli/run-CM_2g6KQ.js +684 -0
  566. package/dist/cli/run-DaHfUUO9.js +1539 -0
  567. package/dist/cli/scaffold-CFdDq36-.js +898 -0
  568. package/dist/cli/scaffold-Dsjr7sOT.js +1 -0
  569. package/dist/cli/seed-DldDdXWO.js +113 -0
  570. package/dist/cli/seed-DtRFysBe.js +1 -0
  571. package/dist/cli/shell-Btv_4Yhe.js +10 -0
  572. package/dist/cli/skills-v34NDb2D.js +121 -0
  573. package/dist/cli/snapshot-DAxLi4hO.js +347 -0
  574. package/dist/cli/source-args-0I9zylYy.js +47 -0
  575. package/dist/cli/spec-CaaSOYZS.js +7501 -0
  576. package/dist/cli/spec-De0cfceR.js +1 -0
  577. package/dist/cli/sql-0I1EQ3JG.js +2 -0
  578. package/dist/cli/sql-DDLWwzh9.js +326 -0
  579. package/dist/cli/stack-status-CRanl-CN.js +456 -0
  580. package/dist/cli/style-2JfIPVMQ.js +29 -0
  581. package/dist/cli/supabase-toml-DjLgBYEo.js +1153 -0
  582. package/dist/cli/sync-DFx-6t5n.js +88 -0
  583. package/dist/cli/topics-GJuIDwlY.js +30 -0
  584. package/dist/cli/trace-VbdO6bcN.js +7 -0
  585. package/dist/cli/typegen--TfvOPLh.js +494 -0
  586. package/dist/cli/typegen-version-BNBPI4Eu.js +9 -0
  587. package/dist/cli/validate-BfWNKvxy.js +7522 -0
  588. package/dist/cli/version-DNRW4DAP.js +4 -0
  589. package/dist/cli/write-BS6F3Yvz.js +180 -0
  590. package/dist/client/index.d.ts +7 -4
  591. package/dist/client/index.js +152 -6
  592. package/dist/client/native/index.d.ts +71 -4
  593. package/dist/client/native/index.js +65 -6
  594. package/dist/client-01MAuqzW.js +137 -0
  595. package/dist/client-B7QVIrJS.d.ts +263 -0
  596. package/dist/client-B9CqzgPO.js +75 -0
  597. package/dist/client-BAcILZOf.d.ts +122 -0
  598. package/dist/client-BOT2KVIp.js +128 -0
  599. package/dist/client-BUGIS__1.js +1051 -0
  600. package/dist/client-BVZtq_rQ.d.ts +34 -0
  601. package/dist/client-BYaOGCOG.js +84 -0
  602. package/dist/client-BfgwocyT.js +155 -0
  603. package/dist/client-BpS8a6Fm.js +51 -0
  604. package/dist/client-BxnLb9bz.d.ts +58 -0
  605. package/dist/client-BzCv4kKE.js +65 -0
  606. package/dist/client-C-2ajnhM.js +89 -0
  607. package/dist/client-C5mUEb2n.js +55 -0
  608. package/dist/client-C9QrWrnt.js +209 -0
  609. package/dist/client-CFdMJ1h9.d.ts +277 -0
  610. package/dist/client-CHmjaI0j.d.ts +103 -0
  611. package/dist/client-CWs3X4g1.js +120 -0
  612. package/dist/client-Cdedx_lw.js +438 -0
  613. package/dist/client-CiGjS6us.js +169 -0
  614. package/dist/client-CilSKXNu.js +288 -0
  615. package/dist/client-ClZ0D-if.d.ts +162 -0
  616. package/dist/client-Cmensu7l.d.ts +419 -0
  617. package/dist/client-Co6BPmvr.d.ts +108 -0
  618. package/dist/client-CoVGPi0c.js +133 -0
  619. package/dist/client-CvITjt-9.js +310 -0
  620. package/dist/client-CzI4QpG3.d.ts +131 -0
  621. package/dist/client-D5CZ2a34.d.ts +455 -0
  622. package/dist/client-DAHsEOVV.d.ts +155 -0
  623. package/dist/client-DG7FwgZD.js +104 -0
  624. package/dist/client-DIrCmOXz.d.ts +157 -0
  625. package/dist/client-DNq8xYb-.js +52 -0
  626. package/dist/client-DdfSIZ3M.d.ts +107 -0
  627. package/dist/client-DjTRlN3a.d.ts +68 -0
  628. package/dist/client-Ezlbskjq.js +60 -0
  629. package/dist/client-LLmgiCwJ.d.ts +135 -0
  630. package/dist/client-Lx3mlvKO.d.ts +100 -0
  631. package/dist/client-PGRk3DGz.js +98 -0
  632. package/dist/client-Tc47rlSe.d.ts +350 -0
  633. package/dist/client-VvY0K3wr.d.ts +59 -0
  634. package/dist/client-WAdEBBrH.d.ts +65 -0
  635. package/dist/client-WHeWTNVL.d.ts +130 -0
  636. package/dist/client-WgrPIHH-.js +213 -0
  637. package/dist/client-ZTtSV3l8.js +40 -0
  638. package/dist/client-b2_GjzzD.js +438 -0
  639. package/dist/client-ckXfdy1k.js +38 -0
  640. package/dist/client-e-hFkLUf.d.ts +34 -0
  641. package/dist/client-hyP_nS5R.d.ts +218 -0
  642. package/dist/client-i8glKhxh.js +67 -0
  643. package/dist/client-iDLLvGR4.d.ts +52 -0
  644. package/dist/client-pxjbgOz6.js +376 -0
  645. package/dist/client-xkSCp9hN.d.ts +101 -0
  646. package/dist/client-ysNShuJZ.d.ts +39 -0
  647. package/dist/cloud-event-5rCEzIgK.d.ts +64 -0
  648. package/dist/codecs-Bm46sVxr.d.ts +215 -0
  649. package/dist/codecs-YAekuQ08.js +358 -0
  650. package/dist/codegen-DeoSt1mi.d.ts +1571 -0
  651. package/dist/comments-D7sbd0xG.js +230 -0
  652. package/dist/commerce/index.d.ts +211 -0
  653. package/dist/commerce/index.js +517 -0
  654. package/dist/compiler-BVxepAY0.d.ts +14 -0
  655. package/dist/compose-Djntdacs.js +53 -0
  656. package/dist/composite-M6zPs1Xm.js +130 -0
  657. package/dist/composite-djtGy6bz.d.ts +67 -0
  658. package/dist/config/index.d.ts +7 -5
  659. package/dist/config/index.js +7 -4
  660. package/dist/config-BA1K4OPk.js +557 -0
  661. package/dist/config-C4MozTD7.js +3892 -0
  662. package/dist/connector-Cp8CqssJ.d.ts +107 -0
  663. package/dist/connectors-CjD-R2ks.d.ts +141 -0
  664. package/dist/context-1sSWcd7_.d.ts +365 -0
  665. package/dist/context-B8_p3MXo.js +11 -0
  666. package/dist/context-BDDgjoxz.js +41 -0
  667. package/dist/context-C-bHOtoD.js +5 -0
  668. package/dist/context-D6ZMKc2L.js +19 -0
  669. package/dist/context-wDKxSl9x.js +9 -0
  670. package/dist/controller-D6NyNrlZ.js +79 -0
  671. package/dist/controller-D845qKh2.d.ts +46 -0
  672. package/dist/credentials/index.d.ts +15 -5
  673. package/dist/credentials/index.js +16 -8
  674. package/dist/cron-CUaKTjWC.js +145 -0
  675. package/dist/cron-route-CoL-By8Z.js +24 -0
  676. package/dist/csv-CVfXqaAu.js +89 -0
  677. package/dist/csv-D3eKxV1T.d.ts +28 -0
  678. package/dist/define-B2ln373W.js +1896 -0
  679. package/dist/define-DxHHbNEb.d.ts +1005 -0
  680. package/dist/define-block-B6Gjs57G.js +52 -0
  681. package/dist/define-block-CLZMEFeK.d.ts +256 -0
  682. package/dist/delegation-Dt8hMJWu.js +140 -0
  683. package/dist/delivery-B1mKaOen.js +30 -0
  684. package/dist/delivery-BeHgwS3k.d.ts +69 -0
  685. package/dist/documents-CWn2mtYf.d.ts +96 -0
  686. package/dist/edge/index.d.ts +16 -14
  687. package/dist/edge/index.js +24 -18
  688. package/dist/elysia/index.d.ts +1 -1
  689. package/dist/elysia/index.js +2 -2
  690. package/dist/email-BcmbIWOX.d.ts +42 -0
  691. package/dist/embeddings-C2S14foD.d.ts +78 -0
  692. package/dist/embeddings-CVeOoufZ.js +128 -0
  693. package/dist/ended-nIdGCHxk.d.ts +70 -0
  694. package/dist/entitlements-BvU5dLpW.js +45 -0
  695. package/dist/entitlements-CbzCKalR.d.ts +53 -0
  696. package/dist/env/index.d.ts +1 -1
  697. package/dist/env/index.js +3 -3
  698. package/dist/envelope-CHYk5MXU.js +90 -0
  699. package/dist/errors-8i6tSICm.js +301 -0
  700. package/dist/errors-PIpcoe4z.js +44 -0
  701. package/dist/escape-like-AUEPn-C5.d.ts +15 -0
  702. package/dist/eve/index.d.ts +5 -5
  703. package/dist/eve/index.js +9 -9
  704. package/dist/eve-DUF70Vgi.d.ts +151 -0
  705. package/dist/event-calendar-DJXXMJ3x.d.ts +217 -0
  706. package/dist/event-map-Dy2vKHai.js +19 -0
  707. package/dist/events/index.d.ts +4 -4
  708. package/dist/events/index.js +10 -7
  709. package/dist/events-CTreRrgP.d.ts +800 -0
  710. package/dist/events-xbpHkcK9.js +82 -0
  711. package/dist/executor-BBHgjUJu.d.ts +39 -0
  712. package/dist/executor-BINiCFNp.d.ts +95 -0
  713. package/dist/executor-BXSHYyW2.js +735 -0
  714. package/dist/executor-D1kYY5BA.js +206 -0
  715. package/dist/executor-D3K3tycZ.js +147 -0
  716. package/dist/executor-DKrZr3AC.d.ts +174 -0
  717. package/dist/executor-DoE-5iM8.d.ts +272 -0
  718. package/dist/expo/index.d.ts +4 -4
  719. package/dist/expo/index.js +6 -6
  720. package/dist/expo-sqlite/index.d.ts +3 -3
  721. package/dist/expo-sqlite/index.js +2 -2
  722. package/dist/field-errors-CWXN_h_E.d.ts +113 -0
  723. package/dist/field-formats-Cif5gr7c.js +102 -0
  724. package/dist/field-formats-DCvOQlOy.d.ts +39 -0
  725. package/dist/filter-evaluate-C0ULNfS7.js +214 -0
  726. package/dist/filter-evaluate-CjcFq0RT.d.ts +34 -0
  727. package/dist/filter-query-B3lhckKX.js +518 -0
  728. package/dist/filter-query-BKmRYrTE.d.ts +121 -0
  729. package/dist/flags-D_D1jAHB.d.ts +230 -0
  730. package/dist/flags-XAOsdNAc.js +279 -0
  731. package/dist/flags-sdk/index.d.ts +143 -0
  732. package/dist/flags-sdk/index.js +175 -0
  733. package/dist/form-definition-sagoefQr.d.ts +95 -0
  734. package/dist/format-CNwSjXUU.d.ts +70 -0
  735. package/dist/framework-DG5Bv39u.d.ts +26 -0
  736. package/dist/framework-INbjMZX1.js +51 -0
  737. package/dist/function-contract-B4c0XuTU.d.ts +21 -0
  738. package/dist/function-contract-DmkBg19r.js +5 -0
  739. package/dist/gateway-Cup00l0w.d.ts +109 -0
  740. package/dist/gateway-options-ClvvfuuU.d.ts +29 -0
  741. package/dist/gateway-options-DcLcWL5_.js +27 -0
  742. package/dist/graph-Cs28bOlK.js +360 -0
  743. package/dist/groups-CxonH3u5.js +16 -0
  744. package/dist/h3/index.d.ts +7 -3
  745. package/dist/h3/index.js +3 -3
  746. package/dist/h3/v1/index.d.ts +1 -1
  747. package/dist/h3/v1/index.js +2 -2
  748. package/dist/hono/index.d.ts +24 -10
  749. package/dist/hono/index.js +50 -22
  750. package/dist/http-BF-V0CUF.js +25 -0
  751. package/dist/impersonation-CDeCzZP6.js +62 -0
  752. package/dist/impersonation-D5chOkrO.d.ts +25 -0
  753. package/dist/inbox-3ql4phyr.d.ts +400 -0
  754. package/dist/index-BIi8i6BO.d.ts +97 -0
  755. package/dist/index-BkzNUPId.d.ts +131 -0
  756. package/dist/index-BlqrGvb3.d.ts +227 -0
  757. package/dist/index-Brhm22eL.d.ts +138 -0
  758. package/dist/index-Bvw9r94Q.d.ts +245 -0
  759. package/dist/index-CETRk4YO.d.ts +82 -0
  760. package/dist/index-CrZitvSC.d.ts +258 -0
  761. package/dist/index-DfVXx4Ia.d.ts +202 -0
  762. package/dist/index-DygICr8c.d.ts +206 -0
  763. package/dist/index-Ej8XQ9w9.d.ts +58 -0
  764. package/dist/index-jhqhynmh.d.ts +58 -0
  765. package/dist/index.d.ts +15 -15
  766. package/dist/index.js +15 -14
  767. package/dist/iso4217-A8ev-CNW.js +176 -0
  768. package/dist/json-schema-CpYINXG8.js +548 -0
  769. package/dist/jws-35a8VhFV.d.ts +60 -0
  770. package/dist/jws-milwSg7E.js +191 -0
  771. package/dist/kit-D5S7KNFe.d.ts +66 -0
  772. package/dist/kit-MUK34-ZG.js +104 -0
  773. package/dist/knowledge-BXQ2-V0a.d.ts +187 -0
  774. package/dist/knowledge-CJ_Mm3ic.js +272 -0
  775. package/dist/lint/index.js +9 -9
  776. package/dist/list/index.d.ts +4 -2
  777. package/dist/list/index.js +4 -2
  778. package/dist/list-query-CBXNfJt4.js +549 -0
  779. package/dist/list-query-PvP3pPGQ.d.ts +194 -0
  780. package/dist/live-DwDreq1n.js +239 -0
  781. package/dist/mcp/index.d.ts +24 -7
  782. package/dist/mcp/index.js +76 -55
  783. package/dist/mcp/sdk/index.d.ts +6 -6
  784. package/dist/mcp/sdk/index.js +7 -7
  785. package/dist/messages-Cx4ttLJJ.js +493 -0
  786. package/dist/metric-definition-95HFoW1V.d.ts +70 -0
  787. package/dist/metric-definition-BjxVn4R5.js +117 -0
  788. package/dist/mfa-DtflCXEt.d.ts +30 -0
  789. package/dist/model-lUafmeBQ.d.ts +311 -0
  790. package/dist/model-messages-CTu-6kBu.js +206 -0
  791. package/dist/money-95Rff2vT.js +185 -0
  792. package/dist/money-DFpWzQvk.d.ts +76 -0
  793. package/dist/money-codec-C_-K5ZUU.js +41 -0
  794. package/dist/nestjs/index.d.ts +2 -2
  795. package/dist/nestjs/index.js +2 -2
  796. package/dist/next/index.d.ts +26 -16
  797. package/dist/next/index.js +17 -16
  798. package/dist/node/index.d.ts +2 -2
  799. package/dist/node/index.js +3 -3
  800. package/dist/nuxt/index.d.ts +2 -2
  801. package/dist/nuxt/index.js +3 -2
  802. package/dist/onboarding-BZvLLPaY.js +68 -0
  803. package/dist/openapi/index.d.ts +3 -3
  804. package/dist/openapi/index.js +2 -2
  805. package/dist/operations-C9-UcReN.d.ts +6 -0
  806. package/dist/operations-CsIfMED7.js +29 -0
  807. package/dist/optional-peer-Dx8TaYXw.js +29 -0
  808. package/dist/options-B0FcEKtH.js +5 -0
  809. package/dist/options-B5BU2Yg7.js +11 -0
  810. package/dist/options-B5woz53h.js +5 -0
  811. package/dist/options-B7EJaOX-.js +5 -0
  812. package/dist/options-B9q8CROT.js +9 -0
  813. package/dist/options-BA6jV6py.js +10 -0
  814. package/dist/options-BAW2ZlZ8.js +8 -0
  815. package/dist/options-BMjcVuaI.js +82 -0
  816. package/dist/options-BOOEzor9.js +5 -0
  817. package/dist/options-BQ07tTYr.js +11 -0
  818. package/dist/options-BZsoPJGX.js +5 -0
  819. package/dist/options-BesyRBnM.js +16 -0
  820. package/dist/options-Bf96aVk5.js +10 -0
  821. package/dist/options-BlOPivzq.js +8 -0
  822. package/dist/options-Blg8lAkz.js +9 -0
  823. package/dist/options-Bn4cu0gt.js +5 -0
  824. package/dist/options-BnoJOwXK.js +8 -0
  825. package/dist/options-Bp7sgKvl.js +30 -0
  826. package/dist/options-BqO9GYig.js +311 -0
  827. package/dist/options-BxcFLL1G.js +8 -0
  828. package/dist/options-C1HR4UZd.js +13 -0
  829. package/dist/options-C239TLRF.js +14 -0
  830. package/dist/options-C2HesT4A.js +9 -0
  831. package/dist/options-C3EzJATk.js +10 -0
  832. package/dist/options-C3hZ1fbC.js +10 -0
  833. package/dist/options-C6rEL6U5.js +8 -0
  834. package/dist/options-CAzVf-1T.js +8 -0
  835. package/dist/options-CGKSUFUq.js +5 -0
  836. package/dist/options-CGjGE8xS.js +12 -0
  837. package/dist/options-CK5WiFwG.js +11 -0
  838. package/dist/options-CN7PHkhU.js +8 -0
  839. package/dist/options-CTZNpb2n.js +5 -0
  840. package/dist/options-CUqQ9pm7.js +9 -0
  841. package/dist/options-CVSWgZpY.js +8 -0
  842. package/dist/options-CXFz0xxS.js +8 -0
  843. package/dist/options-CZk_fbbg.js +9 -0
  844. package/dist/options-C_pb1Nd3.js +5 -0
  845. package/dist/options-CbSOj53r.d.ts +52 -0
  846. package/dist/options-ChD15QxJ.js +9 -0
  847. package/dist/options-CkScQRJR.js +12 -0
  848. package/dist/options-CljDnQt2.js +25 -0
  849. package/dist/options-CmraJhd9.js +5 -0
  850. package/dist/options-CoX6VKGb.js +8 -0
  851. package/dist/options-CrC78Tee.js +5 -0
  852. package/dist/options-Ctac2R0Q.js +11 -0
  853. package/dist/options-CyD7OObW.js +17 -0
  854. package/dist/options-D1blDihM.js +9 -0
  855. package/dist/options-D2Gd6VfS.js +8 -0
  856. package/dist/options-D2d1fFuw.js +11 -0
  857. package/dist/options-D40CQzji.js +8 -0
  858. package/dist/options-D7f2VKzj.js +25 -0
  859. package/dist/options-DARkpk2P.js +8 -0
  860. package/dist/options-DCduTMST.js +17 -0
  861. package/dist/options-DDzggjN7.js +8 -0
  862. package/dist/options-DMR68VAC.js +5 -0
  863. package/dist/options-DNKyN5uq.js +20 -0
  864. package/dist/options-DTDxFT6J.js +13 -0
  865. package/dist/options-DWpz3V3F.js +8 -0
  866. package/dist/options-DXqcJyOP.js +10 -0
  867. package/dist/options-DYBQ973I.js +8 -0
  868. package/dist/options-Dh4wu9Ks.js +15 -0
  869. package/dist/options-Dmg1Da9P.js +25 -0
  870. package/dist/options-DsUgamiy.js +5 -0
  871. package/dist/options-EsUh744F.js +13 -0
  872. package/dist/options-Fz6xqu-b.js +5 -0
  873. package/dist/options-HSv8R6h5.js +13 -0
  874. package/dist/options-I8zVkB_y.js +8 -0
  875. package/dist/options-MHhjOoWz.js +5 -0
  876. package/dist/options-MLxMkd5B.js +11 -0
  877. package/dist/options-OJ5zmgr8.js +10 -0
  878. package/dist/options-QKP9FFcK.js +8 -0
  879. package/dist/options-SViK_2x2.js +12 -0
  880. package/dist/options-XgfTctbI.js +5 -0
  881. package/dist/options-_9arpsX9.js +11 -0
  882. package/dist/options-eBPsk4WI.js +11 -0
  883. package/dist/options-kLKILdIu.js +10 -0
  884. package/dist/options-n22NK3PL.js +8 -0
  885. package/dist/options-oeAq4Ho5.js +12 -0
  886. package/dist/options-qU8vgxhO.js +18 -0
  887. package/dist/options-vXMBEWSH.js +5 -0
  888. package/dist/options-wFnK3qWl.js +9 -0
  889. package/dist/options-xVAy3UsV.js +9 -0
  890. package/dist/organizations-Cw7om8uk.js +398 -0
  891. package/dist/orpc/index.d.ts +26 -10
  892. package/dist/orpc/index.js +54 -33
  893. package/dist/otel/index.d.ts +3 -3
  894. package/dist/otel/index.js +42 -7
  895. package/dist/outbox-BTeqjbum.d.ts +181 -0
  896. package/dist/overlay/index.d.ts +1 -1
  897. package/dist/overlay/index.js +3 -3
  898. package/dist/payments-h45bswA-.js +16 -0
  899. package/dist/pg-error-BV_X8Isq.js +26 -0
  900. package/dist/plugin-CDLJRFFg.d.ts +190 -0
  901. package/dist/plugins/actor/index.d.ts +1 -1
  902. package/dist/plugins/actor/index.js +1 -1
  903. package/dist/plugins/rules/index.d.ts +2 -2
  904. package/dist/plugins/rules/index.js +2 -2
  905. package/dist/plugins/soft-delete/index.d.ts +3 -3
  906. package/dist/plugins/soft-delete/index.js +4 -4
  907. package/dist/plugins/tenant/index.d.ts +4 -3
  908. package/dist/plugins/tenant/index.js +3 -3
  909. package/dist/plugins/timestamps/index.d.ts +1 -1
  910. package/dist/plugins/timestamps/index.js +1 -1
  911. package/dist/plugins/validation/index.d.ts +2 -2
  912. package/dist/plugins/validation/index.js +3 -3
  913. package/dist/pool-CwOCsX9e.d.ts +114 -0
  914. package/dist/pool-errors-GMjlCN0d.js +27 -0
  915. package/dist/ports-Ca63W4cW.d.ts +285 -0
  916. package/dist/ports-DAdQyjZz.d.ts +86 -0
  917. package/dist/ports-DGK3KTDH.js +133 -0
  918. package/dist/postgres/index.d.ts +28 -6
  919. package/dist/postgres/index.js +54 -23
  920. package/dist/postgrest-Cw9Bs5gm.d.ts +53 -0
  921. package/dist/powersync/index.d.ts +4 -4
  922. package/dist/powersync/index.js +4 -4
  923. package/dist/powersync/react/index.d.ts +8 -3
  924. package/dist/powersync/react/index.js +11 -3
  925. package/dist/preset/index.d.ts +352 -0
  926. package/dist/preset/index.js +564 -0
  927. package/dist/problem-CEjyhV5T.d.ts +76 -0
  928. package/dist/problem-pIiL3WbE.js +159 -0
  929. package/dist/provider-9gBq9W6k.d.ts +113 -0
  930. package/dist/provider-DKh2xFZb.js +57 -0
  931. package/dist/push-token-D6REHMMw.js +16 -0
  932. package/dist/push-token-asrmi7-6.d.ts +24 -0
  933. package/dist/query/index.d.ts +2 -2
  934. package/dist/range-DwpWe8e7.js +7 -0
  935. package/dist/range-p5V4rBhZ.d.ts +8 -0
  936. package/dist/rank-keys-DcPMt_Jk.js +60 -0
  937. package/dist/rank-result-DS8IoLup.js +18 -0
  938. package/dist/rank-result-Dngpt2n5.d.ts +14 -0
  939. package/dist/rate-limit--QSiFA6D.js +325 -0
  940. package/dist/rate-limit-BtbddDnE.js +49 -0
  941. package/dist/rate-limit-C88MEAOm.d.ts +41 -0
  942. package/dist/ratelimit-headers-Bsxx0Tj2.js +62 -0
  943. package/dist/react/index.d.ts +9 -9
  944. package/dist/react/index.js +3 -4
  945. package/dist/react/native/index.d.ts +1 -1
  946. package/dist/react/native/index.js +2 -2
  947. package/dist/react/server.d.ts +10 -10
  948. package/dist/react/server.js +3 -3
  949. package/dist/react/session.d.ts +2 -2
  950. package/dist/react-CKXUkwPx.js +410 -0
  951. package/dist/react-controller-Xn-IU44p.js +40 -0
  952. package/dist/react-env-Cc7Vf6eb.js +13 -0
  953. package/dist/react-router/index.d.ts +6 -6
  954. package/dist/react-router/index.js +7 -7
  955. package/dist/read-set-GEb-i0On.js +314 -0
  956. package/dist/realtime/index.d.ts +8 -4
  957. package/dist/realtime/index.js +5 -327
  958. package/dist/realtime-status-D2dw1hOE.js +12 -0
  959. package/dist/realtime-status-DcsO00Gw.d.ts +8 -0
  960. package/dist/refusal-br4Ma9Cf.js +61 -0
  961. package/dist/refusal-oD3ISM9h.d.ts +18 -0
  962. package/dist/replicas-BvIL4_jL.js +94 -0
  963. package/dist/resolve-CAR9oaKW.js +869 -0
  964. package/dist/resolve-w9EpHzuM.d.ts +266 -0
  965. package/dist/resource-B4ka8dDH.d.ts +106 -0
  966. package/dist/resource-C8r5xGqY.js +463 -0
  967. package/dist/resource-DO4gbVi5.js +91 -0
  968. package/dist/resource-execute-D0yQ-8WR.d.ts +12 -0
  969. package/dist/resource-types-D2vEQVXI.d.ts +141 -0
  970. package/dist/resources-BklF-rjz.d.ts +7 -0
  971. package/dist/resources-BlZdLsWQ.js +64 -0
  972. package/dist/respond-C7I8kLK_.d.ts +93 -0
  973. package/dist/respond-DdhZ9Wbn.js +95 -0
  974. package/dist/result-BlgnMB0H.js +128 -0
  975. package/dist/result-Cj3yWhjH.d.ts +298 -0
  976. package/dist/rrule-zBh3CA1r.js +290 -0
  977. package/dist/rules-B0-3Iosu.js +261 -0
  978. package/dist/run-watch-CQRdpy-f.js +53 -0
  979. package/dist/sales-lines-BAk8In-Z.js +41 -0
  980. package/dist/sales-lines-C6gafAwg.d.ts +28 -0
  981. package/dist/sales-shared-DAAGwQwN.d.ts +8 -0
  982. package/dist/sales-shared-SblIgCgI.js +22 -0
  983. package/dist/scope-DgWjuXUw.js +90 -0
  984. package/dist/search-B6h03cAx.js +106 -0
  985. package/dist/search-BtoWY6n_.js +9 -0
  986. package/dist/server/index.d.ts +157 -51
  987. package/dist/server/index.js +295 -20
  988. package/dist/server-types-OohhIQb2.d.ts +737 -0
  989. package/dist/session-DiWHtYrO.d.ts +95 -0
  990. package/dist/settings-BXFn9zpS.js +90 -0
  991. package/dist/shared-BmMcMoW9.js +89 -0
  992. package/dist/shared-DbO3Dfms.js +14 -0
  993. package/dist/shared-as0EG51f.js +60 -0
  994. package/dist/sign-in-D0xN6E_l.js +360 -0
  995. package/dist/signatures-B41ApWXA.js +145 -0
  996. package/dist/signatures-BMdJ7neI.d.ts +43 -0
  997. package/dist/signers-CXt_wA9S.d.ts +385 -0
  998. package/dist/signing-keys-Bq9mMCTh.d.ts +90 -0
  999. package/dist/solid/index.d.ts +8 -8
  1000. package/dist/solid/index.js +3 -8
  1001. package/dist/solid-controller-DLsmrczT.js +33 -0
  1002. package/dist/solid-controller-DqlvYFZa.d.ts +11 -0
  1003. package/dist/solid-start/index.d.ts +8 -12
  1004. package/dist/solid-start/index.js +8 -7
  1005. package/dist/spec/index.d.ts +25 -5
  1006. package/dist/spec/index.js +37 -4
  1007. package/dist/spec-pins-Dqpml2dZ.d.ts +84 -0
  1008. package/dist/spec-pins-S4PymRxp.js +60 -0
  1009. package/dist/sql/index.d.ts +189 -28
  1010. package/dist/sql/index.js +74328 -26488
  1011. package/dist/sql-DJrXG-3Z.js +422 -0
  1012. package/dist/sso-BDva_-4y.js +217 -0
  1013. package/dist/sso-BN0LnMqE.d.ts +131 -0
  1014. package/dist/ssr/index.d.ts +5 -6
  1015. package/dist/ssr/index.js +4 -4
  1016. package/dist/standard-B5fe2gnW.js +25 -0
  1017. package/dist/standard-C3_AAF3g.d.ts +7 -0
  1018. package/dist/stats-D6vkb89f.js +1128 -0
  1019. package/dist/storage/index.d.ts +3 -3
  1020. package/dist/storage/index.js +14 -10
  1021. package/dist/storage-api-Cx-1iWBd.d.ts +582 -0
  1022. package/dist/store-B5qYKsTh.d.ts +68 -0
  1023. package/dist/streams/index.d.ts +4 -4
  1024. package/dist/streams/index.js +4 -4
  1025. package/dist/streams/redis/index.d.ts +1 -1
  1026. package/dist/streams/redis/index.js +4 -4
  1027. package/dist/stripe/index.d.ts +16 -0
  1028. package/dist/stripe/index.js +14 -0
  1029. package/dist/stripe-NVcNOhHy.d.ts +140 -0
  1030. package/dist/stripe-XZrSmDTf.js +32 -0
  1031. package/dist/subject-readers-DiePmaYP.js +46 -0
  1032. package/dist/subject-readers-fxP5wu0s.d.ts +21 -0
  1033. package/dist/subjects-z8VWA_lF.d.ts +69 -0
  1034. package/dist/subscribers-Cq--DL1E.js +34 -0
  1035. package/dist/supabase-mcp-DomZ-amK.js +28 -0
  1036. package/dist/support-BsKkvA92.js +522 -0
  1037. package/dist/support-view-BbcZR7Io.d.ts +17 -0
  1038. package/dist/svelte/index.d.ts +7 -7
  1039. package/dist/svelte/index.js +2 -2
  1040. package/dist/svelte-controller-CDAujo-_.js +50 -0
  1041. package/dist/svelte-controller-DxxHEHxD.d.ts +10 -0
  1042. package/dist/sveltekit/index.d.ts +11 -13
  1043. package/dist/sveltekit/index.js +9 -9
  1044. package/dist/table-schema-pQlER3jj.js +283 -0
  1045. package/dist/tags-Dw8vKkcI.d.ts +30 -0
  1046. package/dist/tags-PaG0Ns_9.js +84 -0
  1047. package/dist/tanstack-db/index.d.ts +2 -2
  1048. package/dist/tanstack-db/index.js +1 -1
  1049. package/dist/tanstack-db/supabase/index.d.ts +5 -6
  1050. package/dist/tanstack-db/supabase/index.js +180 -9
  1051. package/dist/tanstack-start/index.d.ts +7 -7
  1052. package/dist/tanstack-start/index.js +6 -6
  1053. package/dist/tax-DDZUB_oc.d.ts +273 -0
  1054. package/dist/tax-D_kSCdWU.js +140 -0
  1055. package/dist/tee-Bsisfd7t.js +101 -0
  1056. package/dist/template-DdgYjIZ5.js +123 -0
  1057. package/dist/temporal-CB5Fpo5d.js +79 -0
  1058. package/dist/temporal-required-DqRzr7i0.js +20 -0
  1059. package/dist/tenant-B-fiItlJ.js +27 -0
  1060. package/dist/tenant-DdmVhsff.d.ts +17 -0
  1061. package/dist/tenant-naming-Bsj3Uvap.js +27 -0
  1062. package/dist/testing/index.d.ts +235 -32
  1063. package/dist/testing/index.js +1132 -32
  1064. package/dist/timing-BMCWgpdZ.js +92 -0
  1065. package/dist/topic-ByDz9edV.js +542 -0
  1066. package/dist/topic-cMS7UtM1.d.ts +359 -0
  1067. package/dist/types-6oiy6rIa.d.ts +205 -0
  1068. package/dist/types-CdP0z5tS.d.ts +564 -0
  1069. package/dist/types-D0W4fnsc.d.ts +162 -0
  1070. package/dist/types-R6syp1el.js +29 -0
  1071. package/dist/types-YfwpIE-d.d.ts +357 -0
  1072. package/dist/types-pNY_UpDs.d.ts +240 -0
  1073. package/dist/types-vaoP9S9_.d.ts +635 -0
  1074. package/dist/undo-CEGIRkPA.js +44 -0
  1075. package/dist/undo-DGo0skyO.d.ts +43 -0
  1076. package/dist/usage-CdlfuS3i.js +250 -0
  1077. package/dist/usage-DM2rzczj.d.ts +202 -0
  1078. package/dist/vault-tOkPLnMB.d.ts +50 -0
  1079. package/dist/vercel-connect/index.d.ts +1 -1
  1080. package/dist/vercel-connect/index.js +4 -4
  1081. package/dist/verify-D63A2ALE.d.ts +142 -0
  1082. package/dist/verify-EQcC3Khp.js +126 -0
  1083. package/dist/version-D87ZteKy.js +4 -0
  1084. package/dist/view-DZ63nqwt.js +105 -0
  1085. package/dist/view-Dv0A949a.d.ts +90 -0
  1086. package/dist/vue/index.d.ts +8 -8
  1087. package/dist/vue/index.js +3 -16
  1088. package/dist/vue-controller-C9tFzqAc.js +32 -0
  1089. package/dist/vue-controller-HPfMTDa2.d.ts +11 -0
  1090. package/dist/watch-DDuWYv0Y.d.ts +84 -0
  1091. package/dist/watch-DT_B3CnJ.js +139 -0
  1092. package/dist/watch-topic-EFpOIIDE.d.ts +28 -0
  1093. package/dist/watch-topic-miuymrli.js +57 -0
  1094. package/dist/wire-DEY0ajW9.js +45 -0
  1095. package/dist/workflow-builder-OrglbXUh.js +681 -0
  1096. package/dist/workflow-sdk/builder/index.d.ts +46 -15
  1097. package/dist/workflow-sdk/builder/index.js +69 -21
  1098. package/dist/workflow-sdk/index.d.ts +75 -2
  1099. package/dist/workflow-sdk/index.js +83 -3
  1100. package/dist/workflow-sdk/world/index.d.ts +29 -4
  1101. package/dist/workflow-sdk/world/index.js +137 -59
  1102. package/dist/workflow-sdk-BZ6qsRlY.js +243 -0
  1103. package/dist/workflow-sdk-q8cLwW1K.d.ts +161 -0
  1104. package/dist/workflow-sdk-world-DPMdBfzn.js +2103 -0
  1105. package/dist/workflows-C-OvZpeg.js +282 -0
  1106. package/dist/workflows-DFQeXDAI.d.ts +243 -0
  1107. package/dist/yjs/index.d.ts +67 -0
  1108. package/dist/yjs/index.js +212 -0
  1109. package/package.json +788 -46
  1110. package/schemas/cli-commands-v1.json +220 -0
  1111. package/schemas/cli-result-v1.json +138 -0
  1112. package/schemas/config-v1.json +4147 -726
  1113. package/schemas/doctor-report-v1.json +23 -0
  1114. package/schemas/snapshot-v2.json +271 -0
  1115. package/skills/better-supabase/SKILL.md +11 -4
  1116. package/skills/better-supabase/references/plugins.md +2 -2
  1117. package/skills/better-supabase/references/ui-recipes.md +18652 -0
  1118. package/skills/better-supabase-api/SKILL.md +14 -14
  1119. package/skills/better-supabase-api/references/adapters.md +12 -2
  1120. package/skills/better-supabase-api/references/ai.md +4 -4
  1121. package/skills/better-supabase-api/references/expo.md +1 -1
  1122. package/skills/better-supabase-api/references/powersync.md +1 -1
  1123. package/skills/better-supabase-api/references/streams-credentials.md +8 -5
  1124. package/skills/better-supabase-auth/SKILL.md +18 -11
  1125. package/skills/better-supabase-auth/references/authorization-providers.md +5 -5
  1126. package/skills/better-supabase-testing/SKILL.md +2 -2
  1127. package/testing/act-cases.json +370 -0
  1128. package/dist/access-sql-CrSbK1q-.js +0 -181
  1129. package/dist/actor-CQTlc1Hh.d.ts +0 -43
  1130. package/dist/adapter-CN45ibbV.js +0 -1691
  1131. package/dist/agents-BY_LQXtQ.d.ts +0 -94
  1132. package/dist/ai-cache-Dfgk8nBT.js +0 -81
  1133. package/dist/ai-cache-DrUMMgp6.d.ts +0 -64
  1134. package/dist/ai-chat-CVLRWbtS.js +0 -744
  1135. package/dist/ai-chat-DXkMy74O.d.ts +0 -590
  1136. package/dist/ai-files-CioLu5du.js +0 -320
  1137. package/dist/ai-tasks-BRQ6iQLc.d.ts +0 -131
  1138. package/dist/announcements-Bouy0Ski.d.ts +0 -72
  1139. package/dist/announcements-p_BFofiR.js +0 -107
  1140. package/dist/api-Dnf2q-Ht.d.ts +0 -370
  1141. package/dist/api-DtHFC037.js +0 -676
  1142. package/dist/api-keys-C8BlF3L2.d.ts +0 -156
  1143. package/dist/assistant-DBlFDZsi.d.ts +0 -147
  1144. package/dist/attributes-5dYul0u0.js +0 -13
  1145. package/dist/authorization-BFCqamMs.d.ts +0 -172
  1146. package/dist/authorizer-ayxUDXXP.js +0 -126
  1147. package/dist/base64-D2gsioCY.js +0 -42
  1148. package/dist/before-route-CnR0C0Jr.js +0 -30
  1149. package/dist/bind-ButSzrHe.js +0 -97
  1150. package/dist/bind-CQ5mPyX1.d.ts +0 -62
  1151. package/dist/block-events-DTxU5tfr.js +0 -91
  1152. package/dist/block-fields-CroxUuF2.js +0 -49
  1153. package/dist/block-fields-D1pfrcIY.d.ts +0 -31
  1154. package/dist/block-helpers-C0Xj8War.d.ts +0 -37
  1155. package/dist/block-helpers-Cy3pB96I.js +0 -222
  1156. package/dist/block-hooks-BPNMIlLl.js +0 -114
  1157. package/dist/block-hooks-DaOVC7SC.d.ts +0 -107
  1158. package/dist/block-transport-bAKh-dGc.js +0 -85
  1159. package/dist/block-transport-inD4fFq-.d.ts +0 -70
  1160. package/dist/build-hPwk3_X5.js +0 -1296
  1161. package/dist/build-meLuYGri.js +0 -689
  1162. package/dist/channel-_2Mx1Oyu.d.ts +0 -70
  1163. package/dist/channels-CkgQ_X60.js +0 -114
  1164. package/dist/cli/add-1dc5wM5k.js +0 -69
  1165. package/dist/cli/bin.d.ts +0 -1
  1166. package/dist/cli/cache-CIfA-jBV.js +0 -483
  1167. package/dist/cli/codemod-JVlTQQG2.js +0 -491
  1168. package/dist/cli/command-DV-StG1x.js +0 -507
  1169. package/dist/cli/config-C2Pz2_4A.js +0 -52
  1170. package/dist/cli/config-DpbF8ML3.js +0 -2
  1171. package/dist/cli/config-M-WzL9O2.js +0 -1175
  1172. package/dist/cli/db-BkcfOlyB.js +0 -53
  1173. package/dist/cli/diff-D1jGdb3Y.js +0 -752
  1174. package/dist/cli/dist-DBPdlPYK.js +0 -1112
  1175. package/dist/cli/dist-DRAVaE6w.js +0 -842
  1176. package/dist/cli/dist-DreZ24Sz.js +0 -129
  1177. package/dist/cli/doctor-VcDtuusV.js +0 -3686
  1178. package/dist/cli/emit-BHHfwUoT.js +0 -1136
  1179. package/dist/cli/env-B--LMhEe.js +0 -514
  1180. package/dist/cli/env-vzBG90Um.js +0 -2
  1181. package/dist/cli/env-zHJtMIBo.js +0 -116
  1182. package/dist/cli/errors-CqTLXe2M.js +0 -72
  1183. package/dist/cli/fastest-levenshtein-CF7BCi9l.js +0 -120
  1184. package/dist/cli/files-BVupXPIC.js +0 -34
  1185. package/dist/cli/gen-DmVj3u4L.js +0 -322
  1186. package/dist/cli/glue-C1UE8gQN.js +0 -468
  1187. package/dist/cli/init-CVZ3s5kl.js +0 -258
  1188. package/dist/cli/introspect-BToGNfm-.js +0 -81
  1189. package/dist/cli/io-CFzJVJ68.js +0 -37
  1190. package/dist/cli/jsonc-BUniUpOk.js +0 -2
  1191. package/dist/cli/keys-CJhtIxJ3.js +0 -85
  1192. package/dist/cli/metadata-DSRKCaf-.js +0 -133
  1193. package/dist/cli/openapi-DWa4Ir1q.js +0 -60
  1194. package/dist/cli/project-DZRaBaY7.js +0 -75
  1195. package/dist/cli/prompts-BdeVmVpg.js +0 -2
  1196. package/dist/cli/prompts-DZJB1nTw.js +0 -1142
  1197. package/dist/cli/read-sets-DjJrm8Wj.js +0 -223
  1198. package/dist/cli/rolldown-runtime-CMFfr-1z.js +0 -26
  1199. package/dist/cli/run-DA6_lg3w.js +0 -389
  1200. package/dist/cli/run-DuN1MX-7.js +0 -705
  1201. package/dist/cli/scaffold-5DenHSxF.js +0 -292
  1202. package/dist/cli/scaffold-CwQUMFRb.js +0 -2
  1203. package/dist/cli/seed-CzBmrGON.js +0 -96
  1204. package/dist/cli/seed-DOmit9Hq.js +0 -2
  1205. package/dist/cli/skills-CnO8QFS7.js +0 -139
  1206. package/dist/cli/snapshot-Bstk6ulj.js +0 -287
  1207. package/dist/cli/source-args-BYfq6imV.js +0 -31
  1208. package/dist/cli/spec-CzosTYm3.js +0 -7438
  1209. package/dist/cli/spec-T_0Bcyw7.js +0 -2
  1210. package/dist/cli/sql-BKOOQAX3.js +0 -517
  1211. package/dist/cli/sql-DJrNDxQm.js +0 -3
  1212. package/dist/cli/sql-layout-D6cphHT3.js +0 -69
  1213. package/dist/cli/style-CB3vxgh0.js +0 -29
  1214. package/dist/cli/supabase-toml-B-bIukQF.js +0 -1095
  1215. package/dist/cli/typegen-Demi5-VQ.js +0 -486
  1216. package/dist/cli/typegen-version-DeFbtzYI.js +0 -8
  1217. package/dist/cli/validate-Ca13ktgz.js +0 -7522
  1218. package/dist/cli/version-B4k0aUxS.js +0 -4
  1219. package/dist/client-wxeTQFtB.js +0 -310
  1220. package/dist/cloud-event-Dune0KI7.d.ts +0 -64
  1221. package/dist/compiler-V1qvcST1.d.ts +0 -14
  1222. package/dist/compose-BHej1acw.js +0 -53
  1223. package/dist/composite-CWAJTRBF.d.ts +0 -146
  1224. package/dist/composite-zTe0TCqj.js +0 -130
  1225. package/dist/config-DlKvtt95.js +0 -540
  1226. package/dist/connector-CySQEFcW.d.ts +0 -107
  1227. package/dist/connectors--PGhmiu0.d.ts +0 -120
  1228. package/dist/context-DsV2SueA.d.ts +0 -246
  1229. package/dist/context-nPDvQ-Zl.js +0 -41
  1230. package/dist/cron-D25Ukpxy.js +0 -145
  1231. package/dist/cron-route-D2AN9SA1.js +0 -24
  1232. package/dist/csv-BZnHA1Py.js +0 -25
  1233. package/dist/define-CFQcvM20.js +0 -1949
  1234. package/dist/define-DmcfoNXB.d.ts +0 -1005
  1235. package/dist/embeddings-4ZvFzjsU.js +0 -127
  1236. package/dist/embeddings-B4vhS-dY.d.ts +0 -68
  1237. package/dist/ended-CcvcRqEd.d.ts +0 -69
  1238. package/dist/entitlements-BYFf0Cdh.js +0 -24
  1239. package/dist/entitlements-Ds8qoYZ-.d.ts +0 -51
  1240. package/dist/envelope-DqnYGRw7.js +0 -47
  1241. package/dist/errors-2M6CKMP4.js +0 -271
  1242. package/dist/errors-rZ7VIqp6.js +0 -44
  1243. package/dist/escape-like-DDWoHzh_.d.ts +0 -15
  1244. package/dist/eve-CoAIcCkq.d.ts +0 -151
  1245. package/dist/events-D1BOCll8.d.ts +0 -551
  1246. package/dist/executor-B-fD7DLt.js +0 -735
  1247. package/dist/executor-B_Hfobee.js +0 -162
  1248. package/dist/executor-C-R4pucm.js +0 -83
  1249. package/dist/executor-CpxLPCiz.d.ts +0 -36
  1250. package/dist/executor-DfEtf0cq.d.ts +0 -164
  1251. package/dist/executor-Drzu3dBK.d.ts +0 -261
  1252. package/dist/executor-ngjKL_Pe.d.ts +0 -30
  1253. package/dist/field-errors-DIe9XYWL.d.ts +0 -109
  1254. package/dist/format-DTXdu8ya.d.ts +0 -70
  1255. package/dist/framework-148t1m3C.d.ts +0 -25
  1256. package/dist/framework-3ey3QmrO.js +0 -51
  1257. package/dist/function-contract-BcZenXMO.d.ts +0 -8
  1258. package/dist/gateway-S9vicgeo.d.ts +0 -130
  1259. package/dist/graph-BGyLLFLX.js +0 -265
  1260. package/dist/hooks-Bhza9Hnr.js +0 -277
  1261. package/dist/http-sbmBe5d2.js +0 -25
  1262. package/dist/impersonation-DcqaTBHx.js +0 -148
  1263. package/dist/inbox-Cd1KCEBL.d.ts +0 -384
  1264. package/dist/index-B72Rvv_j.d.ts +0 -89
  1265. package/dist/index-BCHR4Ucl.d.ts +0 -300
  1266. package/dist/index-BUK7jUzR.d.ts +0 -82
  1267. package/dist/index-Ba1SI-uO.d.ts +0 -1331
  1268. package/dist/index-BfxOaOYs.d.ts +0 -245
  1269. package/dist/index-CicIyqOe.d.ts +0 -55
  1270. package/dist/index-D69h4QqD.d.ts +0 -74
  1271. package/dist/index-DG2SUXDQ.d.ts +0 -58
  1272. package/dist/index-DoNVLHOU.d.ts +0 -206
  1273. package/dist/index-R274XFlg.d.ts +0 -138
  1274. package/dist/index-_4R4b01v.d.ts +0 -257
  1275. package/dist/json-schema-CT4tvrkA.js +0 -548
  1276. package/dist/kit-BhHr9T9v.js +0 -104
  1277. package/dist/kit-W99LCPBS.d.ts +0 -66
  1278. package/dist/knowledge-CAReFpRA.d.ts +0 -176
  1279. package/dist/knowledge-DnHtb64A.js +0 -256
  1280. package/dist/list-query-D3JQeEL7.d.ts +0 -164
  1281. package/dist/list-query-gl808ac1.js +0 -459
  1282. package/dist/live-CTAZQkwl.js +0 -257
  1283. package/dist/messages-CJoHHCWT.js +0 -514
  1284. package/dist/mfa-SZc9YYyb.d.ts +0 -54
  1285. package/dist/model-OgBxvk3N.d.ts +0 -300
  1286. package/dist/model-messages-Cxw_Up4f.js +0 -206
  1287. package/dist/modules-DksjZyMW.js +0 -77
  1288. package/dist/modules-DpPwzC7E.d.ts +0 -192
  1289. package/dist/onboarding-LZvlK1P4.d.ts +0 -62
  1290. package/dist/optional-peer-D1pi-skw.js +0 -24
  1291. package/dist/outbox-DZfAvfzC.d.ts +0 -161
  1292. package/dist/plugin-CPK2HsbY.d.ts +0 -190
  1293. package/dist/pool-gkhbGp2E.d.ts +0 -89
  1294. package/dist/postgrest-BUqLag2Q.d.ts +0 -53
  1295. package/dist/problem-CJvFeGu7.js +0 -126
  1296. package/dist/problem-TvGdxO1t.d.ts +0 -73
  1297. package/dist/provider-DxRTex4x.js +0 -57
  1298. package/dist/provider-ib9wzUDz.d.ts +0 -113
  1299. package/dist/rate-limit-Bw7HgmFj.js +0 -260
  1300. package/dist/react-Bmpo59D7.js +0 -409
  1301. package/dist/react-topic-seAWjL3_.js +0 -38
  1302. package/dist/read-set-DAeWhqPf.js +0 -314
  1303. package/dist/refusal-CFI8-5nf.d.ts +0 -18
  1304. package/dist/refusal-K78A1Vmq.js +0 -61
  1305. package/dist/replicas-CwrYp5Zj.js +0 -94
  1306. package/dist/resolve-Bvgf3ut_.js +0 -786
  1307. package/dist/resolve-MxXVWyhd.d.ts +0 -173
  1308. package/dist/resource--vTrBe6I.d.ts +0 -103
  1309. package/dist/resource-BqNqlYg9.js +0 -91
  1310. package/dist/resource-DA811u_4.js +0 -463
  1311. package/dist/resource-execute-rbKvuCsY.d.ts +0 -12
  1312. package/dist/resource-types-CqB6GWGT.d.ts +0 -141
  1313. package/dist/resources-BVYPnuLo.js +0 -56
  1314. package/dist/resources-DZSk8tXJ.d.ts +0 -7
  1315. package/dist/respond-Cw-zanCm.d.ts +0 -93
  1316. package/dist/respond-volM3ByS.js +0 -91
  1317. package/dist/result-BchM1XZn.d.ts +0 -288
  1318. package/dist/result-DEqHCMKP.js +0 -128
  1319. package/dist/scope-CDHcS7dE.js +0 -90
  1320. package/dist/search-CUWCRYKL.js +0 -9
  1321. package/dist/server-types-CrAmZ8jv.d.ts +0 -614
  1322. package/dist/session-ChiXDZdZ.d.ts +0 -72
  1323. package/dist/shared-CBxosKK3.js +0 -75
  1324. package/dist/shared-DHjhfRdV.js +0 -60
  1325. package/dist/shared-DTneRoxi.js +0 -14
  1326. package/dist/sign-in-D_yoP0PF.js +0 -86
  1327. package/dist/signatures-BRS_p3WD.d.ts +0 -34
  1328. package/dist/signatures-DsWv_bYR.js +0 -103
  1329. package/dist/signers-cpdmZYrv.d.ts +0 -166
  1330. package/dist/spec-pins-CwzDY25w.d.ts +0 -44
  1331. package/dist/spec-pins-DsLfUH7l.js +0 -40
  1332. package/dist/sql-CwuqaQ4Y.js +0 -388
  1333. package/dist/standard-DkzZUneg.js +0 -25
  1334. package/dist/standard-lmkbOtPB.d.ts +0 -7
  1335. package/dist/stats-DhU78Ctf.js +0 -1127
  1336. package/dist/storage-api-CB7Zl1Ci.d.ts +0 -582
  1337. package/dist/store-DsIYEBnv.d.ts +0 -68
  1338. package/dist/stripe-D04h-QBT.d.ts +0 -136
  1339. package/dist/stripe-v-Y2lmop.js +0 -32
  1340. package/dist/supabase-mcp-Cpn5A4i-.js +0 -28
  1341. package/dist/support-D1pFFouF.js +0 -350
  1342. package/dist/support-view-scqMgtOo.d.ts +0 -17
  1343. package/dist/table-schema-htM_SbCW.js +0 -286
  1344. package/dist/tags-BO9LjtWG.d.ts +0 -30
  1345. package/dist/tee-Cb98Vn3b.js +0 -101
  1346. package/dist/template-lPVh-EwW.js +0 -123
  1347. package/dist/temporal-BJGitm-h.js +0 -79
  1348. package/dist/temporal-required-BtynQtM-.js +0 -20
  1349. package/dist/tenant-CM368LXb.d.ts +0 -17
  1350. package/dist/tenant-I1TEZ_BX.js +0 -27
  1351. package/dist/timing-CyTQPubY.js +0 -92
  1352. package/dist/types-6cYK9pbJ.js +0 -29
  1353. package/dist/types-Bb_4-vdW.d.ts +0 -220
  1354. package/dist/types-CD6yCDx3.d.ts +0 -359
  1355. package/dist/types-CbOUc5IH.d.ts +0 -156
  1356. package/dist/types-CoE5Zwy4.d.ts +0 -348
  1357. package/dist/types-DSJ3-m9X.d.ts +0 -192
  1358. package/dist/types-D__3EN0q.d.ts +0 -425
  1359. package/dist/usage-D0NNUFfr.d.ts +0 -177
  1360. package/dist/vault-BpmApxxW.d.ts +0 -50
  1361. package/dist/verify-C91Wyp40.d.ts +0 -142
  1362. package/dist/verify-CJbYfADA.js +0 -124
  1363. package/dist/version-Cq8gfDbd.js +0 -4
  1364. package/dist/view-D5ryq3gz.js +0 -99
  1365. package/dist/view-TpXEUcVN.d.ts +0 -87
  1366. package/dist/watch-BcvtAHOd.js +0 -122
  1367. package/dist/watch-COzRWvVN.d.ts +0 -74
  1368. package/dist/wire-Df3EWkG8.js +0 -45
  1369. package/dist/workflow-builder-CHqHpAVt.js +0 -399
  1370. package/dist/workflow-sdk-C2WJ_G2O.js +0 -173
  1371. package/dist/workflow-sdk-DTZyrvNo.d.ts +0 -98
  1372. package/dist/workflow-sdk-world-CMV1ahFW.js +0 -1399
  1373. package/dist/workflows-CcpCBfIe.d.ts +0 -185
  1374. package/dist/workflows-IvxzG2cl.js +0 -217
@@ -0,0 +1,1815 @@
1
+ import { r as isPlainObject } from "./clone-dN9XOL1K.js";
2
+ import { n as isRecord } from "./guards-6F2bCtQR.js";
3
+ import { s as problemType, t as PROBLEM_CONTENT_TYPE } from "./problem-pIiL3WbE.js";
4
+ import { t as buildJsonSchema } from "./json-schema-CpYINXG8.js";
5
+ import { r as dataschemaOf } from "./cloud-event-CTh9Sr5w.js";
6
+ import { n as planResource } from "./resource-DO4gbVi5.js";
7
+ import { n as pageQuery, r as pageSchema } from "./resource-schemas-BJ518zFH.js";
8
+ import { ROW_EVENT_TYPES } from "./events/index.js";
9
+ import { t as topicStatus } from "./realtime-status-D2dw1hOE.js";
10
+ //#region src/spec/merge.ts
11
+ /** Escapes a key for a JSON Pointer (RFC 6901). */
12
+ function pointerToken(key) {
13
+ return key.replaceAll("~", "~0").replaceAll("/", "~1");
14
+ }
15
+ /**
16
+ * Deep merge: objects merge key by key, anything else (arrays included)
17
+ * is replaced by the patch. `onConflict` hears each replaced leaf whose value
18
+ * differs, with its JSON Pointer. Neither input is changed.
19
+ */
20
+ function mergeJson(base, patch, onConflict, pointer = "") {
21
+ if (!isPlainObject(base) || !isPlainObject(patch)) {
22
+ if (onConflict && base !== void 0 && JSON.stringify(base) !== JSON.stringify(patch)) onConflict(pointer);
23
+ return patch;
24
+ }
25
+ const out = { ...base };
26
+ for (const [key, value] of Object.entries(patch)) out[key] = Object.hasOwn(base, key) ? mergeJson(base[key], value, onConflict, `${pointer}/${pointerToken(key)}`) : value;
27
+ return out;
28
+ }
29
+ //#endregion
30
+ //#region src/spec/schemas.ts
31
+ /** `customer_tags` to `CustomerTags`. */
32
+ function pascal(value) {
33
+ return value.replaceAll(/(^|[_\-.\s])(\w)/g, (_, _sep, char) => char.toUpperCase());
34
+ }
35
+ const schemaRef = (name) => ({ $ref: `#/components/schemas/${name}` });
36
+ const tableDefs = /* @__PURE__ */ new WeakMap();
37
+ /**
38
+ * The 2020-12 `$defs` for every table (`customersRow`, `customersInsert`),
39
+ * built once per metadata object and JSON column config.
40
+ */
41
+ function tableSchemas(meta, json = {}) {
42
+ let byJson = tableDefs.get(meta);
43
+ if (!byJson) {
44
+ byJson = /* @__PURE__ */ new Map();
45
+ tableDefs.set(meta, byJson);
46
+ }
47
+ const key = JSON.stringify(json);
48
+ let defs = byJson.get(key);
49
+ if (!defs) {
50
+ defs = buildJsonSchema({
51
+ meta,
52
+ config: { json }
53
+ })["$defs"];
54
+ byJson.set(key, defs);
55
+ }
56
+ return defs;
57
+ }
58
+ const converted = /* @__PURE__ */ new WeakMap();
59
+ function nameOf(schema) {
60
+ const id = schema["$id"] ?? schema["id"];
61
+ if (typeof id !== "string" || id === "") return;
62
+ return (id.split(/[/#]/u).findLast((part) => part !== "") ?? id).replace(/\.(?:schema\.)?json$/u, "");
63
+ }
64
+ /**
65
+ * Converts a Standard Schema through Standard JSON Schema (2020-12), or
66
+ * `undefined` when the library does not implement it. The schema's `$id`,
67
+ * `id` and `$schema` are lifted out: the id becomes the component name.
68
+ */
69
+ function convertStandard(schema, direction) {
70
+ let cache = converted.get(schema);
71
+ if (!cache) {
72
+ cache = /* @__PURE__ */ new Map();
73
+ converted.set(schema, cache);
74
+ }
75
+ const hit = cache.get(direction);
76
+ if (hit !== void 0) return hit ?? void 0;
77
+ const convert = schema["~standard"].jsonSchema?.[direction];
78
+ if (typeof convert !== "function") {
79
+ cache.set(direction, null);
80
+ return;
81
+ }
82
+ const raw = convert({ target: "draft-2020-12" });
83
+ const name = nameOf(raw);
84
+ const { $schema: _schema, $id: _id, id: _plainId, ...rest } = raw;
85
+ const result = {
86
+ schema: rest,
87
+ ...name ? { name } : {}
88
+ };
89
+ cache.set(direction, result);
90
+ return result;
91
+ }
92
+ //#endregion
93
+ //#region src/spec/presets.ts
94
+ /** JSON Schema for RFC 9457 Problem Details as better-supabase sends them. */
95
+ const PROBLEM_SCHEMA = {
96
+ type: "object",
97
+ required: [
98
+ "type",
99
+ "title",
100
+ "status"
101
+ ],
102
+ properties: {
103
+ type: {
104
+ type: "string",
105
+ format: "uri-reference",
106
+ examples: [problemType("not_found").type]
107
+ },
108
+ title: { type: "string" },
109
+ status: {
110
+ type: "integer",
111
+ minimum: 100,
112
+ maximum: 599
113
+ },
114
+ detail: { type: "string" },
115
+ instance: { type: "string" },
116
+ kind: { type: "string" },
117
+ code: { type: "string" },
118
+ hint: { type: "string" },
119
+ constraint: { type: "string" },
120
+ column: { type: "string" },
121
+ columns: {
122
+ type: "array",
123
+ items: { type: "string" }
124
+ },
125
+ required: {
126
+ type: "string",
127
+ enum: ["aal1", "aal2"]
128
+ },
129
+ scopes: {
130
+ type: "array",
131
+ items: { type: "string" }
132
+ },
133
+ permission: { type: "string" },
134
+ approval: {
135
+ type: "object",
136
+ required: ["id"],
137
+ properties: { id: { type: "string" } }
138
+ },
139
+ issues: {
140
+ type: "array",
141
+ items: {
142
+ type: "object",
143
+ required: ["message"],
144
+ properties: {
145
+ message: { type: "string" },
146
+ path: {
147
+ type: "array",
148
+ items: { type: ["string", "integer"] }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ };
155
+ /** The default error responses: today's Problem Details answers, 400 to 422. */
156
+ const DEFAULT_ERRORS = [
157
+ {
158
+ name: "BadRequest",
159
+ status: 400,
160
+ description: "The request is invalid."
161
+ },
162
+ {
163
+ name: "Unauthorized",
164
+ status: 401,
165
+ description: "Missing or invalid credentials."
166
+ },
167
+ {
168
+ name: "Forbidden",
169
+ status: 403,
170
+ description: "Row-level security or a plugin denied the request."
171
+ },
172
+ {
173
+ name: "NotFound",
174
+ status: 404,
175
+ description: "No row matches."
176
+ },
177
+ {
178
+ name: "Conflict",
179
+ status: 409,
180
+ description: "A unique or foreign key constraint failed."
181
+ },
182
+ {
183
+ name: "Unprocessable",
184
+ status: 422,
185
+ description: "Validation or a check constraint failed."
186
+ }
187
+ ];
188
+ /** Name of the shared 403 response of operations that declare a permission. */
189
+ const PERMISSION_DENIED = "PermissionDenied";
190
+ const problem = (code, detail, extra = {}) => ({ value: {
191
+ ...problemType("forbidden"),
192
+ status: 403,
193
+ kind: "forbidden",
194
+ code,
195
+ detail,
196
+ ...extra
197
+ } });
198
+ /** The 403 of an operation with a permission, with one example per problem code. */
199
+ function permissionDeniedResponse() {
200
+ return {
201
+ description: "The authorizer denied the permission (`PERMISSION_DENIED`), the token lacks an OAuth scope (`INSUFFICIENT_SCOPE`), the action needs an approval (`APPROVAL_REQUIRED`), or row-level security denied the request.",
202
+ content: { [PROBLEM_CONTENT_TYPE]: {
203
+ schema: schemaRef("Problem"),
204
+ examples: {
205
+ permissionDenied: {
206
+ summary: "PERMISSION_DENIED",
207
+ ...problem("PERMISSION_DENIED", "Permission invoices.update is required", { permission: "invoices.update" })
208
+ },
209
+ insufficientScope: {
210
+ summary: "INSUFFICIENT_SCOPE",
211
+ ...problem("INSUFFICIENT_SCOPE", "The token lacks a required scope", { scopes: ["invoices.update"] })
212
+ },
213
+ approvalRequired: {
214
+ summary: "APPROVAL_REQUIRED",
215
+ ...problem("APPROVAL_REQUIRED", "invoices.update needs an approval", {
216
+ permission: "invoices.update",
217
+ approval: { id: "apr_123" }
218
+ })
219
+ }
220
+ }
221
+ } }
222
+ };
223
+ }
224
+ function errorResponse(error) {
225
+ return {
226
+ description: error.description,
227
+ content: { [PROBLEM_CONTENT_TYPE]: { schema: schemaRef("Problem") } }
228
+ };
229
+ }
230
+ /** The scheme name of the `oauth2` preset. */
231
+ const OAUTH_SCHEME = "supabaseOAuth";
232
+ /** Security schemes and top-level requirements for the presets. */
233
+ function resolveSecurity(presets, supabaseUrl, oauthScopes = {}) {
234
+ const schemes = {};
235
+ const requirements = [];
236
+ for (const preset of presets) {
237
+ if (typeof preset === "object") {
238
+ schemes[preset.name] = preset.scheme;
239
+ requirements.push({ [preset.name]: preset.scopes ?? [] });
240
+ continue;
241
+ }
242
+ switch (preset) {
243
+ case "bearer":
244
+ schemes["supabaseJwt"] = {
245
+ type: "http",
246
+ scheme: "bearer",
247
+ bearerFormat: "JWT",
248
+ description: "A Supabase access token. Requests run as that user under row-level security."
249
+ };
250
+ requirements.push({ supabaseJwt: [] });
251
+ break;
252
+ case "oauth2": {
253
+ if (!supabaseUrl) throw new TypeError("better-supabase/spec: oauth2 security needs supabaseUrl");
254
+ const origin = supabaseUrl.replace(/\/$/, "");
255
+ const auth = `${origin}/auth/v1`;
256
+ schemes[OAUTH_SCHEME] = {
257
+ type: "oauth2",
258
+ description: "The Supabase OAuth 2.1 server.",
259
+ flows: { authorizationCode: {
260
+ authorizationUrl: `${auth}/oauth/authorize`,
261
+ tokenUrl: `${auth}/oauth/token`,
262
+ scopes: oauthScopes
263
+ } },
264
+ metadataUrl: `${origin}/.well-known/oauth-authorization-server/auth/v1`
265
+ };
266
+ requirements.push({ [OAUTH_SCHEME]: [] });
267
+ break;
268
+ }
269
+ case "apiKey":
270
+ schemes["supabaseApiKey"] = {
271
+ type: "apiKey",
272
+ name: "apikey",
273
+ in: "header",
274
+ description: "The project's publishable key."
275
+ };
276
+ requirements.push({ supabaseApiKey: [] });
277
+ break;
278
+ default: throw new TypeError(`Unknown security preset "${String(preset)}"`);
279
+ }
280
+ }
281
+ return {
282
+ schemes,
283
+ requirements
284
+ };
285
+ }
286
+ //#endregion
287
+ //#region src/spec/build-resource.ts
288
+ const METHODS = /* @__PURE__ */ new Set([
289
+ "get",
290
+ "put",
291
+ "post",
292
+ "patch",
293
+ "delete",
294
+ "head",
295
+ "options",
296
+ "trace",
297
+ "query"
298
+ ]);
299
+ function isMethod(value) {
300
+ return METHODS.has(value);
301
+ }
302
+ /** The error statuses each operation can answer with. */
303
+ const OPERATION_STATUSES = {
304
+ list: [
305
+ 400,
306
+ 401,
307
+ 403
308
+ ],
309
+ create: [
310
+ 400,
311
+ 401,
312
+ 403,
313
+ 409,
314
+ 422
315
+ ],
316
+ get: [
317
+ 401,
318
+ 403,
319
+ 404
320
+ ],
321
+ update: [
322
+ 400,
323
+ 401,
324
+ 403,
325
+ 404,
326
+ 409,
327
+ 422
328
+ ],
329
+ delete: [
330
+ 401,
331
+ 403,
332
+ 404,
333
+ 409
334
+ ]
335
+ };
336
+ /** Statuses an operation only documents when it can answer with them; other errors apply everywhere. */
337
+ const SCOPED_STATUSES = /* @__PURE__ */ new Set([
338
+ 400,
339
+ 401,
340
+ 403,
341
+ 404,
342
+ 409,
343
+ 422
344
+ ]);
345
+ const JSON_TYPE = "application/json";
346
+ function pageParameters(cursor, maxPageSize) {
347
+ return pageQuery(cursor, maxPageSize).map((p) => ({
348
+ name: p.name,
349
+ in: "query",
350
+ required: false,
351
+ description: p.description,
352
+ schema: p.schema
353
+ }));
354
+ }
355
+ function isParameter(value) {
356
+ return isPlainObject(value) && typeof value["name"] === "string" && typeof value["in"] === "string" && isPlainObject(value["schema"]);
357
+ }
358
+ function isPlanCarrier(input) {
359
+ return typeof input === "object" && "plan" in input;
360
+ }
361
+ /** `description` and `deprecated` from comments, read structurally so older metadata still works. */
362
+ function docsOf(value) {
363
+ if (!value) return {};
364
+ const description = "description" in value ? value.description : void 0;
365
+ const deprecated = "deprecated" in value ? value.deprecated : void 0;
366
+ return {
367
+ ...typeof description === "string" && description !== "" ? { description } : {},
368
+ ...deprecated === true ? { deprecated: true } : {}
369
+ };
370
+ }
371
+ function jsonContent(schema) {
372
+ return { [JSON_TYPE]: { schema } };
373
+ }
374
+ function jsonResponse(schema, description) {
375
+ return {
376
+ description,
377
+ content: jsonContent(schema)
378
+ };
379
+ }
380
+ function mutableProperties(schema) {
381
+ const properties = schema["properties"];
382
+ if (!isPlainObject(properties)) return;
383
+ const copy = {};
384
+ for (const [key, value] of Object.entries(properties)) if (isPlainObject(value)) copy[key] = { ...value };
385
+ schema["properties"] = copy;
386
+ return copy;
387
+ }
388
+ function createBuildContext(meta, options) {
389
+ const prefix = options.extensionPrefix ?? "x-better-supabase-";
390
+ const diagnostics = [];
391
+ const report = (diagnostic) => {
392
+ diagnostics.push(diagnostic);
393
+ };
394
+ const base = (options.basePath ?? "").replace(/\/$/, "");
395
+ const globalErrors = options.errors ?? DEFAULT_ERRORS;
396
+ const schemas = { Problem: structuredClone(PROBLEM_SCHEMA) };
397
+ const responses = {};
398
+ for (const error of globalErrors) responses[error.name] = errorResponse(error);
399
+ const operations = [];
400
+ const tags = [...options.tags ?? []];
401
+ const served = /* @__PURE__ */ new Map();
402
+ const { authorizer } = options;
403
+ const addTag = (name, description) => {
404
+ if (tags.some((tag) => tag.name === name)) return;
405
+ tags.push({
406
+ name,
407
+ ...description ? { description } : {}
408
+ });
409
+ };
410
+ const addComponent = (name, schema) => {
411
+ const existing = schemas[name];
412
+ if (existing && JSON.stringify(existing) !== JSON.stringify(schema)) {
413
+ report({
414
+ code: "component-conflict",
415
+ severity: "error",
416
+ message: `Two different schemas are named "${name}"; the first one is kept`,
417
+ pointer: `/components/schemas/${pointerToken(name)}`
418
+ });
419
+ return;
420
+ }
421
+ schemas[name] = schema;
422
+ };
423
+ const keyOf = (ref, where) => {
424
+ if (authorizer) try {
425
+ return authorizer.key(ref);
426
+ } catch {
427
+ report({
428
+ code: "permission-unresolved",
429
+ severity: "error",
430
+ message: `${where}: the authorizer has no key for this permission`
431
+ });
432
+ return;
433
+ }
434
+ if (typeof ref === "string") return ref;
435
+ report({
436
+ code: "permission-unresolved",
437
+ severity: "error",
438
+ message: `${where}: a permission that is not a string needs an authorizer`
439
+ });
440
+ };
441
+ const converted = (standard, direction, where) => {
442
+ const result = convertStandard(standard, direction);
443
+ if (!result) report({
444
+ code: "schema-unconvertible",
445
+ severity: "warning",
446
+ message: `${where}: the schema does not implement Standard JSON Schema, so the spec allows any value`
447
+ });
448
+ return result;
449
+ };
450
+ const schemaOf = (standard, direction, role, operationId) => {
451
+ const result = converted(standard, direction, `${operationId} ${role}`);
452
+ if (!result) return {};
453
+ const name = options.componentName ? options.componentName({
454
+ kind: "schema",
455
+ id: result.name,
456
+ schema: result.schema,
457
+ role,
458
+ operationId
459
+ }) : result.name;
460
+ if (!name) return structuredClone(result.schema);
461
+ addComponent(name, structuredClone(result.schema));
462
+ return schemaRef(name);
463
+ };
464
+ const objectParameters = (standard, location, where) => {
465
+ const result = converted(standard, "input", where);
466
+ const properties = result?.schema["properties"];
467
+ if (!result || !isPlainObject(properties)) return [];
468
+ const required = result.schema["required"];
469
+ const requiredNames = Array.isArray(required) ? required : [];
470
+ return Object.entries(properties).flatMap(([name, schema]) => {
471
+ if (!isPlainObject(schema)) return [];
472
+ const description = schema["description"];
473
+ return [{
474
+ name,
475
+ in: location,
476
+ required: location === "path" || requiredNames.includes(name),
477
+ ...typeof description === "string" ? { description } : {},
478
+ schema: structuredClone(schema)
479
+ }];
480
+ });
481
+ };
482
+ const usedErrors = (errors, statuses, permission) => {
483
+ const out = {};
484
+ for (const error of errors) {
485
+ if (SCOPED_STATUSES.has(error.status) && !statuses.includes(error.status)) continue;
486
+ const status = String(error.status);
487
+ if (Object.hasOwn(out, status)) continue;
488
+ if (error.status === 403 && permission) continue;
489
+ responses[error.name] ??= errorResponse(error);
490
+ out[status] = { ref: error.name };
491
+ }
492
+ if (permission) {
493
+ responses[PERMISSION_DENIED] ??= permissionDeniedResponse();
494
+ out["403"] = { ref: PERMISSION_DENIED };
495
+ }
496
+ return out;
497
+ };
498
+ const extendFor = (extend, name) => {
499
+ if (!extend) return;
500
+ const all = extend["*"];
501
+ const own = extend[name];
502
+ if (!all && !own) return;
503
+ return mergeJson(all ?? {}, own ?? {});
504
+ };
505
+ return {
506
+ meta,
507
+ options,
508
+ prefix,
509
+ base,
510
+ globalErrors,
511
+ diagnostics,
512
+ schemas,
513
+ responses,
514
+ operations,
515
+ tags,
516
+ served,
517
+ report,
518
+ addTag,
519
+ addComponent,
520
+ keyOf,
521
+ schemaOf,
522
+ objectParameters,
523
+ usedErrors,
524
+ extendFor
525
+ };
526
+ }
527
+ function resourceScope(ctx, key, input) {
528
+ const { meta, options, prefix, base, globalErrors, operations, served, report, addTag, addComponent, keyOf, schemaOf, usedErrors, extendFor } = ctx;
529
+ const { authorizer } = options;
530
+ let plan;
531
+ if (isPlanCarrier(input)) plan = input.plan;
532
+ else {
533
+ if (!meta.tables[key]) throw new TypeError(`better-supabase/spec: unknown table "${key}"`);
534
+ plan = planResource(meta, key, input === true ? {} : input, authorizer);
535
+ }
536
+ const tableKey = plan.table;
537
+ const table = plan.meta;
538
+ const description = plan.description;
539
+ const name = pascal(tableKey);
540
+ const tableDocs = docsOf(table);
541
+ const defs = tableSchemas(meta, options.json ?? {});
542
+ const componentFor = (variant) => {
543
+ const defaultName = `${name}${variant}`;
544
+ return options.componentName?.({
545
+ kind: "table",
546
+ table: tableKey,
547
+ variant,
548
+ defaultName
549
+ }) ?? defaultName;
550
+ };
551
+ const components = {};
552
+ for (const variant of [
553
+ "Row",
554
+ "Insert",
555
+ "Update"
556
+ ]) {
557
+ const def = defs[`${tableKey}${variant}`];
558
+ if (!def) continue;
559
+ const schema = structuredClone(def);
560
+ if (tableDocs.description && schema["description"] === void 0) schema["description"] = tableDocs.description;
561
+ if (tableDocs.deprecated) schema["deprecated"] = true;
562
+ const properties = mutableProperties(schema);
563
+ for (const [column, property] of Object.entries(properties ?? {})) {
564
+ const docs = docsOf(table.columns[column]);
565
+ if (docs.description && property["description"] === void 0) property["description"] = docs.description;
566
+ if (docs.deprecated) property["deprecated"] = true;
567
+ }
568
+ const examples = options.examples?.[tableKey];
569
+ if (variant === "Row" && examples && examples.length > 0) schema["examples"] = structuredClone(examples);
570
+ const componentName = componentFor(variant);
571
+ components[variant] = componentName;
572
+ addComponent(componentName, schema);
573
+ }
574
+ const rowName = components.Row ?? componentFor("Row");
575
+ const cursor = plan.pagination === "cursor";
576
+ const pageName = componentFor("Page");
577
+ addComponent(pageName, pageSchema(schemaRef(rowName), cursor));
578
+ const tag = description.tag ?? tableKey;
579
+ addTag(tag, description.description ?? tableDocs.description);
580
+ const collection = `${base}${description.path ?? `/${tableKey}`}`;
581
+ const keyParam = plan.keyParam;
582
+ const rowProperties = defs[`${tableKey}Row`]?.["properties"];
583
+ const keySchema = keyParam && isPlainObject(rowProperties) ? rowProperties[keyParam] : void 0;
584
+ const idParameter = keyParam ? {
585
+ name: keyParam,
586
+ in: "path",
587
+ required: true,
588
+ schema: isPlainObject(keySchema) ? structuredClone(keySchema) : { type: "string" }
589
+ } : void 0;
590
+ const item = keyParam ? `${collection}/{${keyParam}}` : void 0;
591
+ const errors = description.errors ?? globalErrors;
592
+ const servedTable = {
593
+ table,
594
+ components,
595
+ operations: []
596
+ };
597
+ served.set(tableKey, servedTable);
598
+ const names = /* @__PURE__ */ new Set([...plan.operations, ...plan.actions.map((action) => action.name)]);
599
+ for (const extendKey of Object.keys(description.extend ?? {})) if (extendKey !== "*" && !names.has(extendKey)) report({
600
+ code: "extend-unknown",
601
+ severity: "warning",
602
+ message: `${tableKey}.extend.${extendKey} names no operation or action of the resource`
603
+ });
604
+ const add = (opName, source, method, path, fields) => {
605
+ const defaultId = `${opName}${name}`;
606
+ const id = options.operationId?.({
607
+ source,
608
+ method,
609
+ path,
610
+ defaultId
611
+ }) ?? defaultId;
612
+ const ref = plan.permissions[opName];
613
+ const permission = ref === void 0 ? void 0 : keyOf(ref, `${tableKey}.${opName}`);
614
+ const extend = extendFor(description.extend, opName);
615
+ const { extensions, ...rest } = fields;
616
+ const operation = {
617
+ id,
618
+ method,
619
+ path,
620
+ tags: [tag],
621
+ source,
622
+ ...rest,
623
+ extensions: {
624
+ [`${prefix}table`]: `${table.schema}.${table.name}`,
625
+ ...extensions,
626
+ ...permission === void 0 ? {} : { [`${prefix}permission`]: permission }
627
+ },
628
+ ...permission === void 0 ? {} : { permission },
629
+ ...description.security ? { security: description.security } : {},
630
+ ...extend ? { extend } : {},
631
+ ...tableDocs.deprecated ? { deprecated: true } : {}
632
+ };
633
+ operations.push(operation);
634
+ servedTable.operations.push(operation);
635
+ };
636
+ const outputOf = (operation, fallback) => {
637
+ const output = description.output?.[operation];
638
+ return output ? schemaOf(output, "output", "output", `${operation}${name}`) : fallback;
639
+ };
640
+ const resourceOp = (operation) => ({
641
+ kind: "resource",
642
+ table: tableKey,
643
+ operation
644
+ });
645
+ const errorsFor = (operation) => usedErrors(errors, OPERATION_STATUSES[operation], plan.permissions[operation] !== void 0);
646
+ const opExtension = (operation) => ({ [`${prefix}operation`]: operation });
647
+ return {
648
+ ctx,
649
+ plan,
650
+ tableKey,
651
+ name,
652
+ description,
653
+ components,
654
+ componentFor,
655
+ rowName,
656
+ pageName,
657
+ cursor,
658
+ collection,
659
+ item,
660
+ idParameter,
661
+ errors,
662
+ add,
663
+ outputOf,
664
+ resourceOp,
665
+ errorsFor,
666
+ opExtension
667
+ };
668
+ }
669
+ function addTableOperation(scope, operation) {
670
+ const { plan, tableKey, name, description, components, componentFor, rowName, pageName, cursor, collection, item, idParameter, add, outputOf, resourceOp, errorsFor, opExtension } = scope;
671
+ const { schemaOf } = scope.ctx;
672
+ switch (operation) {
673
+ case "list": {
674
+ const listOutput = description.output?.list;
675
+ const pageRef = listOutput ? pageSchema(schemaOf(listOutput, "output", "item", `list${name}`), cursor) : schemaRef(pageName);
676
+ add("list", resourceOp("list"), "get", collection, {
677
+ summary: `List ${tableKey}`,
678
+ extensions: opExtension("list"),
679
+ parameters: description.list ? description.list.openapi.filter(isParameter) : pageParameters(cursor, plan.maxPageSize),
680
+ responses: {
681
+ "200": jsonResponse(pageRef, `A page of ${tableKey}.`),
682
+ ...errorsFor("list")
683
+ }
684
+ });
685
+ break;
686
+ }
687
+ case "create": {
688
+ const body = description.input?.create ? schemaOf(description.input.create, "input", "input", `create${name}`) : schemaRef(components.Insert ?? componentFor("Insert"));
689
+ add("create", resourceOp("create"), "post", collection, {
690
+ summary: `Create a ${tableKey} row`,
691
+ extensions: opExtension("create"),
692
+ parameters: [],
693
+ requestBody: {
694
+ required: true,
695
+ content: jsonContent(body)
696
+ },
697
+ responses: {
698
+ "201": jsonResponse(outputOf("create", schemaRef(rowName)), "Created."),
699
+ ...errorsFor("create")
700
+ }
701
+ });
702
+ break;
703
+ }
704
+ case "get":
705
+ if (!item || !idParameter) break;
706
+ add("get", resourceOp("get"), "get", item, {
707
+ summary: `Get a ${tableKey} row`,
708
+ extensions: opExtension("get"),
709
+ parameters: [idParameter],
710
+ responses: {
711
+ "200": jsonResponse(outputOf("get", schemaRef(rowName)), "The row."),
712
+ ...errorsFor("get")
713
+ }
714
+ });
715
+ break;
716
+ case "update": {
717
+ if (!item || !idParameter) break;
718
+ const body = description.input?.update ? schemaOf(description.input.update, "input", "input", `update${name}`) : schemaRef(components.Update ?? componentFor("Update"));
719
+ add("update", resourceOp("update"), "patch", item, {
720
+ summary: `Update a ${tableKey} row`,
721
+ extensions: opExtension("update"),
722
+ parameters: [idParameter],
723
+ requestBody: {
724
+ required: true,
725
+ content: jsonContent(body)
726
+ },
727
+ responses: {
728
+ "200": jsonResponse(outputOf("update", schemaRef(rowName)), "Updated."),
729
+ ...errorsFor("update")
730
+ }
731
+ });
732
+ break;
733
+ }
734
+ case "delete":
735
+ if (!item || !idParameter) break;
736
+ add("delete", resourceOp("delete"), "delete", item, {
737
+ summary: `Delete a ${tableKey} row`,
738
+ extensions: opExtension("delete"),
739
+ parameters: [idParameter],
740
+ responses: {
741
+ "204": { description: "Deleted." },
742
+ ...errorsFor("delete")
743
+ }
744
+ });
745
+ break;
746
+ default: throw new TypeError(`better-supabase/spec: unknown operation "${String(operation)}"`);
747
+ }
748
+ }
749
+ function addAction(scope, action) {
750
+ const { tableKey, name, idParameter, collection, errors, add } = scope;
751
+ const { prefix, schemaOf, objectParameters, usedErrors } = scope.ctx;
752
+ const method = action.method.toLowerCase();
753
+ if (!isMethod(method)) throw new TypeError(`${tableKey}.actions.${action.name}: unknown method`);
754
+ const operationId = `${action.name}${name}`;
755
+ const parameters = [...action.params.length > 0 && idParameter ? [idParameter] : [], ...action.query ? objectParameters(action.query, "query", `${operationId} query`) : []];
756
+ const status = String(action.status ?? (action.output ? 200 : 204));
757
+ const statuses = [
758
+ ...action.input || action.query ? [400] : [],
759
+ 401,
760
+ 403,
761
+ ...action.params.length > 0 ? [404] : [],
762
+ ...action.input ? [422] : []
763
+ ];
764
+ add(action.name, {
765
+ kind: "action",
766
+ table: tableKey,
767
+ action: action.name
768
+ }, method, `${collection}${action.path}`, {
769
+ ...action.summary ? { summary: action.summary } : {},
770
+ ...action.description ? { description: action.description } : {},
771
+ ...action.deprecated ? { deprecated: true } : {},
772
+ extensions: {
773
+ [`${prefix}action`]: action.name,
774
+ ...action.emits ? { [`${prefix}emits`]: [...action.emits] } : {}
775
+ },
776
+ parameters,
777
+ ...action.input ? { requestBody: {
778
+ required: true,
779
+ content: jsonContent(schemaOf(action.input, "input", "input", operationId))
780
+ } } : {},
781
+ responses: {
782
+ [status]: action.output ? jsonResponse(schemaOf(action.output, "output", "output", operationId), action.summary ?? "Done.") : { description: action.summary ?? "Done." },
783
+ ...usedErrors(errors, statuses, action.permission !== void 0)
784
+ }
785
+ });
786
+ }
787
+ /** Adds one resource's components, tag and operations to the build. */
788
+ function buildResource(ctx, key, input) {
789
+ const scope = resourceScope(ctx, key, input);
790
+ for (const operation of scope.plan.operations) addTableOperation(scope, operation);
791
+ for (const action of scope.plan.actions) addAction(scope, action);
792
+ }
793
+ //#endregion
794
+ //#region src/spec/data-api.ts
795
+ const REST = "/rest/v1";
796
+ const DEFAULT_TAG = "Data API";
797
+ const ERROR = "DataApiError";
798
+ /** The error body PostgREST answers with. */
799
+ const ERROR_SCHEMA = {
800
+ type: "object",
801
+ required: ["message"],
802
+ properties: {
803
+ code: { type: "string" },
804
+ message: { type: "string" },
805
+ details: { type: ["string", "null"] },
806
+ hint: { type: ["string", "null"] }
807
+ }
808
+ };
809
+ /** Query parameters PostgREST reserves, so a column with the name gets no filter. */
810
+ const RESERVED = /* @__PURE__ */ new Set([
811
+ "select",
812
+ "order",
813
+ "limit",
814
+ "offset",
815
+ "columns",
816
+ "on_conflict",
817
+ "or",
818
+ "and",
819
+ "not"
820
+ ]);
821
+ const INTEGER = /* @__PURE__ */ new Set([
822
+ "int2",
823
+ "int4",
824
+ "int8"
825
+ ]);
826
+ const NUMBER = /* @__PURE__ */ new Set([
827
+ "float4",
828
+ "float8",
829
+ "numeric",
830
+ "oid",
831
+ "money"
832
+ ]);
833
+ /** The scheme names the `apiKey` and `bearer` presets register. */
834
+ const DATA_API_SECURITY = [{
835
+ supabaseApiKey: [],
836
+ supabaseJwt: []
837
+ }, { supabaseApiKey: [] }];
838
+ /** JSON Schema for a Postgres type as PostgREST writes it. */
839
+ function typeSchema(meta, type) {
840
+ if (type.startsWith("_")) return {
841
+ type: "array",
842
+ items: typeSchema(meta, type.slice(1))
843
+ };
844
+ const values = meta.enums[type];
845
+ if (values) return {
846
+ type: "string",
847
+ enum: [...values]
848
+ };
849
+ if (INTEGER.has(type)) return { type: "integer" };
850
+ if (NUMBER.has(type)) return { type: "number" };
851
+ switch (type) {
852
+ case "bool": return { type: "boolean" };
853
+ case "uuid": return {
854
+ type: "string",
855
+ format: "uuid"
856
+ };
857
+ case "timestamptz": return {
858
+ type: "string",
859
+ format: "date-time"
860
+ };
861
+ case "date": return {
862
+ type: "string",
863
+ format: "date"
864
+ };
865
+ case "json":
866
+ case "jsonb":
867
+ case "record":
868
+ case "void": return {};
869
+ default: return { type: "string" };
870
+ }
871
+ }
872
+ /** A table schema with database column names, as the Data API reads and writes them. */
873
+ function databaseCased(schema, table) {
874
+ const dbName = (name) => table.columns[name]?.db ?? name;
875
+ const properties = schema["properties"];
876
+ const required = schema["required"];
877
+ return {
878
+ ...schema,
879
+ ...isPlainObject(properties) ? { properties: Object.fromEntries(Object.entries(properties).map(([name, value]) => [dbName(name), value])) } : {},
880
+ ...Array.isArray(required) ? { required: required.map((name) => typeof name === "string" ? dbName(name) : name) } : {}
881
+ };
882
+ }
883
+ const qualified = (schema, name) => schema === "public" ? name : `${schema}.${name}`;
884
+ const STRING = { type: "string" };
885
+ const header = (name, description, schema, required = false) => ({
886
+ name,
887
+ in: "header",
888
+ required,
889
+ description,
890
+ schema: schema ?? STRING
891
+ });
892
+ const query = (name, description, schema) => ({
893
+ name,
894
+ in: "query",
895
+ required: false,
896
+ description,
897
+ schema: schema ?? STRING
898
+ });
899
+ /** The `Accept-Profile` or `Content-Profile` header a table outside `public` needs. */
900
+ function profile(schema, write) {
901
+ return schema === "public" ? [] : [header(write ? "Content-Profile" : "Accept-Profile", `The schema of the table, \`${schema}\`.`, {
902
+ type: "string",
903
+ enum: [schema]
904
+ }, true)];
905
+ }
906
+ const PREFER_WRITE = header("Prefer", "`return=representation` answers with the written rows; `return=minimal` (the default) answers without a body.");
907
+ /** Documents the Data API: table operations under `/rest/v1/<table>` and RPCs under `/rest/v1/rpc/<name>`. */
908
+ function buildDataApi(ctx, dataApi) {
909
+ const { meta, options, operations, report, addTag, addComponent, responses } = ctx;
910
+ const tag = dataApi.tag ?? DEFAULT_TAG;
911
+ const origin = options.supabaseUrl?.replace(/\/$/, "");
912
+ if (!origin) report({
913
+ code: "data-api-server-missing",
914
+ severity: "warning",
915
+ message: "dataApi needs supabaseUrl: without it the /rest/v1 paths resolve against the document's servers"
916
+ });
917
+ const servers = origin ? [{
918
+ url: origin,
919
+ description: "The Supabase project."
920
+ }] : void 0;
921
+ const defs = tableSchemas(meta, options.json ?? {});
922
+ const tableKeys = /* @__PURE__ */ new Set();
923
+ const unknownTable = (key, where) => {
924
+ report({
925
+ code: "data-api-table-unknown",
926
+ severity: "error",
927
+ message: `${where}: no table or view "${key}"`
928
+ });
929
+ };
930
+ if (dataApi.tables === true) for (const key of Object.keys(meta.tables).toSorted()) tableKeys.add(key);
931
+ else for (const key of dataApi.tables ?? []) if (meta.tables[key]) tableKeys.add(key);
932
+ else unknownTable(key, "dataApi.tables");
933
+ for (const key of Object.keys(dataApi.operations ?? {})) if (!meta.tables[key]) unknownTable(key, "dataApi.operations");
934
+ else if (!tableKeys.has(key)) tableKeys.add(key);
935
+ const functionKeys = [];
936
+ if (dataApi.functions === true) functionKeys.push(...Object.keys(meta.functions).toSorted());
937
+ else for (const key of dataApi.functions ?? []) if (meta.functions[key]) functionKeys.push(key);
938
+ else report({
939
+ code: "data-api-function-unknown",
940
+ severity: "error",
941
+ message: `dataApi.functions: no function "${key}"`
942
+ });
943
+ if (tableKeys.size === 0 && functionKeys.length === 0) return;
944
+ addTag(tag, "The Supabase Data API (PostgREST). Every request runs under row-level security.");
945
+ addComponent(ERROR, structuredClone(ERROR_SCHEMA));
946
+ responses[ERROR] ??= {
947
+ description: "PostgREST rejected the request.",
948
+ content: jsonContent(schemaRef(ERROR))
949
+ };
950
+ const errors = { "4XX": { ref: ERROR } };
951
+ /** The database-cased component of a table variant, or `undefined` when the table has none. */
952
+ const component = (key, variant) => {
953
+ const table = meta.tables[key];
954
+ const schema = defs[`${key}${variant}`];
955
+ if (!table || !schema) return;
956
+ const name = `DataApi${pascal(table.schema === "public" ? "" : `${table.schema}_`)}${pascal(table.name)}${variant}`;
957
+ addComponent(name, databaseCased(structuredClone(schema), table));
958
+ return schemaRef(name);
959
+ };
960
+ const push = (draft) => {
961
+ const { defaultId, ...rest } = draft;
962
+ operations.push({
963
+ ...rest,
964
+ id: options.operationId?.({
965
+ source: draft.source,
966
+ method: draft.method,
967
+ path: draft.path,
968
+ defaultId
969
+ }) ?? defaultId,
970
+ tags: [tag],
971
+ ...servers ? { servers } : {},
972
+ security: DATA_API_SECURITY,
973
+ extensions: {}
974
+ });
975
+ };
976
+ for (const key of tableKeys) {
977
+ const table = meta.tables[key];
978
+ if (table) buildTable(key, table);
979
+ }
980
+ for (const key of functionKeys) {
981
+ const fn = meta.functions[key];
982
+ if (fn) buildFunction(key, fn);
983
+ }
984
+ function buildTable(key, table) {
985
+ const row = component(key, "Row") ?? {};
986
+ const insert = component(key, "Insert");
987
+ const update = component(key, "Update");
988
+ const rows = {
989
+ type: "array",
990
+ items: row
991
+ };
992
+ const path = `${REST}/${table.name}`;
993
+ const name = pascal(table.schema === "public" ? table.name : `${table.schema}_${table.name}`);
994
+ const label = qualified(table.schema, table.name);
995
+ const filters = Object.values(table.columns).filter((column) => !RESERVED.has(column.db)).map((column) => query(column.db, `Filters on \`${column.db}\` with an operator and a value: \`eq.<value>\`, \`in.(a,b)\`, \`is.null\`.`));
996
+ const viewOperations = ["select"];
997
+ if (insert) viewOperations.push("insert");
998
+ if (update) viewOperations.push("update", "delete");
999
+ const allowed = dataApi.operations?.[key] ?? (table.kind === "view" ? viewOperations : [
1000
+ "select",
1001
+ "insert",
1002
+ "update",
1003
+ "delete"
1004
+ ]);
1005
+ const source = (operation) => ({
1006
+ kind: "data-api",
1007
+ table: key,
1008
+ operation
1009
+ });
1010
+ const written = (status, description) => ({ [status]: jsonResponse(rows, `${description} The body holds the rows with \`Prefer: return=representation\`.`) });
1011
+ for (const operation of allowed) switch (operation) {
1012
+ case "select":
1013
+ push({
1014
+ defaultId: `dataApiSelect${name}`,
1015
+ method: "get",
1016
+ path,
1017
+ summary: `Read rows of ${label}`,
1018
+ parameters: [
1019
+ query("select", "The columns to return, comma separated, and embedded relations as `relation(columns)`. Defaults to `*`."),
1020
+ query("order", "Sort order, such as `created_at.desc,id`."),
1021
+ query("limit", "The most rows to return.", {
1022
+ type: "integer",
1023
+ minimum: 0
1024
+ }),
1025
+ query("offset", "The rows to skip.", {
1026
+ type: "integer",
1027
+ minimum: 0
1028
+ }),
1029
+ ...filters,
1030
+ header("Range", "A row range, such as `0-24`."),
1031
+ header("Prefer", "`count=exact`, `count=planned` or `count=estimated` adds the total to `Content-Range`."),
1032
+ ...profile(table.schema, false)
1033
+ ],
1034
+ responses: {
1035
+ "200": {
1036
+ ...jsonResponse(rows, "The rows."),
1037
+ headers: { "Content-Range": {
1038
+ description: "The returned range and the total, such as `0-24/100`.",
1039
+ schema: { type: "string" }
1040
+ } }
1041
+ },
1042
+ "206": jsonResponse(rows, "Part of the rows, for a `Range` request."),
1043
+ ...errors
1044
+ },
1045
+ source: source("select")
1046
+ });
1047
+ break;
1048
+ case "insert":
1049
+ push({
1050
+ defaultId: `dataApiInsert${name}`,
1051
+ method: "post",
1052
+ path,
1053
+ summary: `Insert rows into ${label}`,
1054
+ parameters: [
1055
+ query("columns", "The columns to read from the body, comma separated."),
1056
+ query("on_conflict", "The unique columns an upsert matches on, comma separated."),
1057
+ PREFER_WRITE,
1058
+ ...profile(table.schema, true)
1059
+ ],
1060
+ requestBody: {
1061
+ required: true,
1062
+ content: jsonContent(insert ? { oneOf: [insert, {
1063
+ type: "array",
1064
+ items: insert
1065
+ }] } : {})
1066
+ },
1067
+ responses: {
1068
+ ...written("201", "Created."),
1069
+ ...errors
1070
+ },
1071
+ source: source("insert")
1072
+ });
1073
+ break;
1074
+ case "update":
1075
+ push({
1076
+ defaultId: `dataApiUpdate${name}`,
1077
+ method: "patch",
1078
+ path,
1079
+ summary: `Update rows of ${label}`,
1080
+ description: "Updates every row the filters match.",
1081
+ parameters: [
1082
+ ...filters,
1083
+ PREFER_WRITE,
1084
+ ...profile(table.schema, true)
1085
+ ],
1086
+ requestBody: {
1087
+ required: true,
1088
+ content: jsonContent(update ?? {})
1089
+ },
1090
+ responses: {
1091
+ ...written("200", "Updated."),
1092
+ "204": { description: "Updated, without a body." },
1093
+ ...errors
1094
+ },
1095
+ source: source("update")
1096
+ });
1097
+ break;
1098
+ case "delete":
1099
+ push({
1100
+ defaultId: `dataApiDelete${name}`,
1101
+ method: "delete",
1102
+ path,
1103
+ summary: `Delete rows of ${label}`,
1104
+ description: "Deletes every row the filters match.",
1105
+ parameters: [
1106
+ ...filters,
1107
+ PREFER_WRITE,
1108
+ ...profile(table.schema, true)
1109
+ ],
1110
+ responses: {
1111
+ ...written("200", "Deleted."),
1112
+ "204": { description: "Deleted, without a body." },
1113
+ ...errors
1114
+ },
1115
+ source: source("delete")
1116
+ });
1117
+ break;
1118
+ default: throw new TypeError(`Unknown Data API operation "${String(operation)}"`);
1119
+ }
1120
+ }
1121
+ function argumentsSchema(signature) {
1122
+ const required = signature.args.filter((arg) => arg.optional !== true).map((arg) => arg.name);
1123
+ return {
1124
+ type: "object",
1125
+ properties: Object.fromEntries(signature.args.map((arg) => [arg.name, typeSchema(meta, arg.type)])),
1126
+ ...required.length > 0 ? { required } : {},
1127
+ additionalProperties: false
1128
+ };
1129
+ }
1130
+ function resultSchema(fn) {
1131
+ const { result } = fn;
1132
+ let one;
1133
+ if (result && "table" in result) one = component(result.table, "Row") ?? {};
1134
+ else if (result) one = {
1135
+ type: "object",
1136
+ properties: Object.fromEntries(result.columns.map((column) => [column.db, {}])),
1137
+ required: result.columns.map((column) => column.db)
1138
+ };
1139
+ else {
1140
+ const rowTable = Object.entries(meta.tables).find(([, table]) => table.name === fn.returns && table.schema === fn.schema);
1141
+ one = rowTable ? component(rowTable[0], "Row") ?? {} : typeSchema(meta, fn.returns);
1142
+ }
1143
+ return fn.returnsSet ? {
1144
+ type: "array",
1145
+ items: one
1146
+ } : one;
1147
+ }
1148
+ function buildFunction(key, fn) {
1149
+ const signatures = fn.overloads ?? [fn];
1150
+ const bodies = signatures.map(argumentsSchema);
1151
+ const [only] = bodies;
1152
+ const body = bodies.length === 1 && only ? only : { oneOf: bodies };
1153
+ const takesArgs = signatures.some((signature) => signature.args.length > 0);
1154
+ push({
1155
+ defaultId: `dataApiRpc${pascal(fn.schema === "public" ? fn.name : `${fn.schema}_${fn.name}`)}`,
1156
+ method: "post",
1157
+ path: `${REST}/rpc/${fn.name}`,
1158
+ summary: `Call ${qualified(fn.schema, fn.name)}`,
1159
+ description: `A ${fn.volatility} function.${fn.volatility === "volatile" ? "" : " A GET with the arguments as query parameters calls it too."}`,
1160
+ parameters: profile(fn.schema, true),
1161
+ requestBody: {
1162
+ required: takesArgs,
1163
+ content: jsonContent(body)
1164
+ },
1165
+ responses: {
1166
+ ...fn.returns === "void" && !fn.returnsSet ? { "204": { description: "Done." } } : { "200": jsonResponse(resultSchema(fn), "The result.") },
1167
+ ...errors
1168
+ },
1169
+ source: {
1170
+ kind: "data-api",
1171
+ function: key,
1172
+ operation: "rpc"
1173
+ }
1174
+ });
1175
+ }
1176
+ }
1177
+ /** Adds the `apiKey` and `bearer` schemes the Data API operations require. */
1178
+ function withDataApiSchemes(security, operations, supabaseUrl) {
1179
+ if (!operations.some((operation) => operation.source.kind === "data-api")) return security;
1180
+ const { schemes } = resolveSecurity(["apiKey", "bearer"], supabaseUrl);
1181
+ return {
1182
+ schemes: {
1183
+ ...schemes,
1184
+ ...security.schemes
1185
+ },
1186
+ requirements: security.requirements
1187
+ };
1188
+ }
1189
+ //#endregion
1190
+ //#region src/spec/events.ts
1191
+ /**
1192
+ * Whether a value is a `defineTopic()` result: a template string and the
1193
+ * `sql`, `trigger` and `subscribe` methods. `better-supabase sql sync` and
1194
+ * `spec` use the same check.
1195
+ */
1196
+ function isTopicLike(value) {
1197
+ return isRecord(value) && typeof value["template"] === "string" && typeof value["sql"] === "function" && typeof value["trigger"] === "function" && typeof value["subscribe"] === "function";
1198
+ }
1199
+ /**
1200
+ * The `defineTopic()` results in modules or arrays, for `events.topics`.
1201
+ * A module's topics are keyed by export name; a topic in an array by its
1202
+ * `name`. Other values are skipped, and a topic reached twice is kept once.
1203
+ *
1204
+ * ```ts
1205
+ * import * as topics from "../realtime/topics";
1206
+ * defineApi(betterSupabase, { info, events: { topics: topicsFrom(topics) } });
1207
+ * ```
1208
+ */
1209
+ function topicsFrom(...sources) {
1210
+ const topics = {};
1211
+ const seen = /* @__PURE__ */ new Set();
1212
+ for (const source of sources) {
1213
+ const entries = Array.isArray(source) ? source.map((value) => [void 0, value]) : Object.entries(source);
1214
+ for (const [key, value] of entries) {
1215
+ if (!isTopicLike(value) || seen.has(value)) continue;
1216
+ seen.add(value);
1217
+ topics[key ?? value.name ?? value.template] = value;
1218
+ }
1219
+ }
1220
+ return topics;
1221
+ }
1222
+ const OPEN = { type: "object" };
1223
+ const DEFAULT_INTENTS = [
1224
+ "insert",
1225
+ "update",
1226
+ "delete"
1227
+ ];
1228
+ /** An id safe for AsyncAPI channel, operation and component keys. */
1229
+ function safeKey(value) {
1230
+ return value.replaceAll(/[^A-Za-z0-9_-]/g, "_");
1231
+ }
1232
+ const keyPart = (value) => safeKey(pascal(value));
1233
+ /** The CloudEvents attributes in HTTP binary mode (`ce-*` headers). */
1234
+ const CLOUD_EVENT_TRAIT = {
1235
+ description: "CloudEvents 1.0 attributes in HTTP binary mode.",
1236
+ contentType: "application/json",
1237
+ headers: {
1238
+ type: "object",
1239
+ properties: {
1240
+ "ce-specversion": {
1241
+ type: "string",
1242
+ const: "1.0"
1243
+ },
1244
+ "ce-id": { type: "string" },
1245
+ "ce-source": {
1246
+ type: "string",
1247
+ format: "uri-reference"
1248
+ },
1249
+ "ce-type": { type: "string" },
1250
+ "ce-subject": { type: "string" },
1251
+ "ce-time": {
1252
+ type: "string",
1253
+ format: "date-time"
1254
+ },
1255
+ "ce-dataschema": {
1256
+ type: "string",
1257
+ format: "uri"
1258
+ },
1259
+ "ce-partitionkey": { type: "string" }
1260
+ }
1261
+ }
1262
+ };
1263
+ function cloudEventHeaders(type, dataschema) {
1264
+ return {
1265
+ type: "object",
1266
+ required: [
1267
+ "ce-specversion",
1268
+ "ce-id",
1269
+ "ce-source",
1270
+ "ce-type"
1271
+ ],
1272
+ properties: {
1273
+ "ce-type": {
1274
+ type: "string",
1275
+ const: type
1276
+ },
1277
+ ...dataschema ? { "ce-dataschema": {
1278
+ type: "string",
1279
+ const: dataschema
1280
+ } } : {}
1281
+ }
1282
+ };
1283
+ }
1284
+ function convert(schema, where, ctx) {
1285
+ if (schema === true) return OPEN;
1286
+ const converted = convertStandard(schema, "output");
1287
+ if (converted) return converted.schema;
1288
+ ctx.report({
1289
+ code: "asyncapi-schema-opaque",
1290
+ severity: "warning",
1291
+ message: `${where}: the schema does not implement Standard JSON Schema; the payload is left open`
1292
+ });
1293
+ return OPEN;
1294
+ }
1295
+ function tableChannels(ctx, selection, channels, messages) {
1296
+ if (selection === false) return;
1297
+ const realtime = ctx.meta.realtime ?? {};
1298
+ const keys = selection === true ? Object.keys(realtime) : selection;
1299
+ for (const key of keys) {
1300
+ const table = ctx.meta.tables[key];
1301
+ const config = realtime[key];
1302
+ if (!table || !config) {
1303
+ ctx.report({
1304
+ code: "asyncapi-table-unknown",
1305
+ severity: "error",
1306
+ message: `events.tables names "${key}", which is not in realtime.tables`
1307
+ });
1308
+ continue;
1309
+ }
1310
+ const id = `table${keyPart(key)}`;
1311
+ const base = `bs:t:${table.schema}.${table.name}`;
1312
+ const address = config.user ? `${base}:u:{userId}` : config.tenant ? `${base}:{tenant}` : base;
1313
+ const messageId = `${id}Change`;
1314
+ messages[messageId] = {
1315
+ id: messageId,
1316
+ name: "change",
1317
+ title: `${key} changed`,
1318
+ summary: `A row of ${table.schema}.${table.name} was inserted, updated or deleted. Clients refetch through row-level security.`,
1319
+ contentType: "application/json",
1320
+ payload: {
1321
+ type: "object",
1322
+ required: [
1323
+ "schema",
1324
+ "table",
1325
+ "operation"
1326
+ ],
1327
+ properties: {
1328
+ schema: {
1329
+ type: "string",
1330
+ const: table.schema
1331
+ },
1332
+ table: {
1333
+ type: "string",
1334
+ const: table.name
1335
+ },
1336
+ operation: {
1337
+ type: "string",
1338
+ enum: [
1339
+ "INSERT",
1340
+ "UPDATE",
1341
+ "DELETE"
1342
+ ]
1343
+ }
1344
+ }
1345
+ },
1346
+ extensions: { [`${ctx.prefix}event`]: "change" }
1347
+ };
1348
+ channels.push({
1349
+ id,
1350
+ address,
1351
+ title: `${key} changes`,
1352
+ protocol: "ws",
1353
+ ...config.user ? { parameters: { userId: { description: "The signed-in user's id." } } } : config.tenant ? { parameters: { tenant: { description: `The row's \`${config.tenant}\` value.` } } } : {},
1354
+ messages: [messageId],
1355
+ operations: [{
1356
+ id: `receive${keyPart(key)}Changes`,
1357
+ action: "receive",
1358
+ summary: `Change signals for ${key}`
1359
+ }],
1360
+ extensions: {
1361
+ [`${ctx.prefix}table`]: `${table.schema}.${table.name}`,
1362
+ [`${ctx.prefix}realtime-status`]: topicStatus({ private: true })
1363
+ }
1364
+ });
1365
+ }
1366
+ }
1367
+ function topicChannels(ctx, topics, channels, messages) {
1368
+ for (const [key, topic] of Object.entries(topics)) {
1369
+ const id = `topic${keyPart(key)}`;
1370
+ const ids = [];
1371
+ const events = Object.entries(topic.events ?? {});
1372
+ if (events.length === 0) {
1373
+ ctx.report({
1374
+ code: "asyncapi-topic-open",
1375
+ severity: "info",
1376
+ message: `Topic "${key}" lists no events; it is documented with one open message`
1377
+ });
1378
+ events.push(["*", true]);
1379
+ }
1380
+ for (const [event, schema] of events) {
1381
+ const messageId = `${id}${event === "*" ? "Any" : keyPart(event)}`;
1382
+ ids.push(messageId);
1383
+ messages[messageId] = {
1384
+ id: messageId,
1385
+ ...event === "*" ? {} : { name: event },
1386
+ title: event === "*" ? `${key} broadcast` : `${key} ${event}`,
1387
+ contentType: "application/json",
1388
+ payload: convert(schema, `topics.${key}.events.${event}`, ctx),
1389
+ extensions: { [`${ctx.prefix}event`]: event }
1390
+ };
1391
+ }
1392
+ if (topic.presence) {
1393
+ const messageId = `${id}Presence`;
1394
+ ids.push(messageId);
1395
+ messages[messageId] = {
1396
+ id: messageId,
1397
+ name: "presence",
1398
+ title: `${key} presence`,
1399
+ contentType: "application/json",
1400
+ payload: topic.presenceSchema ? convert(topic.presenceSchema, `topics.${key}.presence`, ctx) : OPEN,
1401
+ extensions: { [`${ctx.prefix}event`]: "presence" }
1402
+ };
1403
+ }
1404
+ const permission = topic.permission === void 0 ? void 0 : ctx.keyOf(topic.permission, `topics.${key}`);
1405
+ const extra = permission === void 0 ? {} : { permission };
1406
+ const operations = [{
1407
+ id: `receive${keyPart(key)}`,
1408
+ action: "receive",
1409
+ ...topic.summary ? { summary: topic.summary } : {},
1410
+ ...extra
1411
+ }];
1412
+ if (topic.send === true || topic.clientSend === true || topic.presence) operations.push({
1413
+ id: `send${keyPart(key)}`,
1414
+ action: "send",
1415
+ ...extra
1416
+ });
1417
+ const params = [...topic.template.matchAll(/\{([^}]+)\}/g)].map((match) => match[1] ?? "");
1418
+ channels.push({
1419
+ id,
1420
+ address: topic.template,
1421
+ ...topic.summary ? { summary: topic.summary } : {},
1422
+ ...topic.description ? { description: topic.description } : {},
1423
+ title: topic.name ?? key,
1424
+ ...params.length > 0 ? { parameters: Object.fromEntries(params.map((name) => [name, {}])) } : {},
1425
+ protocol: "ws",
1426
+ messages: ids,
1427
+ operations,
1428
+ extensions: {
1429
+ [`${ctx.prefix}private`]: topic.private ?? true,
1430
+ [`${ctx.prefix}realtime-status`]: topic.status ?? topicStatus(topic)
1431
+ }
1432
+ });
1433
+ }
1434
+ }
1435
+ function withActor(schema) {
1436
+ const properties = schema["properties"];
1437
+ if (!isPlainObject(properties) || "actorId" in properties) return schema;
1438
+ return {
1439
+ ...schema,
1440
+ properties: {
1441
+ ...properties,
1442
+ actorId: {
1443
+ type: "string",
1444
+ description: "Who caused the event."
1445
+ }
1446
+ }
1447
+ };
1448
+ }
1449
+ function cloudEventChannel(ctx, input, channels, messages) {
1450
+ const ids = [];
1451
+ const add = (messageId, type, title, payload, table) => {
1452
+ const { dataschema } = dataschemaOf(input, {
1453
+ type,
1454
+ ...table ? { table } : {}
1455
+ });
1456
+ ids.push(messageId);
1457
+ messages[messageId] = {
1458
+ id: messageId,
1459
+ name: type,
1460
+ title,
1461
+ contentType: "application/json",
1462
+ headers: cloudEventHeaders(type, dataschema),
1463
+ payload,
1464
+ traits: ["cloudEvent"],
1465
+ extensions: {
1466
+ [`${ctx.prefix}cloudevent-type`]: type,
1467
+ ...dataschema ? { [`${ctx.prefix}dataschema`]: dataschema } : {}
1468
+ }
1469
+ };
1470
+ };
1471
+ const rows = input.rows ?? false;
1472
+ const rowTables = rows === true ? Object.keys(ctx.meta.tables) : rows === false ? [] : rows;
1473
+ const defs = rowTables.length > 0 ? tableSchemas(ctx.meta, ctx.json) : {};
1474
+ for (const table of rowTables) {
1475
+ if (!ctx.meta.tables[table]) {
1476
+ ctx.report({
1477
+ code: "asyncapi-table-unknown",
1478
+ severity: "error",
1479
+ message: `events.cloudEvents.rows names an unknown table "${table}"`
1480
+ });
1481
+ continue;
1482
+ }
1483
+ const component = ctx.served.get(table)?.components.Row;
1484
+ const row = component ? schemaRef(component) : defs[`${table}Row`] ?? OPEN;
1485
+ for (const intent of input.intents ?? DEFAULT_INTENTS) {
1486
+ const last = ROW_EVENT_TYPES[intent].split(".").at(-1) ?? intent;
1487
+ const type = input.typePrefix ? `${input.typePrefix}.row.${last}` : ROW_EVENT_TYPES[intent];
1488
+ add(`row${keyPart(table)}${keyPart(last)}`, type, `${table} ${last}`, {
1489
+ type: "object",
1490
+ required: ["table", "row"],
1491
+ properties: {
1492
+ table: {
1493
+ type: "string",
1494
+ const: table
1495
+ },
1496
+ row,
1497
+ actorId: { type: "string" }
1498
+ }
1499
+ }, table);
1500
+ }
1501
+ }
1502
+ for (const [event, schema] of Object.entries(input.blocks ?? {})) {
1503
+ if (schema === void 0) continue;
1504
+ const type = `${input.typePrefix ?? "dev.better-supabase"}.${event}`;
1505
+ add(`block${keyPart(event)}`, type, event, withActor(convert(schema, `events.cloudEvents.blocks.${event}`, ctx)));
1506
+ }
1507
+ if (ids.length === 0) return false;
1508
+ channels.push({
1509
+ id: "cloudEvents",
1510
+ address: input.address ?? "events",
1511
+ title: "CloudEvents",
1512
+ description: `CloudEvents from \`${input.source}\`, sent to the event sink.`,
1513
+ protocol: "http",
1514
+ messages: ids,
1515
+ operations: [{
1516
+ id: "sendCloudEvents",
1517
+ action: "send"
1518
+ }]
1519
+ });
1520
+ return true;
1521
+ }
1522
+ /**
1523
+ * The built channels and messages first, then the app's own (which win on
1524
+ * an id), and the workflows with every `WorkflowSource` run on `operations`.
1525
+ */
1526
+ function eventParts(options, ctx, operations) {
1527
+ const built = buildEvents(options.events, ctx);
1528
+ return {
1529
+ channels: [...built.channels, ...options.channels ?? []],
1530
+ messages: {
1531
+ ...built.messages,
1532
+ ...options.messages
1533
+ },
1534
+ ...Object.keys(built.messageTraits).length > 0 ? { messageTraits: built.messageTraits } : {},
1535
+ workflows: (options.workflows ?? []).flatMap((workflow) => typeof workflow === "function" ? workflow(operations) : [workflow])
1536
+ };
1537
+ }
1538
+ /** Channels and messages from the realtime tables, topics and CloudEvents. */
1539
+ function buildEvents(events, ctx) {
1540
+ const channels = [];
1541
+ const messages = {};
1542
+ const messageTraits = {};
1543
+ if (!events) return {
1544
+ channels,
1545
+ messages,
1546
+ messageTraits
1547
+ };
1548
+ tableChannels(ctx, events.tables ?? true, channels, messages);
1549
+ topicChannels(ctx, events.topics ?? {}, channels, messages);
1550
+ if (events.cloudEvents && cloudEventChannel(ctx, events.cloudEvents, channels, messages)) messageTraits["cloudEvent"] = CLOUD_EVENT_TRAIT;
1551
+ return {
1552
+ channels,
1553
+ messages,
1554
+ messageTraits
1555
+ };
1556
+ }
1557
+ //#endregion
1558
+ //#region src/spec/build.ts
1559
+ const READ_METHODS = /* @__PURE__ */ new Set([
1560
+ "get",
1561
+ "head",
1562
+ "options",
1563
+ "query"
1564
+ ]);
1565
+ const modelCache = /* @__PURE__ */ new WeakMap();
1566
+ const NO_PLUGINS = [];
1567
+ /**
1568
+ * Builds the version-neutral API model once per metadata, plugin list and
1569
+ * options object. Formats lower it to each version; `defineApi` wraps it.
1570
+ */
1571
+ function buildApiModel(source, options) {
1572
+ const plugins = source.plugins ?? NO_PLUGINS;
1573
+ let byPlugins = modelCache.get(source.meta);
1574
+ if (!byPlugins) {
1575
+ byPlugins = /* @__PURE__ */ new WeakMap();
1576
+ modelCache.set(source.meta, byPlugins);
1577
+ }
1578
+ let byOptions = byPlugins.get(plugins);
1579
+ if (!byOptions) {
1580
+ byOptions = /* @__PURE__ */ new WeakMap();
1581
+ byPlugins.set(plugins, byOptions);
1582
+ }
1583
+ let built = byOptions.get(options);
1584
+ if (!built) {
1585
+ built = build(source.meta, plugins, options);
1586
+ byOptions.set(options, built);
1587
+ }
1588
+ return built;
1589
+ }
1590
+ function build(meta, plugins, options) {
1591
+ const ctx = createBuildContext(meta, options);
1592
+ for (const [key, input] of Object.entries(options.resources ?? {})) buildResource(ctx, key, input);
1593
+ for (const [index, route] of (options.routes ?? []).entries()) buildRoute(ctx, route, index);
1594
+ if (options.dataApi) buildDataApi(ctx, options.dataApi);
1595
+ const security = withDataApiSchemes(buildSecurity(ctx), ctx.operations, options.supabaseUrl);
1596
+ applyPlugins(ctx, plugins);
1597
+ validateOperations(ctx);
1598
+ return finalizeModel(ctx, security);
1599
+ }
1600
+ function buildRoute(ctx, route, index) {
1601
+ const { options, base, globalErrors, operations, prefix, addTag, keyOf, schemaOf, objectParameters, usedErrors } = ctx;
1602
+ const method = route.method.toLowerCase();
1603
+ if (!isMethod(method)) throw new TypeError(`better-supabase/spec: routes[${index}] has an unknown method "${route.method}"`);
1604
+ const path = `${base}${route.path}`;
1605
+ const defaultId = `${method}${route.path.split("/").filter(Boolean).map((segment) => segment.replaceAll(/[{}]/g, "")).map(pascal).join("")}`;
1606
+ const source = { kind: "route" };
1607
+ const id = route.operationId ?? options.operationId?.({
1608
+ source,
1609
+ method,
1610
+ path,
1611
+ defaultId
1612
+ }) ?? defaultId;
1613
+ const declared = route.params ? objectParameters(route.params, "path", `${id} params`) : [];
1614
+ const parameters = [];
1615
+ for (const [, param] of path.matchAll(/\{(\w+)\}/g)) parameters.push(declared.find((entry) => entry.name === param) ?? {
1616
+ name: param,
1617
+ in: "path",
1618
+ required: true,
1619
+ schema: { type: "string" }
1620
+ });
1621
+ if (route.query) parameters.push(...objectParameters(route.query, "query", `${id} query`));
1622
+ const permission = route.permission === void 0 ? void 0 : keyOf(route.permission, `routes[${index}]`);
1623
+ const secured = route.security === void 0 || route.security.length > 0;
1624
+ const status = String(route.status ?? (route.output || route.stream ? 200 : 204));
1625
+ const success = route.stream ? {
1626
+ description: route.summary ?? "A stream of events.",
1627
+ content: { [route.stream.contentType ?? "text/event-stream"]: { itemSchema: schemaOf(route.stream.item, "output", "item", id) } }
1628
+ } : route.output ? jsonResponse(schemaOf(route.output, "output", "output", id), route.summary ?? "OK.") : { description: route.summary ?? "Done." };
1629
+ const routeTags = [...route.tags ?? []];
1630
+ for (const tag of routeTags) addTag(tag);
1631
+ operations.push({
1632
+ id,
1633
+ method,
1634
+ path,
1635
+ tags: routeTags,
1636
+ source,
1637
+ ...route.summary ? { summary: route.summary } : {},
1638
+ ...route.description ? { description: route.description } : {},
1639
+ ...route.deprecated ? { deprecated: true } : {},
1640
+ parameters,
1641
+ ...route.input ? { requestBody: {
1642
+ required: true,
1643
+ content: jsonContent(schemaOf(route.input, "input", "input", id))
1644
+ } } : {},
1645
+ responses: {
1646
+ [status]: success,
1647
+ ...usedErrors(route.errors ?? globalErrors, [...route.input || route.query ? [400, 422] : [], ...secured ? [401, 403] : []], permission !== void 0)
1648
+ },
1649
+ ...route.security ? { security: route.security } : {},
1650
+ ...permission === void 0 ? {} : { permission },
1651
+ extensions: permission === void 0 ? {} : { [`${prefix}permission`]: permission },
1652
+ ...route.extend ? { extend: route.extend } : {}
1653
+ });
1654
+ }
1655
+ function buildSecurity(ctx) {
1656
+ const { options, operations } = ctx;
1657
+ const oauthScopes = {};
1658
+ if (options.permissionScopes === "keys") {
1659
+ for (const operation of operations) if (operation.permission) oauthScopes[operation.permission] = `Permission ${operation.permission}.`;
1660
+ }
1661
+ const security = resolveSecurity(options.security ?? ["bearer"], options.supabaseUrl, oauthScopes);
1662
+ if (options.permissionScopes === "keys") for (const operation of operations) {
1663
+ const key = operation.permission;
1664
+ if (!key || operation.security?.length === 0) continue;
1665
+ operation.security = (operation.security ?? security.requirements).map((requirement) => {
1666
+ const scopes = requirement[OAUTH_SCHEME];
1667
+ return scopes ? {
1668
+ ...requirement,
1669
+ [OAUTH_SCHEME]: [...scopes, key]
1670
+ } : requirement;
1671
+ });
1672
+ }
1673
+ return security;
1674
+ }
1675
+ function applyPlugins(ctx, plugins) {
1676
+ const { meta, prefix, served, schemas, report } = ctx;
1677
+ const describe = describeApi(meta, prefix, served, schemas);
1678
+ for (const plugin of plugins) {
1679
+ if (!plugin.describe) continue;
1680
+ try {
1681
+ plugin.describe(describe);
1682
+ } catch (error) {
1683
+ report({
1684
+ code: "plugin-describe-failed",
1685
+ severity: "warning",
1686
+ message: `The ${plugin.name} plugin's describe() threw: ${error instanceof Error ? error.message : String(error)}`
1687
+ });
1688
+ }
1689
+ }
1690
+ }
1691
+ /** Reports writes without a permission and duplicate operation ids. */
1692
+ function validateOperations(ctx) {
1693
+ const { options, operations, report } = ctx;
1694
+ if (options.requirePermissions) for (const operation of operations) {
1695
+ if (operation.source.kind === "data-api") continue;
1696
+ if ((operation.source.kind === "resource" ? operation.source.operation !== "list" && operation.source.operation !== "get" : !READ_METHODS.has(operation.method)) && operation.permission === void 0) report({
1697
+ code: "permission-missing",
1698
+ severity: "error",
1699
+ message: `${operation.id} writes but declares no permission`,
1700
+ pointer: `/operations/${pointerToken(operation.id)}`
1701
+ });
1702
+ }
1703
+ const seen = /* @__PURE__ */ new Set();
1704
+ for (const operation of operations) {
1705
+ if (seen.has(operation.id)) report({
1706
+ code: "operation-id-duplicate",
1707
+ severity: "error",
1708
+ message: `Two operations have the id "${operation.id}"`,
1709
+ pointer: `/operations/${pointerToken(operation.id)}`
1710
+ });
1711
+ seen.add(operation.id);
1712
+ }
1713
+ }
1714
+ function finalizeModel(ctx, security) {
1715
+ const { meta, options, prefix, served, keyOf, report, schemas, operations, tags, responses, diagnostics } = ctx;
1716
+ const { enrich } = options;
1717
+ const finalSchemas = {};
1718
+ for (const [name, schema] of Object.entries(schemas)) finalSchemas[name] = enrich?.schema?.(schema, { name }) ?? schema;
1719
+ const finalOperations = operations.map((operation) => enrich?.operation?.(operation) ?? operation);
1720
+ const { messageTraits, ...parts } = eventParts(options, {
1721
+ meta,
1722
+ json: options.json ?? {},
1723
+ prefix,
1724
+ served,
1725
+ keyOf,
1726
+ report
1727
+ }, finalOperations);
1728
+ const messages = {};
1729
+ for (const [id, message] of Object.entries(parts.messages)) messages[id] = enrich?.message?.(message, { id }) ?? message;
1730
+ return {
1731
+ model: {
1732
+ info: options.info,
1733
+ ...options.self ? { self: options.self } : {},
1734
+ servers: options.servers ?? [],
1735
+ tags,
1736
+ operations: finalOperations,
1737
+ schemas: finalSchemas,
1738
+ responses,
1739
+ securitySchemes: security.schemes,
1740
+ security: security.requirements,
1741
+ ...options.securityProfileRequirements ? { securityProfileRequirements: options.securityProfileRequirements } : {},
1742
+ channels: parts.channels.map((channel) => enrich?.channel?.(channel) ?? channel),
1743
+ messages,
1744
+ ...messageTraits ? { messageTraits } : {},
1745
+ webhooks: options.webhooks ?? [],
1746
+ workflows: parts.workflows.map((workflow) => enrich?.workflow?.(workflow) ?? workflow),
1747
+ fragments: options.fragments ?? [],
1748
+ ...options.realtimeUrl ? { realtimeUrl: options.realtimeUrl } : {},
1749
+ extensionPrefix: prefix
1750
+ },
1751
+ diagnostics
1752
+ };
1753
+ }
1754
+ function describeApi(meta, prefix, served, schemas) {
1755
+ const columnSchemas = (table, column) => {
1756
+ const entry = served.get(table);
1757
+ if (!entry) return [];
1758
+ return [
1759
+ "Row",
1760
+ "Insert",
1761
+ "Update"
1762
+ ].flatMap((variant) => {
1763
+ const name = entry.components[variant];
1764
+ const schema = name ? schemas[name] : void 0;
1765
+ const properties = schema?.["properties"];
1766
+ if (!schema || !isPlainObject(properties)) return [];
1767
+ const property = properties[column];
1768
+ if (!isPlainObject(property)) return [];
1769
+ return [{
1770
+ variant,
1771
+ schema,
1772
+ properties,
1773
+ property
1774
+ }];
1775
+ });
1776
+ };
1777
+ const replace = (schema, properties, column, property) => {
1778
+ schema["properties"] = {
1779
+ ...properties,
1780
+ [column]: property
1781
+ };
1782
+ };
1783
+ return {
1784
+ schema: meta,
1785
+ extensionPrefix: prefix,
1786
+ resources: [...served.values()].map((entry) => ({
1787
+ table: entry.table,
1788
+ operations: entry.operations.map((operation) => operation.source.kind === "action" ? operation.source.action : operation.source.kind === "resource" ? operation.source.operation : operation.id)
1789
+ })),
1790
+ addParameter(table, parameter, names) {
1791
+ for (const operation of served.get(table)?.operations ?? []) {
1792
+ const name = operation.source.kind === "action" ? operation.source.action : operation.source.kind === "resource" ? operation.source.operation : operation.id;
1793
+ if (names && !names.includes(name)) continue;
1794
+ if (operation.parameters.some((entry) => entry.name === parameter.name && entry.in === parameter.in)) continue;
1795
+ operation.parameters.push({ ...parameter });
1796
+ }
1797
+ },
1798
+ markReadOnly(table, column, description) {
1799
+ for (const { variant, schema, properties, property } of columnSchemas(table, column)) {
1800
+ replace(schema, properties, column, {
1801
+ ...property,
1802
+ readOnly: true,
1803
+ ...description && property["description"] === void 0 ? { description } : {}
1804
+ });
1805
+ const required = schema["required"];
1806
+ if (variant !== "Row" && Array.isArray(required)) schema["required"] = required.filter((name) => name !== column);
1807
+ }
1808
+ },
1809
+ describeColumn(table, column, patch) {
1810
+ for (const { schema, properties, property } of columnSchemas(table, column)) replace(schema, properties, column, mergeJson(property, patch));
1811
+ }
1812
+ };
1813
+ }
1814
+ //#endregion
1815
+ export { DEFAULT_ERRORS as a, pascal as c, topicsFrom as i, mergeJson as l, CLOUD_EVENT_TRAIT as n, PROBLEM_SCHEMA as o, safeKey as r, convertStandard as s, buildApiModel as t, pointerToken as u };